java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord ... that is not exported from....
這個是因為android7.0以上要shareFile權限問題,不能直接用File去接,要轉成Uri去使用
https://juejin.im/entry/586dbd798d6d8100586ac8e2
http://www.jianshu.com/p/358b5d791045
這兩條應該可以解決基本上的問題
本人實做OPPO R5 Android 4.4.4
在用intent呼叫camera時,要另外加上臨時權限
try {
Intent intent_camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
// fileUri = Uri.fromFile(getOutputMediaFile(1));
fileUri = FileProvider.getUriForFile(appPublic, appPublic.getApplicationContext().getPackageName() + ".fileprovider",getOutputMediaFile(1));
intent_camera.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
//就是這段 花了我一整天的時間....
List<ResolveInfo> resolvedIntentActivities = appPublic.getPackageManager()
.queryIntentActivities(intent_camera, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolvedIntentInfo : resolvedIntentActivities) {
String packageName = resolvedIntentInfo.activityInfo.packageName;
appPublic.grantUriPermission(packageName, fileUri, FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
this.appPublic.startActivityForResult(intent_camera, CAMERA);
System.gc(); //提醒系統及時回收
}catch(Exception e){
e.printStackTrace();
}