Android11打开文件失败:EACCES(Permissiondenied),是否可以使用ACTION_OPEN_DOCUMENT解决?
创始人
2024-08-20 10:00:18
0

可以使用ACTION_OPEN_DOCUMENT解决该问题。下面是相关示例代码:

在Manifest文件中添加以下权限:



在需要打开文件的Activity中添加以下代码:

private static final int REQUEST_CODE_OPEN_DOCUMENT = 2;

private void openFile() {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.setType("*/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    startActivityForResult(intent, REQUEST_CODE_OPEN_DOCUMENT);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
    if (requestCode == REQUEST_CODE_OPEN_DOCUMENT 
            && resultCode == Activity.RESULT_OK 
            && resultData != null) {
        Uri uri = resultData.getData();
        // 根据Uri获取文件路径示例代码:
        String path = getRealPathFromURI(this, uri);
        // 打开文件示例代码:
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(path), "application/pdf");
        startActivity(intent);     
    }
}

private String getRealPathFromURI(Context context, Uri uri) {
    String filePath = "";
    if (uri.getScheme().compareTo("content") == 0) {
        Cursor cursor = context.getContentResolver().query(uri, 
                new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, 
                null, null, null);
        cursor.moveToFirst();
        filePath = cursor.getString(0);
        cursor.close();
    } else {
        filePath = uri.getPath();
    }
    return filePath;
}

在onActivityResult方法中处理返回的文件Uri,并调用getRealPathFromURI方法将Uri转为文件路径,然后可以使用该路径打开文件。注意:在Android 11中对外部存储的访问需要使用特殊权限,在查询Uri的数据时要使用MediaStore API。

相关内容

热门资讯

8分钟安装!掌中乐游戏中心云南... 8分钟安装!掌中乐游戏中心云南广电外挂(透视)好像真的有挂(2023已更新)(今日头条);1、许多玩...
七分钟辅助挂!广东麻将有挂的吗... 七分钟辅助挂!广东麻将有挂的吗(透视)详细辅助APP教程(2021已更新)(知乎);1、不需要AI权...
五分钟技巧!青龙游戏大厅辅助器... 五分钟技巧!青龙游戏大厅辅助器怎么用(透视)好像真的有挂(2021已更新)(微博客户端);小薇(透视...
9分钟辅助挂!陕麻圈辅助器安装... 9分钟辅助挂!陕麻圈辅助器安装免费(透视)详细辅助器教程(2025已更新)(微博热搜)1、陕麻圈辅助...
六分钟普及!小闲巴渝棋牌取胜(... 六分钟普及!小闲巴渝棋牌取胜(辅助挂)果真真的有挂(2022已更新)(哔哩哔哩)1、全新机制【小闲巴...
1分钟辅助挂!萍乡逗娱碰胡辅助... 1分钟辅助挂!萍乡逗娱碰胡辅助(辅助挂)详细辅助脚本教程(2023已更新)(抖音);1、1分钟辅助挂...
6分钟晓得!上游棋牌有挂吗(辅... 6分钟晓得!上游棋牌有挂吗(辅助挂)其实真的有挂(2020已更新)(今日头条)1、上游棋牌有挂吗ai...
七分钟辅助挂!宁波游戏大厅打地... 七分钟辅助挂!宁波游戏大厅打地鼠有没有挂(透视)详细辅助机制教程(2022已更新)(百度贴吧)1、玩...
八分钟科普!红心吴江麻将有挂吗... 八分钟科普!红心吴江麻将有挂吗(透视)的确是有挂的(2025已更新)(知乎)红心吴江麻将有挂吗辅助器...
8分钟辅助挂!吉祥游戏有挂吗(... 8分钟辅助挂!吉祥游戏有挂吗(透视)详细辅助安装教程(2020已更新)(哔哩哔哩)1、玩家可以在吉祥...