Android的URI学习

Android 中Uri.parse()的作用 Uri的概述: 通用资源标志符(Universal Resource Identifier, 简称"URI")。 Uri代表要操作的数据,Android上可用的每种资源 (图像、视频片段、网页等) 都可以用Uri来表示。从概念上来讲,URI包括URL。 Uri的通用格式为:scheme: scheme-specific-part #fragment 1.path转uri: Uri uri = Uri.parse(path); 将路径转换为要操作的数据。 ...... 阅读详情

一、使用地点
通用资源标志符(Universal Resource Identifier, 简称"URI")。
Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。
URI一般由三部分组成:
访问资源的命名机制。
存放资源的主机名。
资源自身的名称,由路径表示。
Android的Uri由以下三部分组成: "content://"、数据的路径、标示ID(可选)
举些例子,如:
所有联系人的Uri: content://contacts/people
某个联系人的Uri: content://contacts/people/5
所有图片Uri: content://media/external
某个图片的Uri:content://media/external/images/media/4
我们很经常需要解析Uri,并从Uri中获取数据。
Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris 。
虽然这两类不是非常重要,但是掌握它们的使用,会便于我们的开发工作。
下面就一起看一下这两个类的作用。

二、在INTENT中作为参数传递
1、打开一个网页,类别是Intent.ACTION_VIEW
Uri uri = Uri.parse("http://www.android-study.com/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);


2、打开地图并定位到一个点
Uri uri = Uri.parse("geo:52.76,-79.0342");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);


3、打开拨号界面,类型是Intent.ACTION_DIAL
Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);


4、直接拨打电话,与三不同的是,这个直接拨打电话,而不是打开拨号界面
Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_CALL, uri);


5、卸载一个应用,Intent的类别是Intent.ACTION_DELETE
Uri uri = Uri.fromParts("package", "xxx", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);


6、安装应用程序,Intent的类别是Intent.ACTION_PACKAGE_ADDED
Uri uri = Uri.fromParts("package", "xxx", null);
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);


7、播放音频文件
Uri uri = Uri.parse("file:///sdcard/download/everything.mp3");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setType("audio/mp3");


8、打开发邮件界面
Uri uri= Uri.parse("mailto:admin@android-study.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);


9、发邮件,与八不同这里是将邮件发送出去
Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "admin@android-study.com" };
String[] ccs = { "webmaster@android-study.com" };
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_TEXT, "I come from http://www.android-study.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "http://www.android-study.com");intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");
//发送带附件的邮件
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
intent.setType("audio/mp3");
startActivity(Intent.createChooser(intent, "Choose Email Client"));


10、发短信
Uri uri= Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra("sms_body", "I come from http://www.android-study.com");
intent.setType("vnd.Android-dir/mms-sms");


11、直接发短信
Uri uri= Uri.parse("smsto://100861");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "3g android http://www.android-study.com");


12、发彩信
Uri uri= Uri.parse("content://media/external/images/media/23");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "3g android http://www.android-study.com");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/png");


13、# Market 相关
1 //寻找某个应用
Uri uri = Uri.parse("market://search?q=pname:pkg_name");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where pkg_name is the full package path for an application

2 //显示某个应用的相关信息
Uri uri = Uri.parse("market://details?id=app_id");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where app_id is the application ID, find the ID
//by clicking on your application on Market home
//page, and notice the ID from the address bar


14、路径规划
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456


15、安装指定apk
public void setupAPK(String apkname){
    String fileName = Environment.getExternalStorageDirectory() + "/" + apkname;
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(new File(fileName)),"application/vnd.android.package-archive");
    mService.startActivity(intent);
}


16、进入联系人页面
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(People.CONTENT_URI);
startActivity(intent);


17、查看指定联系人
Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);// info.id联系人ID
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(personUri);
startActivity(intent);


18、调用相册
public static final String MIME_TYPE_IMAGE_JPEG = "image/*";
public static final int ACTIVITY_GET_IMAGE = 0;
Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
getImage.addCategory(Intent.CATEGORY_OPENABLE);
getImage.setType(MIME_TYPE_IMAGE_JPEG);
startActivityForResult(getImage, ACTIVITY_GET_IMAGE);


19、调用系统相机应用程序,并存储拍下来的照片
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
time = Calendar.getInstance().getTimeInMillis();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
.getExternalStorageDirectory().getAbsolutePath()+"/tucue", time + ".jpg")));
startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE)

