Android之URI简介

就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下:
scheme://host:port/path
举个实际的例子:
content://com.example.project:200/folder/subfolder/etc
\---------/  \---------------------------/ \---/ \--------------------------/
scheme                 host               port        path
                \--------------------------------/
                          authority   

现在大家应该知道data flag中那些属性的含义了吧,看下data flag
<data android:host="string"
      android:mimeType="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:port="string"
      android:scheme="string" />
但是我们在程序中一般是不直接用URI来标识CP的,是的,正如我们通常见到的用定义的常量来标识。例如standard CP中的Contacts,我们就用Contacts.People.CONTENT_URI来标识Contacts CP中People这个表。那么要标识某个具体的人怎么办呢? 这就用到了ContentUris.withAppendedId() 和 Uri.withAppendedPath()。例如我们要表示content://contacts/people/20,那么我们就可以用如下语句:
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, 20); 或者
Uri uri = Uri.withAppendedPath(People.CONTENT_URI, "20");

 

举些例子,如:

所有联系人的Uri: content://contacts/people

某个联系人的Uri: content://contacts/people/5

所有图片Uri: content://media/external

某个图片的Uri:content://media/external/images/media/4

下面是一些常用的Uri

 

显示网页:
  1. Uri uri = Uri.parse("http://www.google.com");
  2. Intent it = new Intent(Intent.ACTION_VIEW,uri);
  3. startActivity(it);

显示地图:
1. Uri uri = Uri.parse("geo:38.899533,-77.036476");
  2. Intent it = new Intent(Intent.Action_VIEW,uri);
  3. startActivity(it);

路径规划:
  1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
  2. Intent it = new Intent(Intent.ACTION_VIEW,URI);
  3. startActivity(it);

拨打电话:
调用拨号程序
  1. Uri uri = Uri.parse("tel:xxxxxx");
  2. Intent it = new Intent(Intent.ACTION_DIAL, uri);   
  3. startActivity(it);   
  1. Uri uri = Uri.parse("tel.xxxxxx");
  2. Intent it =new Intent(Intent.ACTION_CALL,uri);
  3. 要使用这个必须在配置文件中加入<uses-permission id="Android.permission.CALL_PHONE" />

发送SMS/MMS
调用发送短信的程序
  1. Intent it = new Intent(Intent.ACTION_VIEW);
  2. it.putExtra("sms_body", "The SMS text");
  3. it.setType("vnd.android-dir/mms-sms");
  4. startActivity(it);   
发送短信
  1. Uri uri = Uri.parse("smsto:0800000123");
  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);
  3. it.putExtra("sms_body", "The SMS text");
  4. startActivity(it);   
发送彩信
  1. Uri uri = Uri.parse("content://media/external/images/media/23");
  2. Intent it = new Intent(Intent.ACTION_SEND);
  3. it.putExtra("sms_body", "some text");
  4. it.putExtra(Intent.EXTRA_STREAM, uri);
  5. it.setType("image/png");
  6. startActivity(it);

发送Email
  1.
  2. Uri uri = Uri.parse("mailto:xxx@abc.com");
  3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);
  4. startActivity(it);
  1. Intent it = new Intent(Intent.ACTION_SEND);
  2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");
  3. it.putExtra(Intent.EXTRA_TEXT, "The email body text");
  4. it.setType("text/plain");
  5. startActivity(Intent.createChooser(it, "Choose Email Client"));   
  1. Intent it=new Intent(Intent.ACTION_SEND);   
  2. String[] tos={"me@abc.com"};   
  3. String[] ccs={"you@abc.com"};   
  4. it.putExtra(Intent.EXTRA_EMAIL, tos);   
  5. it.putExtra(Intent.EXTRA_CC, ccs);   
  6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");   
  7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   
  8. it.setType("message/rfc822");   
  9. startActivity(Intent.createChooser(it, "Choose Email Client"));

添加附件
  1. Intent it = new Intent(Intent.ACTION_SEND);
  2. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
  3. it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/mysong.mp3[/url]");
  4. sendIntent.setType("audio/mp3");
  5. startActivity(Intent.createChooser(it, "Choose Email Client"));

播放多媒体
  1.   
  2. Intent it = new Intent(Intent.ACTION_VIEW);
  3. Uri uri = Uri.parse("[url=]file:///sdcard/song.mp3[/url]");
  4. it.setDataAndType(uri, "audio/mp3");
  5. startActivity(it);
  1. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
  2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
  3. startActivity(it);   

