新做了一个需求 要禁用系统相机外所有拍照应用
只能调用手机默认的系统相机
后来发现直接 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
这两个权限
网友评论