android中的UriMatcher和ContentUris
用于操作Uri的工具类,分别为UriMatcher 和ContentUris。
UriMatcher
用于匹配Uri。
用法如下: 
首先把你需要匹配Uri路径全部给注册上:
注册完需要匹配的Uri后,就可以使用sMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配就返回匹配码,匹配码是调用 addURI()方法传入的第三个参数,例如匹配content://com.test.provider.personprovider/person 路径,返回的匹配码为1。

//常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码 
UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

//添加需要匹配的uri,如果匹配就会返回匹配码 
//如果match()方法匹配content://com.test.provider.personprovider/person路径,返回匹配码为1 
sUriMatcher.addURI(“com.test.provider.personprovider”, “person”, 1);

//如果match()方法匹配content://com.test.provider.personprovider/person/530路径,返回匹配码为2
//#号为通配符 
sUriMatcher.addURI(“com.test.provider.personprovider”, “person/#”, 2);
switch(sUriMatcher.match(Uri.parse("content://com.test.provider.personprovider/person/10"))) {
 case 1 break;
 case 2 break; 
default:
//不匹配 break; 
}

ContentUris类
用于获取Uri路径后面的ID部分:
1、ContentUris.withAppendedId(Uri contentUri, long id)用于为路径加上ID部分:
Uri uri = Uri.parse("content://com.test.provider.personprovider/person")
Uri resultUri = ContentUris.withAppendedId(uri, 5);
//生成后的Uri为:content://com.test.provider.personprovider/person/5
其结果等价于Uri.withAppendedPath(Uri baseUri, String pathSegment)
Uri resultUri = Uri.withAppendedPath(uri, "5");


2、ContentUris.parseId(uri)方法用于从路径中获取ID部分:
Uri uri = Uri.parse("content://com.test.provider.personprovider/person/5")
long personid = ContentUris.parseId(uri);
//获取的结果为:5
ContentResolver
通过URI来添加、删除、修改和查询ContentProvider中提供的数据。除了URI以外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型。如果你需要获取一个特定的记录,你就必须知道当前记录的ID,也就是URI中D部分。
可以使用Activity提供的getContentResolver()方法。 
ContentResolver使用insert、delete、update、query方法来操作数据。
1、final Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)Query the given URI, returning a Cursor over the result set. 
2、final Uri insert(Uri url, ContentValues values)Inserts a row into a table at the given URL. 
3、final int update(Uri uri, ContentValues values, String where, String[] selectionArgs)Update row(s) in a content URI.
4、final int delete(Uri url, String where, String[] selectionArgs)Deletes row(s) specified by a content URI.

Data+AI新玩法:Text2SQL让数据查询变得如此简单! 你是不是也遇到过这种情况?明明手头有海量数据,却因为SQL这道“门槛”,让分析和决策变得复杂和拖沓。你可能想着:“要是我能直接用自然语言和数据库对话,那该多好!你不是一个人在这样想,Text2SQL技术正是为了帮你摆脱这一困境而诞生的。 阅读详情

相关推荐

磁悬浮轴承控制策略设计及性能对比

摘要:针对高速磁悬浮转子控制问题,本文提出多方案对比分析。建立含陀螺效应的5自由度动力学模型,分析陀螺耦合、质量不平衡等关键挑战。对比四种控制策略:基础PID解耦、交叉反馈+自适应陷波、H∞鲁棒+前馈补偿、滑模控制+观测器,从实时性、鲁棒性等维度评估优劣。推荐采用交叉反馈+H∞+自适应陷波的混合方案,通过内环电流环与外环位置环协同,实现陀螺效应动态解耦和扰动抑制。实施步骤包括系统辨识、控制器设计、硬件部署等,需配合实验验证与参数整定。该方案综合性能最优,适用于高转速、强扰动场景。

技术工作者 1775

android 通用资源标志符Uri 总结

参考Android中的Uri Android URI总结 android 常用URI 值得记住 android之Uri的常用几个例子 Uri就是通用资源标志符(Universal Resource Identifier, 简称”URI”)。 Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。Uri唯一标识每种资源。从概念上来讲,URI包括URL。 U...

skyang在路上 1635

信创环境下,软件测试如何破局?

