关于android11,12权限问题Unable to decode stream: open failed: EACCES (Permission denied)

这篇具有很好参考价值的文章主要介绍了关于android11,12权限问题Unable to decode stream: open failed: EACCES (Permission denied)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一次发博客

这个问题是我在制作一款app时发现的,我本来想在一个textview中加入一个图片

String picturePath = "your.jpg";
Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
Drawable d = new BitmapDrawable(getResources(), bitmap);
textview.setCompoundDrawablesWithIntrinsicBounds(null, d, null, null);

但是总是报错

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/IMG_20230129_123518.jpg: open failed: EACCES (Permission denied)

我在浏览了大多数关于这个问题的讨论和官方文档之后,他们无非就是给了这几种办法:

1.在Manfest.xml中添加这个

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

结论:按你的需求添加读写权限,但manage是必须的

2.“在你的xml文件中添加一句话,所有问题都解决了”

android:requestLegacyExternalStorage="true"

这句话本身是片面的,如果这个应用所在系统是在android10及以下,那么你加上这句话的确能解决问题,在android10以后,系统加了新的分区机制,具体可以看看官方的文档

这句代码的意思就是说将这个新的分区机制换成旧的,那么这个权限问题就不存在了,这显然是治标不治本

3.还有各种在java文件中申请权限的

String[] permission = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };
ActivityCompat.requestPermissions(Mainactivity.this, permission, 1);

这种呢是属于申请了一部分权限

4.我是小米手机,有的打开了系统的“所有访问权限”页面,但是那里面没有我的应用,我也不知道为什么

5.解决方案

if (Environment.isExternalStorageManager()) {
    tv.setText("666");
    String picturePath = "/storage/emulated/0/DCIM/Camera/IMG_20230129_123518.jpg";
    Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
    Drawable d = new BitmapDrawable(getResources(), bitmap);
    textview.setCompoundDrawablesWithIntrinsicBounds(null, d, null, null);
}else {
    Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
    intent.setData(Uri.parse("package:" + this.getPackageName()));
    startActivity(intent);
        }

这样直接跳转到应用的所有访问权限页面,同意就大功告成了文章来源地址https://www.toymoban.com/news/detail-470016.html

到了这里,关于关于android11,12权限问题Unable to decode stream: open failed: EACCES (Permission denied)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 出现Unable to access Android SDK add-on list的问题怎么解决?

    问题:第一次打开新下载好的Android Studio时出现以下错误提示框,显示Unable to access Android SDK add-on list 解决:打开文件安装位置,在目录中找到目录名为bin的文件夹,如图所示: 双击打开bin目录,找到idea.properties。有记事本打开,在最后一行添加 disable.android.first.run=true 保存即

    2024年02月17日
    浏览(44)
  • android studio开发——android11版本以上权限动态申请问题,包括文件读写、图片、相机的调用

    用于android手机的升级,现在已经是android13版本了,对于权限问题可能更加敏感了,前段时间开发发现之前的方法已经不再适用于android11以后的版本了 读写权限申请最好是跳转到设置中进行才是最好了,下面我们开始进行 首先是AndroidManifest.xml文件的权限 然后这里讲解一下权

    2024年02月10日
    浏览(56)
  • Android问题记录 - Unable to make field private final java.lang.String java.io.File.path accessible

    最近一个Flutter项目有新需求,开发时一直是在iOS设备上运行,花了几天做完后运行到Android设备测试,结果项目构建失败了。 Flutter: 3.7.11 Android Studio: 2022.2.1 Java: 17.0.6 Gradle: 7.4 Android Gradle Plugin (AGP): 4.1.3 项目构建报错日志: 报错有点眼熟,根据以往开发经验,应该是Gradle版本

    2024年02月04日
    浏览(53)
  • Android问题记录 - Unable to make field private final java.lang.String java.io.File.path accessible(持续更新)

    最近一个Flutter项目有新需求,开发时一直是在iOS设备上运行,花了几天做完后运行到Android设备测试,结果项目构建失败了。 Flutter: 3.7.11 Android Studio: 2022.2.1 Java: 17.0.6 Gradle: 7.4 Android Gradle Plugin (AGP): 4.1.3 项目构建报错日志: 报错有点眼熟,根据以往开发经验,应该是Gradle版本

    2024年02月13日
    浏览(41)
  • Android ExternalStorage读写权限问题(Access to the path “/storage/emulated/0/...“ is denied)

    现象: 从android10.0开始,不管manifest里是否添加读写权限,都不可以直接访问内部存储路径 为什么 1、因为很多App在安装以后,会在 /storage/emulated/0 下随意创建各种文件/文件夹,导致手机内部存储目录十分混乱,而且app卸载以后,这些文件不会被卸载掉,遗留垃圾文件,造成

    2024年02月14日
    浏览(38)
  • Android 11/12 app-lint 系统Update-API时Lint检查问题

    这种方式你可以其他博客也有 但是要每个类和方法都加上 @SuppressLint 太麻烦了 我才不要这样呢 1. 打开 frameworks/base/Android.bp 文件 2. 搜索找到这个字段 metalava_framework_docs_args 3. 然后在最后面添加   --api-lint-ignore-prefix xxxx 芜湖 成功啦

    2024年02月11日
    浏览(50)
  • unable to access ‘https://github.com/***/‘: HTTP/2 stream 1 was not closed cleanly before end

    错误提示: 错误原因: 当前git的网络协议和github要求的不一致; 解决方法: 执行上面指令后: .gitconfig中添加了http/1.1的协议,再提交试试;

    2024年02月03日
    浏览(39)
  • 关于picgo图床报错“unable to verify the first certificate“

    关于picgo图床报错\\\"unable to verify the first certificate\\\" 编程上的疑难杂症(一) 问题:本人picgo加github图床上传出现以下问题 \\\"message\\\": \\\"unable to verify the first certificate\\\"(无法验证第一证书) 问题分析: 图床是github图床,工具是picgo,为了可以顺利访问github用到steam++(Watt Toolkit)加速

    2024年02月11日
    浏览(62)
  • 关于selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain...的处理

    参考两位大佬的文章:代码实现对selenium的驱动器WebDrive的配置_疏狂难除的博客-CSDN博客 selenium打开浏览器报错成功解决selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain...-CSDN博客 直接上报错: 参考两位的文章后感觉报错原因是寻找路径失败或冲突的问题。 因为运行

    2024年02月04日
    浏览(39)
  • Android 蓝牙权限(更新到 Android 12)

    https://developer.android.com/guide/topics/connectivity/bluetooth/permissions BLUETOOTH :访问蓝牙适配器的权限,用于执行蓝牙操作。 BLUETOOTH_ADMIN :管理蓝牙适配器的权限,包括启用/禁用蓝牙、扫描设备和进行配对等操作。 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION :访问设备位置的权限。在 And

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包