精华内容
下载资源
问答
  • android调用系统相机

    千次阅读 2015-05-26 18:47:39
    首先先说明一下,鉴于网上搜android调用系统相机,得到的内容一大把都是:调用系统相机然后获得图片(网上一大把这样的东西,抄过来抄过去,有些人根本就不加以验证是否有效,很不提倡这种做法),如果需要这样功能...

    首先先说明一下,鉴于网上搜android调用系统相机,得到的内容一大把都是:调用系统相机然后获得图片(网上一大把这样的东西,抄过来抄过去,有些人根本就不加以验证是否有效,很不提倡这种做法),如果需要这样功能的请自行百度,我待会介绍的是单纯调用系统相机,但不需要获取图片。

    就单纯调用系统相机而言,先说说几个问题

    1、系统版本

    这个问题在这个帖子中说明了

    http://www.eoeandroid.com/thread-536075-1-1.html

    在不同版本的系统中,调用的方法似乎不一样,上述的方法在我的小米2S手机上试了不行

    2、大部分机型可以,其他机型目前只测试了小米和三星。

    3、机型

    我在我手机上常使用的方法是

    		ComponentName comp = new ComponentName("com.android.camera",
    				"com.android.camera.Camera");
    		intent.setComponent(comp);
    		intent.setAction("android.intent.action.VIEW");
    		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
    				| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    		startActivity(intent);

    这个方法确实可行,但是当我在nexus 5上使用时,程序崩溃了........


    无意间得到这个帖子的一点启示

    http://www.apkbus.com/android-182775-1-1.html

    可以先通过找到包名再调用相机,因为我发现,之前小米可用的那个方法虽然在别的机型上不行,但是如果Intent的Action是MediaStore.ACTION_IMAGE_CAPTURE。虽然网上很多说“调用系统相机拍照返回照片”用的都是这个,但是确实在很多机型上都可以打开相机

    于是我想到了,既然相机包名找到了,那可以通过包名启动相机

    Intent infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    		ResolveInfo res = getPackageManager().
    				 resolveActivity(infoIntent, 0);
            if (res != null) {
            	//启动相机
            	startApplicationByPackageName(res.activityInfo.packageName);
            }

    其中startApplicationByPackageName方法如下

    //通过包名启动应用
    	private void startApplicationByPackageName(String packName)
    	{
    		PackageInfo packageInfo=null;
    		try{
    			packageInfo=getPackageManager().getPackageInfo(packName, 0);
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		if(null==packageInfo){
    			return;
    		}	
    		Intent resolveIntent=new Intent();
    		resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    		resolveIntent.setPackage(packageInfo.packageName);		
    		List<ResolveInfo> resolveInfoList =getPackageManager().queryIntentActivities(resolveIntent, 0);
    		if(null==resolveInfoList){
    			return;
    		}	
    		Iterator<ResolveInfo> iter=resolveInfoList.iterator();
    		while(iter.hasNext()){
    			ResolveInfo resolveInfo=(ResolveInfo) iter.next();
    			if(null==resolveInfo){
    				return;
    			}		
    			String packageName=resolveInfo.activityInfo.packageName;
    			String className=resolveInfo.activityInfo.name;
    			Intent intent=new Intent(Intent.ACTION_MAIN);                       
    			intent.addCategory(Intent.CATEGORY_LAUNCHER);
    			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    			ComponentName cn=new ComponentName(packageName, className);
    			intent.setComponent(cn);
    			startActivity(intent);
    		}//while
    	}//method

    考虑到三星的部分机型不吃MediaStore.ACTION_IMAGE_CAPTURE这套,但是却吃MediaStore.ACTION_IMAGE_CAPTURE_SECURE,前后只是多了一个SECURE。因此稍作修改,完整方法如下(目前我手上的机型都支持,包括Vivo、魅族、三星、锤子、小米、Nexus、索尼、HTC)

    //启动相机
    	private void launchCamera()
    	{
    		try{
    			//获取相机包名
    			Intent infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    			ResolveInfo res = mContext.getPackageManager().
    					 resolveActivity(infoIntent, 0);
                if (res != null) 
                {
                	String packageName=res.activityInfo.packageName;
                	if(packageName.equals("android"))
                	{
                		infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE);
    					res = mContext.getPackageManager().
    							 resolveActivity(infoIntent, 0);
    					if (res != null)
    						packageName=res.activityInfo.packageName;
                	}
                	//启动相机
                	startApplicationByPackageName(packageName);
                }
    		}
    		catch(Exception e)
    		{
    			e.printStackTrace();
    		}
    		
    	}
    
    //通过包名启动应用
    	private void startApplicationByPackageName(String packName)
    	{
    		PackageInfo packageInfo=null;
    		try{
    			packageInfo=mContext.getPackageManager().getPackageInfo(packName, 0);
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		if(null==packageInfo){
    			return;
    		}	
    		Intent resolveIntent=new Intent();
    		resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    		resolveIntent.setPackage(packageInfo.packageName);		
    		List<ResolveInfo> resolveInfoList =mContext.getPackageManager().queryIntentActivities(resolveIntent, 0);
    		if(null==resolveInfoList){
    			return;
    		}	
    		Iterator<ResolveInfo> iter=resolveInfoList.iterator();
    		while(iter.hasNext()){
    			ResolveInfo resolveInfo=(ResolveInfo) iter.next();
    			if(null==resolveInfo){
    				return;
    			}		
    			String packageName=resolveInfo.activityInfo.packageName;
    			String className=resolveInfo.activityInfo.name;
    			Intent intent=new Intent(Intent.ACTION_MAIN);                       
    			intent.addCategory(Intent.CATEGORY_LAUNCHER);
    			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    			ComponentName cn=new ComponentName(packageName, className);
    			intent.setComponent(cn);
    			mContext.startActivity(intent);
    		}//while
    	}//method
    		




    展开全文
  • 1.了解 使用JNI扩展Qt应用 参考《Qt on Android核心编程》15章 ... 项目工程extendsQtWithJava 2.添加 调用系统文件管理功能 ... android 调用系统文件管理器 3.从Uri获取文件路径 参考:Android将"content...

    1.了解 使用JNI扩展Qt应用

    参考《Qt on Android核心编程》15章

    源码https://download.csdn.net/download/dinosaurx/10149765

    项目工程extendsQtWithJava

    2.添加 调用系统文件管理功能

    参考. android 调用系统文件管理器

     

    3.从Uri获取文件路径

    参考:Android将"content://"类型的uri转为文件路径

     

    4 解决错误. java.lang.SecurityException: Permission Denial:

    参考https://blog.csdn.net/OREO_GO/article/details/52295099

    4.1 源码中添加代码

    int hasWriteContactsPermisson = ContextCompat.checkSelfPermission(context,
                    android.Manifest.permission.READ_EXTERNAL_STORAGE);
    if(hasWriteContactsPermisson !=
        PackageManager.PERMISSION_GRANTED)
    {
            ActivityCompat.requestPermissions(m_instance,new String[]
            {Manifest.permission.WRITE_CONTACTS},
            REQUEST_CODE_ASK_PERMISSIONS);
    
        return "";
    }
    

    4.2需要在AndroidManifest.xml 文件添加权限

    4.3有时需要添加 android-support-v4.jar 包

    注:Qt Android 添加第三方jar 只需将jar包放在“/android/libs/”目录下

     

    5.选择多个文件

    参考Android使用Intent选取文件

    6.修改 AndroidManifest.xml文件

    修改Activity节点属性android:name,避免ExtendsQtWithJava. m_instance空指针

    <activity android:configChanges="fontScale|keyboard|keyboardHidden|layoutDirection|locale|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:label="加解密" android:launchMode="singleTop" android:name="an.qt.extendsQtWithJava.ExtendsQtWithJava " android:screenOrientation="unspecified">

    7.源码

    有钱的捧个钱场

    https://download.csdn.net/download/u013411873/11609606

    没钱的捧个人场

    https://github.com/dragonfly1208/QtAndroidProjects/tree/AndroidFileManager

    8.后记

    使用Android系统文件管理,是因为Qt Android上FileDialog 不好用,且和Qt::AA_EnableHighDpiScaling不兼容。

    展开全文
  • Android 调用系统相机拍照、以及相册

    千次下载 热门讨论 2015-04-11 19:54:37
    Android 调用系统相机拍照、以及相册。完成之后图片是上传到app上。没有上传到服务器,因为我没服务器测试。但项目里面有个类可以参考上传图片到服务器,我就没测试了。欢迎下载。
  • android 调用系统界面

    千次阅读 2015-06-07 11:52:23
    android 调用系统界面 Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他 发表于19 天前 ? Android, Android开发 ? 评论数 1 ? 被围观 热度 49?+ 现在开发中的功能需要直接...
    
    android 调用系统界面
    Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
    发表于19 天前 ? Android, Android开发 ? 评论数 1 ? 被围观 热度 49?+

    现在开发中的功能需要直接跳转到拨号、联系人、短信界面等等,查找了很多资料,自己整理了一下。

    首先,我们先看拨号界面,代码如下:

    Intent intent =new Intent();
    intent.setAction("android.intent.action.CALL_BUTTON");
    startActivity(intent);
    
    
    Uri uri = Uri.parse("tel:xxxxxx");
    Intent intent = new Intent(Intent.ACTION_DIAL, uri);
    startActivity(intent);
    两者都行   
    
    但是如果是跳转到应用,使用一下代码:
    
    Intent intent= new Intent("android.intent.action.DIAL");
    intent.setClassName("com.android.contacts","com.android.contacts.DialtactsActivity");
    到通话记录界面:
    
    Intent intent=new Intent();
    intent.setAction(Intent.ACTION_CALL_BUTTON);
    startActivity(intent);  
    
    到联系人界面:
    
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Contacts.People.CONTENT_URI);
    startActivity(intent);
    同理,到应用:
    
    Intent intent= new Intent("com.android.contacts.action.LIST_STREQUENT");
    intent.setClassName("com.android.contacts","com.android.contacts.DialtactsActivity");  
    
    调用联系人界面:
    
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_PICK);
    intent.setData(Contacts.People.CONTENT_URI);
    startActivity(intent);   
    
    插入联系人
    
    Intent intent=new Intent(Intent.ACTION_EDIT,
    Uri.parse("content://com.android.contacts/contacts/"+"1"));
    startActivity(intent);
    
    到联系人列表界面      
    
    Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
                intent.setType("vnd.android.cursor.item/person");
                intent.setType("vnd.android.cursor.item/contact");
                intent.setType("vnd.android.cursor.item/raw_contact");
                intent.putExtra(android.provider.ContactsContract.Intents.Insert.NAME, name);
                intent.putExtra(android.provider.ContactsContract.Intents.Insert.COMPANY,company);
                intent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE, tel);
                intent.putExtra(android.provider.ContactsContract.Intents.Insert.PHONE_TYPE, 3);  
    
    到短信界面:
    
    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setType("vnd.android-dir/mms-sms");
    //              intent.setData(Uri.parse("content://mms-sms/conversations/"));//此为号码
                    startActivity(intent);
    到应用:
    
    Intent intent = new Intent("android.intent.action.CONVERSATION");
    startActivity(intent);  
    
    以下是在网上找到的其他方法:
    
    1.从google搜索内容 
    
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_WEB_SEARCH);
    intent.putExtra(SearchManager.QUERY,"searchString")
    startActivity(intent);   
    
    2.浏览网页 
    
    Uri uri = Uri.parse("http://www.google.com");
    Intent it   = new Intent(Intent.ACTION_VIEW,uri);
    startActivity(it);   
    
    3.显示地图 
    
    Uri uri = Uri.parse("geo:38.899533,-77.036476");
    Intent it = new Intent(Intent.Action_VIEW,uri);
    startActivity(it);   
    
    4.路径规划 
    
    Uri uri = Uri.parse("http://maps.google.com/maps?
    f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
    Intent it = new Intent(Intent.ACTION_VIEW,URI);
    startActivity(it);  
    
    5.拨打电话 
    
    Uri uri = Uri.parse("tel:xxxxxx");
    Intent it = new Intent(Intent.ACTION_DIAL, uri);
    startActivity(it);
    和
    
    uri = Uri.parse("tel:"+number);
                    intent = new Intent(Intent.ACTION_CALL,uri);
                    startActivity(intent);   
    
    其中不同自己试验一下就知道了。 
    
    6.调用发短信的程序 
    
    Intent it = new Intent(Intent.ACTION_VIEW);
    it.putExtra("sms_body", "The SMS text");
    it.setType("vnd.android-dir/mms-sms");
    startActivity(it);  
    
    和 
    
    uri = Uri.parse("smsto:"+要发送短信的对方的number);
                    intent = new Intent(Intent.ACTION_SENDTO,uri);
                    startActivity(intent);
    和
    
    mIntent = new Intent(Intent.ACTION_VIEW);
            mIntent.putExtra("address", c.getString(c.getColumnIndex(column)));
            mIntent.setType("vnd.android-dir/mms-sms");
            startActivity(mIntent);    
    
    7.发送短信 
    
    Uri uri = Uri.parse("smsto:0800000123");
    Intent it = new Intent(Intent.ACTION_SENDTO, uri);
    it.putExtra("sms_body", "The SMS text");
    startActivity(it);
    String body="this is sms demo";
    Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", number, null));
    mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
    mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);
    mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);
    startActivity(mmsintent);
    
    8.发送彩信 
    
    Uri uri = Uri.parse("content://media/external/images/media/23");
    Intent it = new Intent(Intent.ACTION_SEND);
    it.putExtra("sms_body", "some text");
    it.putExtra(Intent.EXTRA_STREAM, uri);
    it.setType("image/png");
    startActivity(it);
    StringBuilder sb = new StringBuilder();
    sb.append("file://");
    sb.append(fd.getAbsoluteFile());
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto", number, null));
    // Below extra datas are all optional.
    intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);
    intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
    intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());
    intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);
    intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);
    startActivity(intent);   
    
    9.发送Email 
    
    Uri uri = Uri.parse("mailto:xxx@abc.com");
    Intent it = new Intent(Intent.ACTION_SENDTO, uri);
    startActivity(it);
    Intent it = new Intent(Intent.ACTION_SEND);
    it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");
    it.putExtra(Intent.EXTRA_TEXT, "The email body text");
    it.setType("text/plain");
    startActivity(Intent.createChooser(it, "Choose Email Client"));
    Intent it=new Intent(Intent.ACTION_SEND);
    String[] tos={"me@abc.com"};
    String[] ccs={"you@abc.com"};
    it.putExtra(Intent.EXTRA_EMAIL, tos);
    it.putExtra(Intent.EXTRA_CC, ccs);
    it.putExtra(Intent.EXTRA_TEXT, "The email body text");
    it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
    it.setType("message/rfc822");
    startActivity(Intent.createChooser(it, "Choose Email Client"));     
    
    Intent it = new Intent(Intent.ACTION_SEND);
    it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
    it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
    sendIntent.setType("audio/mp3");
    startActivity(Intent.createChooser(it, "Choose Email Client"));   
    
    10.播放多媒体   
    
    Intent it = new Intent(Intent.ACTION_VIEW);
    Uri uri = Uri.parse("file:///sdcard/song.mp3");
    it.setDataAndType(uri, "audio/mp3");
    startActivity(it);
    Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
    Intent it = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(it);   
    
    11.uninstall apk 
    
    Uri uri = Uri.fromParts("package", strPackageName, null);
    Intent it = new Intent(Intent.ACTION_DELETE, uri);
    startActivity(it);   
    
    
    12.install apk 
    
    Uri installUri = Uri.fromParts("package", "xxx", null);
    returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);   
    
    13. 打开照相机 
    
    <1>Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null);
              this.sendBroadcast(i);
        <2>long dateTaken = System.currentTimeMillis();
             String name = createName(dateTaken) + ".jpg";
             fileName = folder + name;
             ContentValues values = new ContentValues();
             values.put(Images.Media.TITLE, fileName);
             values.put("_data", fileName);
             values.put(Images.Media.PICASA_ID, fileName);
             values.put(Images.Media.DISPLAY_NAME, fileName);
             values.put(Images.Media.DESCRIPTION, fileName);
             values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileName);
             Uri photoUri = getContentResolver().insert(
                       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);   
    
             Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
             inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
             startActivityForResult(inttPhoto, 10);   
    
    14.从gallery选取图片 
    
    Intent i = new Intent();
            i.setType("image/*");
            i.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(i, 11);   
    
    15. 打开录音机 
    
    Intent mi = new Intent(Media.RECORD_SOUND_ACTION);
             startActivity(mi);
    16.显示应用详细列表      
    
    Uri uri = Uri.parse("market://details?id=app_id");
    Intent it = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(it);
    //where app_id is the application ID, find the ID
    //by clicking on your application on Market home
    //page, and notice the ID from the address bar
    
    刚才找app id未果,结果发现用package name
    也可以 Uri uri = Uri.parse("market://details?id=<packagename>");
    这个简单多了 
    
    17寻找应用      
    
    Uri uri = Uri.parse("market://search?q=pname:pkg_name");
    Intent it = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(it);
    //where pkg_name is the full package path for an application
    18打开联系人列表 
    
    <1>
             Intent i = new Intent();
             i.setAction(Intent.ACTION_GET_CONTENT);
             i.setType("vnd.android.cursor.item/phone");
             startActivityForResult(i, REQUEST_TEXT);   
    
    <2>
             Uri uri = Uri.parse("content://contacts/people");
             Intent it = new Intent(Intent.ACTION_PICK, uri);
             startActivityForResult(it, REQUEST_TEXT);   
    
    19 打开另一程序 
    
    Intent i = new Intent();
             ComponentName cn = new ComponentName("com.yellowbook.android2",
                       "com.yellowbook.android2.AndroidSearch");
             i.setComponent(cn);
             i.setAction("android.intent.action.MAIN");
             startActivityForResult(i, RESULT_OK);
    20 添加到短信收件箱
    ContentValues cv = new ContentValues();
                    cv.put("type", "1");
    cv.put("address","短信地址");
    cv.put("body", "短信内容");
    getContentResolver().insert(Uri.parse("content://sms/inbox"), cv);   
    
    21 从sim卡或者联系人中查询
    Cursor cursor;
            Uri uri;
            if (type == 1) {
                Intent intent = new Intent();
                intent.setData(Uri.parse("content://icc/adn"));
                uri = intent.getData();
            } else
                uri = People.CONTENT_URI;  
    
            cursor = activity.getContentResolver().query(uri, null, null, null, null);
    while (cursor.moveToNext()) {
     int peopleId = cursor.getColumnIndex(People._ID);
     int nameId = cursor.getColumnIndex(People.NAME);
     int phoneId = cursor.getColumnIndex(People.NUMBER);} 
    
    查看某个联系人,当然这里是ACTION_VIEW,
    如果为选择并返回action改为ACTION_PICK,当然处理intent时返回需要用到 startActivityforResult 
    
    Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, ID);
    //最后的ID参数为联系人Provider中的数据库BaseID,即哪一行 
    
    Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW);
     intent.setData(personUri); startActivity(intent); 
    
    22 删除
    uri = ContentUris.withAppendedId(People.CONTENT_URI, 联系人id);
            int count = activity.getContentResolver().delete(uri, null, null);  
    
    23 添加到联系人:
    ContentValues cv = new ContentValues();
    ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
    ContentProviderOperation.Builder builder =
     ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
                        builder.withValues(cv);
                        operationList.add(builder.build());
                        builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
                        builder.withValueBackReference(StructuredName.RAW_CONTACT_ID, 0);
                        builder.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
                        builder.withValue(StructuredName.DISPLAY_NAME, "自定义联系人名");
                        operationList.add(builder.build());
                        builder = ContentProviderOperation.newInsert(Data.CONTENT_URI);
                        builder.withValueBackReference(Phone.RAW_CONTACT_ID, 0);
                        builder.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
                        builder.withValue(Phone.NUMBER, "联系人的phonenumber");
                        builder.withValue(Data.IS_PRIMARY, 1);
                        operationList.add(builder.build());
                        try {
                            getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);
                        } catch (RemoteException e) {
                            e.printStackTrace();
                        } catch (OperationApplicationException e) {
                            e.printStackTrace();
                        }
     23 选择一个图片 
    
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
     intent.setType("image/*");
     startActivityForResult(intent, 0);   
    
    24 调用Android设备的照相机,并设置拍照后存放位置
    
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT,
     Uri.fromFile(new File(Environment .getExternalStorageDirectory().getAbsolutePath()+"/cwj",
     android123 + ".jpg")));
    //存放位置为sdcard卡上cwj文件夹,文件名为android123.jpg格式
    startActivityForResult(intent, 0);  
    
    25 在market上搜索指定package name,比如搜索com.android123.cwj的写法如下 
    
    Uri uri = Uri.parse("market://search?q=pname:com.android123.cwj");
     Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);  
    
    26获取文件信息,并使用相对应软件打开
    
    view plain
    private void openFile(File f)
     {
       Intent intent = new Intent();
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       intent.setAction(android.content.Intent.ACTION_VIEW);
       String type = getMIMEType(f);
       intent.setDataAndType(Uri.fromFile(f), type);
       startActivity(intent);
     }    
    
     private String getMIMEType(File f){
       String end = f
           .getName()
           .substring(f.getName().lastIndexOf(".") + 1,
               f.getName().length()).toLowerCase();
       String type = "";
       if (end.equals("mp3") || end.equals("aac") || end.equals("aac")
           || end.equals("amr") || end.equals("mpeg")
           || end.equals("mp4"))
       {
         type = "audio";
       } else if (end.equals("jpg") || end.equals("gif")
           || end.equals("png") || end.equals("jpeg"))
       {
         type = "image";
       } else
       {
         type = "*";
       }
       type += "/*";
       return type;
    展开全文
  • Android调用系统相机和图库

    千次阅读 2016-04-14 11:23:07
    Android调用系统相机和图库

    Android调用系统相机和图库

    程序截图

    只实现了调用系统相机和本地图库,上传图片将在下一篇博客实现,这里推荐一个获取Android按钮图片的插件Android Drawable Importer

    th

    主要过程

    (一)添加读写权限

    这里是调用系统相机,不需要获取相机权限。

    <uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

    (二)调用系统相机和图库

    1.调用系统相机
    这里是使用Intent的参数MediaStore.ACTION_IMAGE_CAPTURE 来实现的,然后调用startActivityForResult 方法实现对返回的数据进行处理。

    Intent intent = 
    new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    //存放相机返回的图片
    File file = new File(filePath);
    if(file.exists()){file.delete()}
    Uri uri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
    startActivityForResult(intent1,TAKE_PHOTO);

    2.调用图库
    这里是使用Intent的Action参数Intent.ACTION_GET_CONTENT 来实现的

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    //选择图片格式
    intent.setType("image/*");
    intent.putExtra("return-data",true);
    startActivityForResult(intent,CHOOSE_PHOTO);

    (三)处理返回数据

    调用onActivityResult 方法分别对于图库和相机,以及对于下一项介绍的图片剪裁后返回的图片进行处理

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            switch (requestCode){
                //处理图库返回
                case CHOOSE_PHOTO:
                    if(resultCode == RESULT_OK){
                        photoZoom(data.getData());
                    }
                    break;
                //处理相机返回
                case TAKE_PHOTO:
                    if(resultCode == RESULT_OK){
                        File file = new File(filePath);
                        photoZoom(Uri.fromFile(file));
                    }
                //处理裁剪返回
                case PHOTO_RESULT:
                    Bundle bundle = new Bundle();
                    try {
                        bundle = data.getExtras();
                        if (resultCode == RESULT_OK) {
                            Bitmap bitmap = bundle.getParcelable("data");
                            bitmap.compress(Bitmap.CompressFormat.JPEG, 75, new ByteArrayOutputStream());
                            //修改ImageView的图片
                            photoImage.setImageBitmap(bitmap);
                        }
                    } catch (java.lang.NullPointerException e) {
                        e.printStackTrace();
                    }
                    break;
            }

    (四)剪裁图片

    通过Intent 调用com.android.camera.action.CROP 系统的剪裁功能。

        public void photoZoom(Uri uri) {
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(uri, "image/*");
            intent.putExtra("crop", "true");
            // aspectX aspectY 是宽高的比例
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            // outputX outputY 是裁剪图片宽高
            intent.putExtra("outputX", 300);
            intent.putExtra("outputY", 130);
            intent.putExtra("return-data", true);
            startActivityForResult(intent, PHOTO_RESULT);
        }

    展开全文
  • Android 调用系统相机 失败

    千次阅读 2018-05-17 20:23:19
    Android 调用系统相机 这里我就不详细介绍了直接贴代码: 在拍照按钮的回调中加入如下代码: Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri imgUri = createImgUri(); //Uri ...
  • Android 调用系统应用选文件

    千次阅读 2019-07-31 17:04:30
    Android 调用系统应用选文件 我们通常会通过Intent调起系统应用进行选择文件,包括图片、视频、音频等,但是需要考虑不同系统版本的兼容性问题 系统版本 action accept_type(选择文件类型) <19(4.4) ...
  • Android 调用系统照相机拍照和录像

    千次阅读 2017-03-02 15:10:46
    Android 调用系统照相机拍照和录像
  • Android调用系统应用打开各种类型文件
  • Android调用系统分享实现发送文件

    千次阅读 2019-09-02 09:14:39
    Android调用系统分享界面发送文件 前段时间需要实现项目内发送文件到qq、微信好友 找了很多的办法 最后采取这个办法 调用系统的分享 setClassName这个方法是用来固定渠道的 可以写 也可以不写 如果不写那就会弹窗...
  • Android调用系统的拍照,打开相册功能 1 添加权限: uses-permission android:name="android.permission. WRITE_EXTERNAL_STORAGE" /> uses-permission android:name="android....
  • android 调用系统拍照、选择本地照片

    千次阅读 2017-07-14 09:49:59
    android 调用系统拍照、选择本地照片
  • android 调用系统安装程序

    千次阅读 2012-03-04 00:22:46
    android 调用系统安装程序 [java] view plaincopyprint? String apkName="getnumber.apk";   //安装文件apk路径   String fileName=Environment....
  • Android调用系统裁剪的方法

    千次阅读 2016-05-26 11:23:47
    Android调用系统裁剪,这个已经使用的很熟悉了。但是近期项目里使用的时候遇到了一些小问题,所以在此整理一下,以作记录。首先看代码:Intent intent1 = new Intent("com.android.camera.action.CROP"); intent1....
  • 各位大牛,android调用系统通讯录时如何让号码全显示出来?默认是只显示姓名的,如图1,怎么弄成图2的效果,淘宝、京东等的手机充值选择号码都用图2的界面,而且和系统通讯录风格一致,应该不是自定义的通讯录。!...
  • Android 调用系统相机怎样实现一键拍照、录像。而不是打开界面后还需要点击拍照以及确定。
  • 权限: android调用系统打电话功能: Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:xxxxxxxx")); startActivity(intent);
  • Android 调用系统相机以及相册源码

    千次阅读 2015-04-12 08:44:13
    Android 调用系统相机拍照、以及相册。完成之后图片是上传到app上。前面的功能已经测试过了。没有上传到服务器,因为我没服务器测试。但项目里面有个类可以参考上传图片到服务器,我就没测试了。接下来看代码,虽然...
  • (转)Android调用系统自带的文件管理器进行文件选择并获得路径,android文件管理器 Android区别于iOS的沙盒模式,可以通过文件浏览器浏览本地的存储器。Android API也提供了相应的接口。 基本思路,先通过Android ...
  • android 调用系统播放器

    千次阅读 2018-05-24 08:48:46
    昨天,从服务器下载一个AVI的视频,下载后需要进行播放,所以想调用系统自带的播放器。但是由于很少用到,所以自己当时不知道怎么写,于是在网上查找资料,最终是解决了问题。这里记录一下。一.网上的常见调用播放器...
  • Android调用系统计算器

    2019-10-26 15:41:35
    代码很简单: Intent intent = new Intent(); intent.setClassName("com.android.calculator2", "com.android.calculator2.Calculator"); startActivity(intent);...但是此方法不适用于Android10系统。...
  • Android调用系统相册和拍照的Demo

    千次阅读 2015-09-16 13:45:41
    最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的。确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题,用高于4.4...
  • Android调用系统发送短信界面

    千次阅读 2013-04-17 12:49:30
    android 调用系统 发送短信 和 已发送短信界面     1. 调用系统发送短信界面(并指定短信接收人和短信内容) Uri smsToUri = Uri.parse("smsto:10086");   Intent mIntent = new Intent( ...
  • Android 调用系统邮箱

    千次阅读 2017-09-04 16:33:20
    Android应用开发中,很多情况下免不了要调用手机上的邮件类应用,实现邮件发送的功能,这一般是通过调用系统已有的Intent来实现的。看到网上很多邮件发送都是调用action为Android.content.Intent.ACTION_SEND的...
  • android 调用系统照相机进行拍照,并且保存到系统相册,调用系统相册的时候能看到。
  • Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提...
  • Android调用系统相机

    千次阅读 2016-08-27 10:40:18
    简述:  Android开发中会经常遇到调用系统相机功能的场景,今天总结一下Camera的基本使用。
  • android 调用系统文件管理器

    万次阅读 多人点赞 2018-07-11 09:09:23
    今天,简单讲讲android如何调用系统的文件管理器获取目录下的文件资源。这几天,还是因为搬家的事,导致自己状态很差。和领导说想要辞职,领导说还是先适应一下在说。所以还是坚持了。这个其实也很简单,之前做一个...
  • Android调用系统亮度条

    2016-10-27 12:26:25
    Android写应用程序时,有没有方法可以通过调用系统Settings中的亮度条来调节屏幕亮度?而不是自己写dialog实现此部分功能?
  • Android调用系统相机和相册-坑篇

    千次阅读 2016-09-25 12:27:05
    之前分享了Android调用系统相机和相册,但是由于国内Android机型繁多,各家都自己的room,调用系统的还是会出现不少问题: 一、拍照后照片被旋转 这种情况是使用Camera拍照以后,得到的照片会被自动旋转(90°...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,204
精华内容 8,081
关键字:

android调用系统