毕竟,在自主可控的道路上,每一行通过测试的代码,都在为信创产业的未来添砖加瓦。未来,测试工程师不仅要验证软件在信创环境的可用性,更要基于国产软硬件的特性,推动软件进行 “原生设计”—— 例如,针对国产 CPU 的多核架构优化代码,基于国产数据库的索引机制提升查询效率。某政务云平台的测试数据显示,在 “飞腾芯片 + 麒麟操作系统” 环境下,系统的并发处理能力较传统环境下降约 15%,测试团队通过优化软件的线程调度逻辑,最终将性能损失控制在 5% 以内 —— 这正是信创性能测试的价值所在。

weixin_45608163的博客 886

android的URI学习

今天学习关于android的URI的学习, 一、使用地点 通用资源标志符(Universal Resource Identifier, 简称"URI")。 Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。 URI一般由三部分组成: 访问资源的命名机制。 存放资源的主机名。 资

ljz2009y的专栏 3769

allegro转AD-(附工具)

本文介绍了将Allegro的.brd文件转换为Altium Designer可用的.alg文件的操作流程。首先需要下载专用转换工具,然后通过运行.bat脚本将.brd文件转换为.alg格式。最后在Altium Designer中使用导入向导完成文件转换,生成可用的PCB设计文件。整个过程简单快捷,只需三个步骤即可实现Allegro到Altium Designer的工程文件转换。

weixin_50120208的博客 1717

自动驾驶小车DIY:树莓派+激光雷达实现DWA路径规划(从仿真到实车)

本文详细介绍了如何基于树莓派与激光雷达,从零搭建一套完整的自动驾驶小车系统,并实现DWA局部路径规划算法。内容涵盖硬件选型、ROS环境部署、DWA算法原理与仿真,以及关键的实车调试与性能优化技巧,为创客和竞赛爱好者提供了一套低成本、高可行性的自主导航解决方案。

kiwi8的博客 530

Uri.parse() Uri.fromParts()

Uri.parse(String uriString) Creates a Uri which parses the given encoded URI string. Uri.fromParts(String scheme, String ssp, String fragment) scheme:ssp#fragment (encoded) Creates an

3710

36 Agent Memory:如何让智能体记住该记的东西

Agent 会调用工具,只能说明它有了行动能力。要让它跨会话、跨任务持续工作,还需要一套可治理的 Memory 系统。本文讲清上下文窗口、RAG 和 Agent Memory 的区别,以及工作记忆、情景记忆、语义记忆、程序记忆该如何分层设计。

老于的笔记的专栏 91

android URIs

一、打开一个网页,类别是Intent.ACTION_VIEW ? 1 2 Uri uri = Uri.parse("http://www.android-study.com/"); Intent intent = new Intent(Intent.ACTION_VIEW, uri);

yy228的专栏 742

萤石云cs刷机解绑固件

萤石CS-C2C-32WFR刷机包,萤石CS-C6TC刷机包,萤石CS-C6H刷机包,萤石猫眼产品等等。萤石云摄像头固件修改,绑定手机号解绑,更换序列号教程。

海康威视技术支持 2万+

零基础入门simulink仿真--通信领域的调制解调技术:基于Simulink的PM信号调制与解调仿真建模示例

PM的基本原理是将基带信号(如语音或音乐信号)加载到高频载波信号的相位上。通过改变载波的瞬时相位,可以实现信息的传输。PM的优点包括抗噪声能力强、频谱利用率较高等,但其解调过程相对复杂。通过Simulink,我们可以通过模块化的建模方式实现PM信号的调制和解调过程,并观察信号在信道中的传输效果。通过本指南,我们介绍了如何基于Simulink搭建一个完整的PM信号调制与解调仿真模型,并进行仿真和性能评估。背景介绍:理解PM信号调制与解调的基本原理及其应用。所需工具和环境:列出进行PM仿真所需的工具和环境。

amy_mhd的博客 605

安卓学习笔记——URI

一、URI:统一资源定位符,Universal Resource Identifier的简称 每一个ContentProvider都拥有一个公共的URI,这个URI用于表示ContentProvider提供的数据 二、URI的组成: 例: content://com.example.codelab.transportationprovider/train:要操作train数据资源所有的记录(如train表) content://com.example.codelab.transportationprovi

fuzhijieabc的博客 614

Unity引擎开发:复杂动作系统_动作捕捉数据的应用与整合

通过以上步骤,我们可以在Unity中有效地应用和整合动作捕捉数据,以实现更加真实和流畅的动画效果。从导入文件格式的选择,到预处理和优化,再到实时应用和调试验证,每一步都至关重要。希望本文能帮助你在Unity项目中更好地利用动作捕捉数据,提升动画质量和性能。

