首页 > 其他分享 >Android 文件绝对路径和Content开头的Uri互相转换

Android 文件绝对路径和Content开头的Uri互相转换

时间:2023-11-13 10:14:04浏览次数:30  
标签:cursor String filePath Uri 绝对路径 Content null MediaStore

最近在做一个项目时,需要做一个九宫格选择图片上传的功能,最后拿到的图片地址是文件的绝对路径地址,我需要的是Content开头的Uri,所以需要做一个转换

查阅资料找到如下方法,代码如下:

//路径文件转成URI
public static Uri getImageContentUri(Context context, java.io.File imageFile) {

String filePath = imageFile.getAbsolutePath();

Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,

new String[]{MediaStore.Images.Media._ID}, MediaStore.Images.Media.DATA + "=? ",

new String[]{filePath}, null);

if (cursor != null && cursor.moveToFirst()) {

@SuppressLint("Range")
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));

Uri baseUri = Uri.parse("content://media/external/images/media");

return Uri.withAppendedPath(baseUri, "" + id);

} else {

if (imageFile.exists()) {

ContentValues values = new ContentValues();

values.put(MediaStore.Images.Media.DATA, filePath);

return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

} else {

return null;

}
}
}


//Uri转绝对路径
public static String getFilePathFromContentUri(Uri selectedVideoUri, ContentResolver contentResolver) {

String filePath;

String[] filePathColumn = {MediaColumns.DATA};

Cursor cursor = contentResolver.query(selectedVideoUri, filePathColumn, null, null, null);

// 也可用下面的方法拿到cursor

// Cursor cursor = this.context.managedQuery(selectedVideoUri, filePathColumn, null, null, null);

cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

filePath = cursor.getString(columnIndex);

cursor.close();

return filePath;

}






标签:cursor,String,filePath,Uri,绝对路径,Content,null,MediaStore
From: https://www.cnblogs.com/yxgyiwen/p/17828557.html

相关文章

  • 剖析网络测量:Counting and Measuring Network Traffic
    全文共18000字,讲解了网络测量和计数中的多方面知识:网络测量的意义、网络测量的手段分类、网络测量在实现上的挑战、以及解决这些挑战所用到的技术和协同方案等等。参考书籍有:《NetworkAlgorithmics:AnInterdisciplinaryApproachtoDesigningFastNetworkedDevices(2ndE......
  • SpringSecurity successHandler方法使用自定义Handler登录成功,302问题
    一开始我自定义了成功和失败两个Handler,在进行调试的时候发现失败的没有问题,但是登录成功的话走的是某人的重定向而不是我自定义的protectedvoidconfigure(HttpSecurityhttp)throwsException{http.csrf().disable().headers().frameOptions().disable()......
  • SpringSecurity权限控制的学习
    Security权限控制流程 环境数据库数据库采用RBAC结构,大概如下图所示创建的表结构如下所示,用户表,角色表,权限表和两个关联他们的表导入springsecurity依赖坐标和我们需要的各种依赖坐标 <!--   mysql的驱动和mybatisplus依赖-->​    <dependency> ......
  • Maven打包项目时异常:Cannot access nexus-aliyun (http://maven.aliyun.com/nexus/con
    package是报错Cannotaccessnexus-aliyun(http://maven.aliyun.com/nexus/content/groups/public)inofflinemodeandtheartifactorg.apache.maven.surefire:maven-surefire-common:pom:2.22.2hasnotbeendownloadedfromitbefore.根据翻译的意思:无法在脱机模式下......
  • 无涯教程-批处理 - Listing Folder Contents函数
    列出文件夹内容可以使用dir命令完成,此命令使您可以查看当前目录中的可用文件和目录,dir命令还显示上次修改的日期和时间,以及文件大小DIR[drive:][path][filename][/A[[:]attributes]][/B][/C][/D][/L][/N][/O[[:]sortorder]][/P][/Q][/R][/S][/T[[:]timefield]][......
  • NeurIPS 2023 Spotlight | 半监督与扩散模型结合,实现少标签下可控生成
    前言 本文从模型结构到训练策略,以及实验结果出发,详解了DeepMind之前提出的不需要归一化的深度学习模型NFNet。本文转载自PaperWeekly作者:游泽彬单位:中国人民大学仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文......
  • 有趣的Java之Spring Security
    说明SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架。SpringSecurity是一个专注于为Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring安全性的真正威力在于它可以很容易地扩展以满足定制需求。一般Web应用的需要进行认证和授权。用户认证......
  • uri
    urii指的是id。定长无分割版本ar:[1,2]#省:[3,4]#市[5,6]#brith:[7,8,9,10,11,12,13,14,15]#生日cs:[16]#校验码140502199908312218可能会重每天999个新生号码分隔符14/05/02/19990831/221/8不会重复,但是存储太大。层级系统生成(身份证)放号自选(车牌号)......
  • appium+python设置app绝对路径和设置appPackage
     设置了“app”以后,就无需再设置appPackage、appActivityPATH=lambdap:os.path.abspath(os.path.join(os.path.dirname(__file__),p))desired_caps['app']=PATH(app_path)#desired_caps['appPackage']=get_app_package_name()#desired_caps['......
  • Java安全机制之一——SecurityManager和AccessController
    前言:在看socket相关代码的时候,AbstractPlainSocketImpl中的一段代码吸引了我,其实之前见过很多次类似的代码,但一直不想去看,只知道肯定和权限什么的相关,这次既然又碰到了就研究一下,毕竟也不能对java基本代码一无所知。static{java.security.AccessController.doPrivileged(......