当前位置 博文首页 > csxglongaa的博客:解决java.io.FileNotFoundException: /storag

    csxglongaa的博客:解决java.io.FileNotFoundException: /storag

    作者:[db:作者] 时间:2021-07-04 18:54

    先说一下我是使用到了照相功能还有调用相册的时候出现的此问题。首先需要给大家说明一下这个问题是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 {
    ? ? ? ? ? ? ? ? ? ? ? ? ? ?//这里就是权限打开之后自己要操作的逻辑
    ? ? ? ? ? ? ? ? ? ? ? ? }
    ? ? ? ? ? ? ? ? ? ? }
    ? ? ? ? ? ? ? ? }
    希望能够帮到遇到同样问题的小伙伴们。
    cs
    下一篇:没有了