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。

相关内容

热门资讯

重大科普!家乡大贰小程序辅助器... 重大科普!家乡大贰小程序辅助器,微乐家乡app插件(有挂教程辅助开挂挂);亲,家乡大贰小程序辅助器这...
重大发现!荔枝竞技通用辅助器,... 重大发现!荔枝竞技通用辅助器,科乐填大坑辅助码(有挂秘诀辅助开挂挂);无需打开直接搜索微信(1367...
教程攻略!新海豚辅助工具,九酷... 您好:这款新海豚辅助工具游戏是可以开挂的,确实是有挂的,很多玩家在这款新海豚辅助工具游戏中打牌都会发...
交流学习经验!新海贝辅助器,决... >>您好:决战卡五星最新辅助确实是有挂的,很多玩家在这款决战卡五星最新辅助游戏中打牌都会发现很多用户...
发现玩家!家乡大贰辅助,嗨动互... >>您好:嗨动互动辅助确实是有挂的,很多玩家在这款嗨动互动辅助游戏中打牌都会发现很多用户的牌特别好,...
玩家必知教程!丽水都来脚本辅助... 玩家必知教程!丽水都来脚本辅助,微信中至有辅助吗(有挂规律开挂辅助工具);无需打开直接搜索加(薇:1...
查到实测辅助!牌乐门黑科技,皇... 查到实测辅助!牌乐门黑科技,皇豪互众辅助软件是干嘛的(有挂规律辅助插件)1、下载安装好牌乐门黑科技,...
重磅来袭!广东潮汕雀友会插件,... 重磅来袭!广东潮汕雀友会插件,葫芦娃辅助修改器下载(有挂功能开挂辅助脚本);无需打开直接搜索薇:13...
玩家爆料!相约十三张辅助,反杀... 相约十三张辅助是一款专注玩家量身打造的游戏记牌类型软件,在相约十三张辅助这款游戏中我们可以记录下每张...
避坑细节!牵手辅助器,微友辅助... 避坑细节!牵手辅助器,微友辅助器免费版(有挂方略辅助开挂下载);无需打开直接搜索薇:13670430...