美文网首页Netty
趟坑记录-FileProvider

趟坑记录-FileProvider

作者: 萧笑啸 | 来源:发表于2017-08-16 12:35 被阅读0次

FileProvider

当使用FileProvider生成uri时,使用uri的intent应添加

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

来授予权限。

·使用系统裁剪时遇到的坑

Intent intent = new Intent("com.android.camera.action.CROP");

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

intent.setDataAndType(uri, "image/*");

// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪        
intent.putExtra("crop", "true");

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

intent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);

startActivityForResult(intent,REQUEST_CODE_CUT_PHOTO);

当intent.setDataAndType(uri,"image/*");中的 uri 和 intent.putExtra(MediaStore.EXTRA_OUTPUT,tempUri); 中 tempUri 一致时,

使用intent.addFlags即可,但当uri和tempUri不一致时则会报错


java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord,

这是因为intent.addFlags只是为inten访问uri添加了权限,没有为访问tempUri添加权限,所以保存裁剪图时会报错,这时必须使用如下代码来为intent添加tempUri权限


List resInfoList = getActivity().getPackageManager().queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);

for(ResolveInfo resolveInfo : resInfoList) {

    String packageName = resolveInfo.activityInfo.packageName;

    getActivity().grantUriPermission(packageName,tempUri,Intent.FLAG_GRANT_WRITE_URI_PERMISSION| 
    Intent.FLAG_GRANT_READ_URI_PERMISSION);

}

相关文章

  • 趟坑记录-FileProvider

    FileProvider 当使用FileProvider生成uri时,使用uri的intent应添加 来授予权限。...

  • 趟坑记录

    目录 Replugin的坑 相机权限 aar打包的坑 1.Replugin的坑 使用setSystemUiVisi...

  • 趟坑记录

    1.侥幸心里150滨安路,突然出错220必拿下的,果断拒绝1108少90片连续,看准碰下黑八成转折点非32,没商量...

  • 趟坑记录

    1、怎么做到不在打开当前activity之前清空activity栈的情况下,将数据通过setResult传递给前一...

  • Android 7.0 fileprovider 填坑记录

    自己写了一个拍照,选择相册的三方库,因为适配了7.0的安全权限。所以在自己的拍照库里加了fileprovider。...

  • 趟坑记录-DialogFragment

    1.DialogFragment宽高设置 宽高应该在onStart方法中设置,而不是在onCreateView方法

  • flutter趟坑记录

    1.Flutter SDK not found. Define location with flutter.sdk...

  • synergy趟坑记录

    背景:windows,和mac通过synergy共享键鼠,mac为server端,目前synergy版本为1.10...

  • GRPC趟坑记录

    这是codenotfound提供的grpc样例,平心而论样例只是样例,很多版本适配工作还是需要我们自己来。学习指南...

  • FileProvider踩坑

    项目在android 6.0机器运行正常,换了华为手机Android4.4.4,报下列异常java.lang.Ru...

网友评论

    本文标题:趟坑记录-FileProvider

    本文链接:https://www.haomeiwen.com/subject/dphirxtx.html