Android:content uri转 file uri

Android开发中微信文件分享URI解析:解决File.length()返回0的幽灵问题 在Android应用开发中,文件共享与数据交换是常见的功能需求,尤其是在处理来自第三方应用(如微信)的文件分享时。其核心机制涉及Android系统的安全沙盒模型与内容提供器(ContentProvider)架构。传统上,开发者习惯使用基于文件路径(file://)的File类进行本地文件操作,但现代Android系统为保障应用间数据安全,强制推行了作用域存储(Scoped Storage)策略,并通过FileProvider生成内容URI(content://)进行安全的跨应用文件共享。这一转变带来了显著的 阅读详情

Android:content uri转 file uri

在android开发中我们在处理一图片时,经常需要将android uri如content://media/external/image/media/102这样格式转换
成File类型或者获取真实文件路径。网上有不少示例代码,但是我看到的都是只支持英文的,如果路径中含中文,会出现空指针异常:
网上的代码:
Uri uri = data.getData();
String[] proj = { MediaStore.Images.Media.DATA };
Cursor actualimagecursor = managedQuery(uri,proj,null,null,null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
String img_path = actualimagecursor.getString(actual_image_column_index);
File file = new File(img_path);
现在我们可以采用另一种方法实现支持中文的路径:
private Uri saveBitmap(Bitmap bm)
    {
        File tmpDir = new File(Environment.getExternalStorageDirectory() + "/com.cumt.csdn");
        if(!tmpDir.exists())
        {
            tmpDir.mkdir();
        }
        File img = new File(tmpDir.getAbsolutePath() + "csdn.png");
        try {
            FileOutputStream fos = new FileOutputStream(img);
            bm.compress(Bitmap.CompressFormat.PNG, 85, fos);
            fos.flush();
            fos.close();
            return Uri.fromFile(img);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
    //把content类型的uri装换为file类型的uri
    private Uri convertUri(Uri uri){
    	InputStream is = null;
    	try {
    		is = getContentResolver().openInputStream(uri);
    		Bitmap bitmap = BitmapFactory.decodeStream(is);
    		is.close();
    		return saveBitmap(bitmap);
    	} catch (FileNotFoundException e) {
            return null;
        } catch (IOException e) {
            return null;
        }
    }

在效率上很明显后者效率不高,需要保存图片再获取其file uri。我们可以两者结合使用:
<span style="white-space:pre">	</span>Uri uri;
        uri = data.getData();
        try {
            	String res = null;
                String[] proj = { MediaStore.Images.Media.DATA };
                Cursor cursor = getContentResolver().query(uri, proj, null, null, null);
                if(cursor.moveToFirst()){;
                   int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                   res = cursor.getString(column_index);
                }
                cursor.close();
                File file = new File(res);
                Uri fileUri = Uri.fromFile(file); 
	} catch (Exception e) {
	<span style="white-space:pre">	</span>Uri fileUri = convertUri(uri);
	}

目前在项目中是这样使用的,还没有找到更好的办法。。。。

用rsl_rl训练四足机器人走梅花桩:PPO算法调参实战与避坑指南 本文详细介绍了如何使用rsl_rl框架和PPO算法训练四足机器人在梅花桩上行走的实战经验。通过分析梅花桩场景的独特挑战,提供PPO算法关键参数配置策略、奖励函数设计方法以及常见问题的解决方案,帮助开发者高效实现机器人平衡控制。文章特别强调了仿真到实机的过渡技巧,最终实现98%的过桩成功率。 阅读详情

相关推荐

WPS占用C盘空间解决方案与优化技巧

办公软件在长期使用过程中会产生大量缓存和历史文件,这些文件往往隐藏在系统目录中,导致磁盘空间被无声占用。以WPS为例,其版本历史备份、云同步缓存和模板库是主要空间占用源。通过分析文件存储机制,可以定位到具体的缓存路径,如AppData目录下的Kingsoft文件夹。针对这一问题,有效的解决方案包括手动清理、自动化脚本和注册表优化。对于需要持续监控的场景,可以结合PowerShell脚本和任务计划实现自动化管理。在实际应用中,这些技术不仅适用于WPS,也可迁移到其他办公软件的空间优化中,是每位IT运维人员和高

weixin_30788239的博客 455

Android开发中content://与file://真实文件路径的转换

问题: 最近在开发文件查看器中出现一个问题: 接收到一个uri:content://media/external/images/media/2283 获取到的getPath:/external/images/media/2283, 打开文件是出现异常: java.io.FileNotFoundException: open failed: ENOENT (No such file or ...

zhanghao_Hulk的专栏 4万+

银河麒麟高级服务器操作系统V10SP2(X86)PXE无人值守批量部署实战指南

本文详细介绍了银河麒麟高级服务器操作系统V10SP2(X86)PXE无人值守批量部署的实战指南。通过PXE网络引导技术,实现全自动化、高效率的系统部署,特别适用于企业级数据中心和国产化替代项目。文章涵盖基础环境准备、关键服务配置、Kickstart高级定制及部署测试等核心内容,帮助用户快速掌握批量部署技巧。

weixin_42525637的博客 382

content uri转为file路径android开发

有时候我们从获取到的路径是例如content://media/external/images/media....这样的uri,我们需要把它们转为file路径,下面介绍一下处理的方法。   //对获得的路径参数  转换为file路径     string  myImageUrl = "content://media/external/images/media/image1";     Uri

编程小菜菜的专栏 8806

天池长期赛:二手车价格预测(422方案分享)

本次比赛是一次很好的锻炼数据挖掘能力的入门赛,从EDA-数据清洗-特征工程-模型调参-模型融合,能够完整的学习到大数据的分析和挖掘,值得历练。

weixin_46685991的博客 1万+

windows系统下,如何为comfyui如何安装triton

​ 有些加速插件、模型在安装的时候,比如说sageattention的安装,就需要提前安装triton这个包,不过这个包有点特殊,windows下略微不好装,经常会装失败。 🎠如何安装 之前也有人介绍过,要到github上找个wheel文件,找到对应的版本安装下就好了。 问题是:https://github.com/woct0rdho/triton-windows/releases 这个git地址上,已经找不到wheel文件了... ​

聚梦小课堂 4497

android content file,Android开发中content://与file://真实文件路径的转换

问题:最近在开发文件查看器中出现一个问题: 接收到一个uri:content://media/external/images/media/2283 获取到的getPath:/external/images/media/2283, 打开文件是出现异常:java.io.FileNotFoundException: open failed: ENOENT (No such file or dire...

weixin_31782201的博客 15万+

【Qualcomm高通音频】音效调试_录音文件播放有杂音,如何定位原因?

一、录音播放数据处理过程介绍 (1)TX方向 麦克风(硅麦克风或者主机体麦克风)采集模拟音频信号,经过内部CODEC芯片中的adc转换为数字信号,在经过高通音频DSP处理音效后编码为wav/aac/amr/mp3等格式文件。 (2)RX方向 音频文件经过解码、重采样还原为pcm数据,经过DSP处理音效后送到内部CODEC,然后经过DAC转换为模拟信号,送到喇叭。 二、分析步骤 1...

crow_ch的博客 5971

Android4.4以上版本Uri content转换成File文件路径

public static String getFilePathByUri(Context context, Uri uri) { String path = null; // 以 file:// 开头的 if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) { ...

Zhang Phil 6087

IAR9.X半主模式异常解析:为何硬件复位后仍陷调试状态?

本文深入解析了IAR 9.X半主模式异常问题,探讨了硬件复位后MCU仍陷调试状态的原因及解决方案。通过分析半主模式工作机制,提供了禁用半主功能、重写低级IO函数等具体方法,并给出了版本兼容性处理和调试与量产配置分离的优化建议,帮助开发者有效解决复位异常问题。

oo7890的博客 605

NXP(恩智浦)—TJA1043TK CAN收发器芯片详解

本文章主要讲解NXP(恩智浦)—TJA1043TK CAN收发器的相关知识。

零零刷的博客 2201

Android中content类型url转换绝对文件地址安卓自带文件管理器的大坑

项目场景: 提示:这里简述项目相关背景: 做了一个安卓毕设,因为不想用服务器,所以图片资源在保存时只保存了本地的路径地址类似: /storage/emulated/0/Pictures/1C15583A.jpg 这种在打开时候只需要 imgView.setImageURI(Uri.fromFile(new File("/storage/emulated/0/Pictures/1C15583A.jpg"))) //如果函数有错请自行判断,临时写的 但是我在上传路径时,用的是安卓自带文件管理器,在返回过程我获

coloskk的博客 1万+

代谢组数据分析(三十一):空间代谢组学分析从数据加载到通路分析的流程解析

空间代谢组学是一种先进的技术,能够在组织切片上以高分辨率检测代谢物分布,为理解生物代谢过程提供新视角。其分析流程包括数据获取、预处理、代谢物注释、差异表达分析、可视化、通路分析、聚类分析及空间相关代谢物分析等关键步骤。这些步骤帮助研究人员从海量数据中提取有价值信息,揭示代谢物的空间分布规律,发现潜在生物标志物,探索代谢通路调控机制。例如,SpaMTP等工具为全流程分析提供了强大支持,助力研究人员高效处理数据,深入理解代谢过程,为生物学研究和临床应用提供重要依据。

专注生信领域 918

Android中Uri和Path之间的转换

Android Uri to Path 现在遇到的常规Uri有两种: 媒体文件的Uri是content://, 表示这是一个数据库数据。去数据库查询正常返回 其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file)方法生成。 直接上代码 package com.xinmang.videoeffect.utils; impo...

那_个秋天的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android file content,android : file Uri to Content Uri. (converting)

I have two type of Uris.type one :content://media/external/images/media/465content://media/external/images/media/466type two :file:///storage/emulated/0/DCIM/Camera/20151112_185009.jpgfile:///storage/...

weixin_39612122的博客 279

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android Uri scheme协议file转content

在处理这些资源时,我们可能会遇到不同的Uri协议,如file和content。本文将详细介绍如何从file协议的Uri转换到content协议的Uri,并解释这个转换过程中的关键步骤和注意事项。首先,我们需要了解file和content两种协议的基本概念。file协议的Uri通常以"file://"开头,用于标识本地文件系统上的文件路径。而content协议的Uri则以"content://"开头,用于访问通过内容提供者(Content Provider)暴露的数据。一、了解file和content协议。

3387

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

android content file,Android中file开头的uri转换为content开头的ur:

直接上代码~/*** file开头的uri转换为content开头的uri* @param uri 任意uri* @return content开头的uri*/private Uri file2Content(Uri uri) {if (uri.getScheme().equals("file")) {String path = uri.getEncodedPath();if (path != n...

weixin_31108825的博客 814

android10以上 uri转file uri转真实路径

fun uriToFile(context: Context, uri: Uri): File? = when(uri.scheme){ ContentResolver.SCHEME_FILE -> uri.toFile() ContentResolver.SCHEME_CONTENT ->{ val cursor = context.contentResolver.query(uri, null, null, null, null) curso.

jingzz1的博客 2万+

安卓Android 图片URi转File,上传到服务器接口

1、打开图库拿到图片 //打开图库 Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, 0); 3、获取图片的路径 ...

chen陈..的博客 1万+

Android中URI的转换关于file和content相互转换工具类

调用时:File imageFile = getFileByUri(Uri); 工具类: public File getFileByUri(Uri uri) { String path = null; if ("file".equals(uri.getScheme())) { path = uri.getEncodedPa

zhengxtDgxs的博客 7078

android 缩略图uri_Android 文件绝对路径和Content开头的Uri互相转换

工作中遇到的问题。拍照获取图片后是得到的路径是file:///storage/emulated/0/Android/data/com.zehin.mingchuliangzao3/cache/PostPicture/20160905182015.jpg但是我想要的路径是:content://media/external/images/media/212304这种 Uri类型的查阅资料找到如下方法转...

weixin_34254083的博客 2300

android 把file资源转file,Android文件管理器选择文件,获得文件路径URI转File

记一次文件上传引发的血案。解决QQ浏览器com.tencent.mtt.fileprovider问题。更新列表日期修改内容2019年7月2日更新遇到的问题前情描述:使用系统文件管理器,选择指定文件类型上传。基础知识MIME调起文件管理器指定浏览位置(路径转URI)设置多种文件类型URI转路径踩坑com.tencent.mtt.fileprovider 问题1. MIMEMIME (Multipur...

weixin_32017023的博客 3万+

android通过uri得到文件对象,安卓[android] 通过Uri获取File文件

/*** 通过Uri返回File文件* 注意:通过相机的是类似content://media/external/images/media/97596* 通过相册选择的:file:///storage/sdcard0/DCIM/Camera/IMG_20150423_161955.jpg* 通过查询获取实际的地址* @param uri* @return*/public File getFileBy...

weixin_26901145的博客 3288

android content file,Android中文件File path与content:// Uri的相互转换

content Uri to path/*** Gets the corresponding path to a file from the given content:// URI* @param selectedVideoUri The content:// URI to find the file path from* @param contentResolver The content r...

weixin_39611725的博客 741

Uri 和 File 相互转

Uri 转 File public static File uriToFile(Uri uri,Context context) { String path = null; if ("file".equals(uri.getScheme())) { path = uri.getEncodedPath(); if (...

qq_29984105的博客 1314

android11以上 uri转file uri转真实路径

很久以前,曾经写过针对anddroid10 uri转file的方法:android10以上 uri转file uri转真实路径_jingzz1的博客-优快云博客_android uri转filefun uriToFile(context: Context, uri: Uri): File? = when(uri.scheme){ ContentResolver.SCHEME_FILE -> uri.toFile() ContentResolver.SCHEME_CONTENT ->{ val

jingzz1的博客 5431
上一篇: 编译原理:第七节
下一篇: 编译原理:第八节
cassiePython
博客等级 码龄12年 303粉丝 135原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值