调用系统相机(兼容)

新做了一个需求  要禁用系统相机外所有拍照应用 

只能调用手机默认的系统相机  

后来发现直接 intent.setPackage("com.android.camera"); 这样会有问题

有一些手机默认拍照 包名并不是 com.android.camera

小部分手机,这样会造成应用直接暴死

于是我直接修改为以下:


         Intent intent =newIntent(MediaStore.ACTION_IMAGE_CAPTURE);//打开摄像机列表选项

           intent.putExtra("return-data", false);

                 finalIntent intent_camera = getPackageManager().getLaunchIntentForPackage("com.android.camera");

                              if(intent_camera !=null) {

                                                 String s = GetAction_image_capture();

                                                 intent.setPackage(s);

                                                     }

                    intent.putExtra(MediaStore.EXTRA_OUTPUT,

                  Uri.fromFile(newFile(AppConfig.CAMERA_TEMP))); // AppConfig.CAMERA_TEMP 这个是保存路径最后用.jpg结尾

                     startActivityForResult(intent,CAMERA);


//获取相机包名

private String GetAction_image_capture() {

          String Action_image_capture = "";

       Intent infoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

          ResolveInfo resolveInfo = getPackageManager().resolveActivity(infoIntent, 0);

                         if (resolveInfo != null) {

                                                  Log.d("PhotoActivity", "手机默认相机名称为" + resolveInfo.activityInfo.packageName);

                                                   Action_image_capture = resolveInfo.activityInfo.packageName;}

                                                       return Action_image_capture;}


      这样直接调用系统相机拍照就少很多问题了 记得拍照要申请  

         Manifest.permission.WRITE_EXTERNAL_STORAGE

           Manifest.permission.CAMERA

                       这两个权限 

```                                                                                                                                                                                                  最后 good luck

你可能感兴趣的:(调用系统相机(兼容))