Uninstall 程序
  1. Uri uri = Uri.fromParts("package", strPackageName, null);
  2. Intent it = new Intent(Intent.ACTION_DELETE, uri);
  3. startActivity(it);

//调用相册
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);

//调用系统相机应用程序,并存储拍下来的照片
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);

uninstall apk
/**未测试
Uri uninstallUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
*/
Uri packageURI = Uri.parse("package:"+wistatmap);   
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);   
startActivity(uninstallIntent);

install apk
Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
play audio
Uri playUri = Uri.parse("[url=]file:///sdcard/download/everything.mp3[/url]");
returnIt = new Intent(Intent.ACTION_VIEW, playUri);

//发送附件
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   
it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/eoe.mp3[/url]");   
sendIntent.setType("audio/mp3");   
startActivity(Intent.createChooser(it, "Choose Email Client"));

//搜索应用
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

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

//查看指定联系人
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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机安装和使用

软件更新快&#xff0c;所以我也不知道什么时候这些密钥啊就失效了&#xff0c;最新应用的安装时间&#xff1a;15年 虚拟机软件不少&#xff0c;其中应用最广发的一个就是VMware Workstation&#xff0c;以后用了别的虚拟机&#xff0c;安装教程再加~ VMware Workstation http…

十个jQuery的幻灯片图片轮播切换插件[转]

1、Simple Controls Gallery 是基于jQuery的一个幻灯插件&#xff0c;非常不错&#xff0c;详细演示及下载请点击下面的链接http://www.dynamicdrive.com/dynamicindex4/simplegallery.htm 2、jQuery Cycle Plugin 同样是jQuery的插件&#xff0c;支持非常多的样式&#xff0c;…

22张图片倒叙霍金:我爱宇宙也爱这苦乐人生

全世界只有3.14 % 的人关注了爆炸吧知识▲斯蒂芬威廉霍金&#xff08;Stephen William Hawking&#xff09;&#xff0c;1942年1月8日出生于英国牛津&#xff0c;21岁时患上肌肉萎缩性侧索硬化症&#xff08;卢伽雷氏症&#xff09;&#xff0c;全身瘫痪&#xff0c;不能言语&a…

鸿蒙思维和小央美,北市场附近艺术培训

最佳答案&#xff1a;北市场附近有叮当少儿美术空间,弈趣围棋培训中心,舞王回一街舞俱乐部,童心童画美术馆,小央美儿童美术,纸飞机少儿美术,星海艺术培训,鸿蒙教育思维绘画,小画虫少儿美术培训中心,红点美术培训中心,风之舞打击乐培训中心,红英艺术中心,墨涛书法教育,格林童画,…

简述LINQ的发展历程

LINQ&#xff1a;最终统治了所有的语言&#xff01;让我们看看LINQ如何彻底改变了.NET中访问数据的方式.NET与其他技术栈的不同之处之一绝对是LINQ&#xff0c;它是Language Integrated Query的首字母缩写。实际上&#xff0c;它是随.NET Framework 3.5和Visual Studio 2008引入…

关于异或的一些东西和应用

异或是一种基于二进制的位运算&#xff0c;用符号XOR或者 ^ 表示&#xff0c;其运算法则是对运算符两侧数的每一个二进制位&#xff0c;同值取0&#xff0c;异值取1。它与布尔运算的区别在于&#xff0c;当运算符两侧均为1时&#xff0c;布尔运算的结果为1&#xff0c;异或运算…

Android之自定义ContentProvider详解

第一个版本 对android中MIME类型的理解 初始MIME类型&#xff0c;是在学习ContentProvider的时候。 当在创建自己的ContentProvider的时&#xff0c;需要从抽象类ContentProvider中派生出自己的子类&#xff0c;并实现其中5个抽象方法&#xff1a; query(Uri, String[], Strin…

dwr 写的小程序,配置

第一、在web.xml里面有如下配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?><web-app xmlns"http://java.sun.com/xml/ns/j2ee" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"h…

PHP开发学习-Apache+PHP+MySQL环境搭建

我现在开始php的学习之旅啦&#xff01; 入门&#xff1a;开发环境搭建 组件版本&#xff1a; apache2.2.22 下载地址&#xff1a;http://httpd.apache.org/ php5.4.11 下载地址&#xff1a;http://windows.php.net/download/ mysql5.5.29 下载地址&#xff1a;http://www.mys…

