解决java.io.FileNotFoundException: /storage/emulated/0/formats/

先说一下我是使用到了照相功能还有调用相册的时候出现的此问题。首先需要给大家说明一下这个问题是Android 10之后才出现的,Android10之前是不会出现这种问题的,这里主要说的不是动态申请访问文件的权限问题。因为我已经动态申请了权限,并且在获得权限后存储文件报的这个错误。
 

解决办法:

权限申请之后只需要在AndroidManifest.xml文件的application 标签下 加一条属性

android:requestLegacyExternalStorage="true"
即可解决

其他权限顺便也贴出来在配置文件中添加:
 
  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  2. <!--在sdcard中创建/删除文件的权限 -->

  3. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"

  4. tools:ignore="ProtectedPermissions" />

动态申请权限如下:
if (Build.VERSION.SDK_INT >= 23) {
                    int REQUEST_CODE_CONTACT = 101;
                    String[] permissions = {
                            Manifest.permission.WRITE_EXTERNAL_STORAGE};
                    //验证是否许可权限
                    for (String str : permissions) {
                        if (LocalActivity.this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
                            //申请权限
                            LocalActivity.this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
                            return;
                        } else {
                           //这里就是权限打开之后自己要操作的逻辑
                        }
                    }
                }
希望能够帮到遇到同样问题的小伙伴们。
  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
java.io.FileNotFoundException: http://localhost:8080/ 是一个文件找不到的异常。 这个异常通常是由于程序无法在指定的URL中找到文件导致的。例如,在引用提供的代码中,尝试打开一个URL连接来读取该URL指向的文件时,如果该文件不存在,就会抛出这个异常。 要解决这个问题,可以考虑以下几个步骤: 1. 确保URL的正确性: 首先,验证URL是否正确。可以尝试在浏览器中手动访问该URL,看看是否能够成功打开文件。如果无法在浏览器中打开文件,那么很有可能URL指向的文件确实不存在。 2. 检查文件路径: 如果URL是正确的,那么可以检查一下文件路径是否正确。确保文件所在的路径是可以被访问到的,并且文件确实存在于该路径中。 3. 检查文件权限: 如果文件路径是正确的,并且文件确实存在于该路径中,那么可能是由于文件权限的问题导致无法访问该文件。确保程序运行的用户具有足够的权限来访问该文件。 4. 处理异常: 如果以上步骤都确认无误,但仍然无法解决问题,那么可以在程序中使用try-catch语句来捕获FileNotFoundException异常,并进行相应的处理,例如输出错误信息或采取其他措施来处理异常情况。 总结起来,当出现java.io.FileNotFoundException: http://localhost:8080/ 异常时,需要检查URL的正确性、文件路径和文件权限,并处理异常情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [解决java java.io.FileNotFoundException: http:\localhost:8080 (文件名、目录名或卷)问题](https://blog.csdn.net/zelda002/article/details/7601653)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [jdbc连接数据库getConnection 增、删、改、查](https://download.csdn.net/download/l_ji_l/3671447)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值