chenlz2007的博客 959

Android URI学习

/info.id联系人ID。3. 要使用这个必须在配置文件中加入//调用系统相机应用程序,并存储拍下来的照片。uri与file、path相互转化。Uninstall 程序。

HardProgrammer的博客 1798

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

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

Android安装应用uri,Android使用URI启动应用的学习

在Android中使用Activity标签下的data标签来描述该Activity可打开的资源类型,根据官方文档的说明其语法如下:android:mimeType="string"android:path="string"android:pathPattern="string"android:pathPrefix="string"android:port="string"android:schem...

weixin_29957761的博客 614

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android知识学习--URI

参考网站 RFC 2396:http://www.faqs.org/rfcs/rfc2396.html API URI:https://developer.android.google.cn/reference/android/net/Uri.html

与望 451

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android中uri的作用,Android学习笔记之ContentProvider和Uri详解

本文介绍了自定义Content Provider的相关内容,完全解析内容提供者的用法。Content Provider,内容提供者,相信大家对这个组件的名字都不陌生,可能是自己平时做的都是一些简单的App,所以对于Content Provider的使用并不是很多,也不是特别熟悉。但是这里还是对Content Provider作个简单的总结,不是很深入,但是希望能给包括我在内的初学者一点帮助,看完这...

weixin_39987926的博客 704

安卓开发学习之利用FileProvider获取文件uri

介绍 FileProvider是Android中推荐的获取文件Uri方式,将取代Uri.fromFile()方法 老方式的问题 在安卓7.0版本中,直接根据内部存储中的文件获取Uri会程序崩溃,相关代码如下: Uri uri = Uri.fromFile(file); 运行的话,会报错: 解决方法,就是引入FileProvider FileProvider的使...

四国棋客 8130

Android开发之Uri、UriMatcher、ContentUris学习

1.Uri 通用资源标志符(UniversalResource Identifier, 简称"URI")。Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。 URI一般由三部分组成:访问资源的命名机制。存放资源的主机名。资源自身的名称,由路径表示。 Android的Uri由三部分组成: content://、数据的路径、标示ID(可选)

古语云 582

android 文件url地址,Android文件路径、Uri学习

一、URI通用资源标志符(Universal Resource Identifier,简称"URI")。Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。URI一般由三部分组成:访问资源的命名机制。存放资源的主机名。资源自身的名称,由路径表示。Android的Uri由以下三部分组成:"content://"、数据的路径、标示ID(可选)举些例子,如:...

weixin_33850918的博客 3274

Android使用URI启动应用的学习

在Android中使用Activity标签下的data标签来描述该Activity可打开的资源类型,根据官方文档的说明其语法如下: <data android:host="string" android:mimeType="string" android:path="string" android:pathPattern="string" an

牟蘑菇的专栏 3456

Android通过URI获取文件路径

【Android 详细知识点思维脑图(技能树)】我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。

erghtt的博客 3496

Android学习_ContentProvider和Uri

ContentProvider概述 public abstract class ContentProvider extends Object implements ComponentCallbacks2 Content providers are one of the primary building blocks of Android applicati

John_cdy的专栏 1094

android 根据uri获取路径及图片压缩、旋转的学习笔记

做项目用到了这些,根据uri取得图片或视频的路径,上传拍摄的照片,遇到的一些问题: 1. 4.4以前和以后(含4.4)的URI格式不一样 2. 拍照后返回的URI有可能为null 3. 拍照后的图片有可能有旋转 一:URI格式问题 4.4以前:Uri : content://media/extenral/images/media/17766   4.4及以后: con

wblyuyang的专栏 3928

【重头学习Android】关于path与URI的转换

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0821/1660.html

零基础学Android专栏 928

android uri.pase,Android Uri的几种使用方法,分享共同学习

1,调web浏览器Uri myBlogUri = Uri.parse("http://www.soqi.cc");returnIt = new Intent(Intent.ACTION_VIEW, myBlogUri);2,地图Uri mapUri = Uri.parse("geo:38.899533,-77.036476");returnIt = new Intent(Intent.ACTION...

weixin_35186171的博客 247
上一篇: Android中Acition和Category常量表
下一篇: 页面动态改变img标签内容
Wo_Ai_Java
博客等级 码龄16年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值