如何不露声色地知道别人是不是单身?

1 世界上竟然会有这么香的东西&#xff01;&#xff01;&#xff01;2 全网吧的电脑都死机了&#xff0c;唯独写论文的电脑没死机&#xff01;3 哈哈哈哈哈哈哈哈哈哈哈好拉风啊&#xff01;&#xff01;4 中国好邻居5 《秋游》&#xff0c;五年级男生写的诗图自我们1班王悦微6…

Android 防火墙 知乎,知乎回应:防火墙太“坑爹” 正检查用户隐私是否有泄露...

9月7日消息&#xff0c;知乎今日下午系统瘫痪无法登陆&#xff0c;各个页面变为一片空白&#xff0c;并且还出现了知乎账号“串号”现象&#xff0c;当时有消息称是服务器原因。其后知乎发布公告&#xff0c;声称由第三方防火墙故障引起客户端临时下线&#xff0c;并引起数据展…

再谈C#中的委托和事件

写在最前我相信全网关于委托和事件的文章和概述&#xff0c;大家应该已经读过很多篇。但是就我的观察来看&#xff0c;大多数文在讲述这方面概念时&#xff0c;都会用烧开水和狗叫主人的例子来讲述事件怎么工作&#xff0c;这样比喻固然与生活联系紧密&#xff0c;但看多了难免…

MIT Scheme 使用 Edwin

MIT Scheme 的基本使用&#xff1a;http://www.math.pku.edu.cn/teachers/qiuzy/progtech/scheme/mit_scheme.htm 安装过程 安装brew XQuartz 转载于:https://www.cnblogs.com/IDRI/p/4989171.html

js.domReady

2019独角兽企业重金招聘Python工程师标准>>> var dom [], dom_isReady false, domReady function (a) { if (dom_isReady) a(); else dom.push(a) }, dom_fireReady function () { if (!dom_isReady) { if (!document.body) return setTimeout(dom_fireReady, 1…

mongo-rename操作

重命名集合 > show collectionstianyc_test9> db.runCommand({renameCollection:Gps.tianyc_test9, to:Gps.tianyc_test99}){ "ok" : 1 }> show collectionstianyc_test99 另&#xff1a;通过db.listCommands()&#xff0c;可以查看到所有mongo的命令。转载…

Android之监测database的改变--notifyChange

我们在ContentProvider的insert,update,delete等改变之后调用getContext().getContentResolver().notifyChange(uri, null);这样就通知那些监测databases变化的observer了&#xff0c;而你的observer可以在一个service里面注册。 以Downloadmanger为例子&#xff1a; 定义Cont…

双一流高校出新规:研究生未经导师同意发论文,不得用于毕业、评奖!

全世界只有3.14 % 的人关注了爆炸吧知识本文转自&#xff1a;募格学术近日&#xff0c;吉林大学研究生院发布文件《吉林大学关于加强对研究生在学期间公开发表论文等学术成果管理的通知》&#xff0c;因内容涉及校内研究生论文发表要求&#xff0c;引起很多研究生的注意。其中包…

android http 三次 握手,面试解析:3次握手与4次挥手

在面试中&#xff0c;三次握手和四次挥手可以说是问的最频繁的一个知识点了&#xff0c;我相信大家也都看过很多关于三次握手与四次挥手的文章。今天的这篇文章&#xff0c;重点是围绕着面试&#xff0c;我们应该掌握哪些比较重要的点&#xff0c;哪些是比较多被面试官给问到的…

微服务组件记事本:Skywalking执行效果 · 多图篇

立冬时节知多少今天立冬&#xff0c;周末两天在家继续研究了下Skywalking&#xff0c;感觉这个组件还是很不错的&#xff0c;无论是设计思想还是架构设计&#xff0c;都能从中受到启发和帮助&#xff0c;建议感兴趣的小伙伴可以看看&#xff0c;当然&#xff0c;如果不感兴趣还…

《Starting with Starling》 Ep 1~11

starling 1.3&#xff0c;Hi-ReS-Stats FlashDevelop设置 Project->Properties ->Output->Platform->Flash Player->11.5 ->Classpaths->Add Classpath->(starling和Stats的src文件夹) 程序入口 [SWF(frameRate"60", width"800", …