那是我的代码:
表现
<provIDer androID:name="androID.support.v4.content.fileProvIDer" androID:authoritIEs="${applicationID}.provIDer" androID:exported="false" androID:grantUriPermissions="true"> <Meta-data androID:name="androID.support.file_PROVIDER_PATHS" androID:resource="@xml/provIDer_paths"/> </provIDer>
provIDer_paths.xml
<?xml version="1.0" enCoding="utf-8"?><paths xmlns:androID="http://schemas.androID.com/apk/res/androID"> <external-path name="external_files" path="."/></paths>
DrawVIEw中生成的路径
public static boolean save(Bitmap bitmap){ Date Now = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy'_'HH:mm"); file folder = new file(Environment.getExternalStorageDirectory() + file.separator + "Crash"); if (!folder.exists()) { folder.mkdirs(); } fileOutputStream fos = null; try { lastimagePath = new file(Environment.getExternalStorageDirectory().toString() + "/Crash/" + simpleDateFormat.format(Now) + ".jpg"); fos = new fileOutputStream(lastimagePath); bitmap.compress(Bitmap.CompressFormat.JPEG,100,fos); fos.flush(); fos.close(); fos = null; return true; } catch (IOException e) { e.printstacktrace(); return false; } finally { if (fos != null) { try { fos.close(); } catch (IOException e) {} } }}
打开图像侦听器
private class OpenImageListener implements VIEw.OnClickListener{ @OverrIDe public voID onClick(VIEw v) { if(Build.VERSION.SDK_INT < Build.VERSION_CODES.N){ Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file://" + DrawVIEw.getLastimagePath().getabsolutePath()),"image/*"); startActivity(intent); } else { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri photoUri = fileProvIDer.getUriForfile(MainActivity.this,BuildConfig.APPliCATION_ID + ".provIDer",DrawVIEw.getLastimagePath()); intent.setData(photoUri); startActivity(intent); } }}
也许我为图像生成了一条错误的路径,但是旧的版本它可以工作(我在Marshmallow上试过并且效果很好).
有人能帮我吗?谢谢.
解决方法 在onClick()的else块中,在Intent上调用setData()来设置Uri之后,在Intent上调用addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION).目前,其他应用程序无权使用Uri标识的内容.添加FLAG_GRANT_READ_URI_PERMISSION可以做到这一点.
这在the FileProvider
documentation中有所介绍,还有关于AndroID应用程序开发的现代书籍.
以上是内存溢出为你收集整理的使用Android Nougat在图库中打开图片全部内容,希望文章能够帮你解决使用Android Nougat在图库中打开图片所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)