java.lang.SecurityException: Permission Denial: reading android.support.v4.content.FileProvider uri content://com.honjane.providerdemo.fileprovider/honjane/storage/emulated/0/honjane/files/123.jpg from pid=30724, uid=10106 requires the provider be exported, or grantUriPermission()
用Android FileProvider 以默认方式打开图片,总是出现以上问题,权限也配置了,manifest也配置了,xml中filepath也配置了,就是不行。原因:intent权限请求时多了!
Uri uri = getUriForFile(context, file);
Intent intent = new Intent(Intent.ACTION_VIEW);
// intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);//增加读写权限
// context.grantUriPermission(context.getPackageName(),uri,Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(uri, contentType);
if (!(context instanceof Activity)) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
只需要读的权限就够了,增加写的权限会导致报错!
public static Uri getUriForFile(Context context, File file) {
if (context == null || file == null) {
throw new NullPointerException();
}
Uri uri;
if (Build.VERSION.SDK_INT >= 24) {
uri = FileProvider.getUriForFile(context.getApplicationContext(), "com.honjane.providerdemo.fileprovider", file);
} else {
uri = Uri.fromFile(file);
}
return uri;
}