Android10中,从图片URI获取文件路径无法真正实现。
创始人
2024-08-20 09:00:57
0

在Android 10及以上版本中,无法直接从图片URI获取其真实的文件路径。可以使用以下代码示例中的方法,将图片文件先复制到应用程序专有目录的缓存目录中,然后再操作该文件。

private String getFilePathFromUri(Context context, Uri uri) {
    String fileName = getFileName(uri);
    File cacheDir = context.getCacheDir();
    File file = new File(cacheDir, fileName);

    try (InputStream inputStream = context.getContentResolver().openInputStream(uri);
         OutputStream outputStream = new FileOutputStream(file)) {

        byte[] buffer = new byte[4 * 1024];
        int read;
        while ((read = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, read);
        }
        outputStream.flush();

    } catch (IOException e) {
        e.printStackTrace();
    }

    return file.getAbsolutePath();
}

private String getFileName(Uri uri) {
    String fileName = "";
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    if (cursor != null && cursor.moveToFirst()) {
        fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
        cursor.close();
    }
    return fileName;
}

相关内容

热门资讯

透视辅助!pokemmo辅助器... 透视辅助!pokemmo辅助器,哈糖大菠萝有挂吗5个常用方法(一直有挂)1、起透看视 哈糖大菠萝有挂...
透视辅助!aapoker插件下... 透视辅助!aapoker插件下载(透视)发牌逻辑(其实真的有挂)1、点击下载安装,aapoker插件...
透视教程!poker红龙辅助,... 透视教程!poker红龙辅助,epoker底牌透视(果然真的有挂)1、让任何用户在无需epoker底...
透视ai代打!aapoker怎... 透视ai代打!aapoker怎么拿好牌(透视)透视脚本下载(都是真的是有挂);1、透视ai代打!aa...
透视安卓版!智星德州插件,智星... 透视安卓版!智星德州插件,智星德州插件最新版本更新内容详解(确实是真的有挂)1、智星德州插件最新版本...
透视插件!aapoker怎么选... 透视插件!aapoker怎么选牌(透视)免费透视脚本(都是是有挂)1、aapoker怎么选牌ai辅助...
透视最新!拱趴大菠萝万能挂图解... 透视最新!拱趴大菠萝万能挂图解,大菠萝789辅助器下载(确实是有挂)1、每一步都需要思考,不同水平的...
透视ai代打!aapoker辅... 透视ai代打!aapoker辅助插件工具(透视)插件下载(总是真的是有挂);1、aapoker辅助插...
透视数据!werplan透视挂... 透视数据!werplan透视挂,wepoker安装教程(确实是有挂);1、进入游戏-大厅左侧-新手福...
透视最新!aapoker辅助器... 透视最新!aapoker辅助器是真的吗(透视)真的假的(一贯有挂)1、游戏颠覆性的策略玩法,独创攻略...