Android开发:显式/隐式Intent
显式跳转
是在已知包名和类名的情况下常用的跳转方法:
- Intent mIntent = new Intent();
- mIntent.setClassName("com.android.settings","com.android.settings.Settings");
- mContext.startActivity(mIntent);
我们也常这么用:
- Intent intent = new Intent(mContext, XXActivity.class);
- startActivity(intent);
这是跳转到当前应用的某个Activity,相信大家都十分熟悉,今天主要讲的是如何使用隐式intent意图跳转
隐式跳转
1、隐式跳转之Action跳转
- <activity android:name=".ActionActivity";
- <intent-filter
- action android:name="customer_action_here"
- </intent-filter>
- </activity>
那么我们就可以使用以下代码进行跳转到上面这个Activity中:
- //创建一个隐式的 Intent 对象:Action 动作
- Intent intent = new Intent();
- //设置 Intent 的动作为清单中指定的action
- intent.setAction("customer_action_here");
- startActivity(intent);
2、隐式跳转之Category跳转
- <activity android:name=".CategoryActivity" >
- <intent-filter>
- <action android:name="customer_action_here" />
- <category android:name="customer_category_here" />
- </intent-filter>
- </activity>
我们可以使用如下代码进行跳转到以上Activity:
- //创建一个隐式的 Intent 对象:Category 类别
- Intent intent = new Intent();
- intent.setAction("customer_action_here");
- //添加与清单中相同的自定义category
- intent.addCategory("customer_category_here");
- startActivity(intent);
3、隐式跳转之Data跳转
- < activity android:name=".DataActivity">
- < intent-filter>
- < category android:name="android.intent.category.DEFAULT" />
- < data
- android:scheme="content"
- android:host="com.example.intentdemo"
- android:port="8080"
- android:pathPattern=".*pdf"
- android:mimeType="text/plain"/>
- < /intent-filter>
- < /activity>
我们可以使用如下代码进行跳转:
- //创建一个隐式的 Intent 对象,方法四:Date 数据
- Intent intent = new Intent();
- Uri uri = Uri.parse("content://com.example.intentdemo:8080/abc.pdf");
- //注:setData、setDataAndType、setType 这三种方法只能单独使用,不可共用
- //单独以 setData 方法设置 URI
- //intent.setData(uri);
- //单独以 seType 方法设置 Type
- //intent.setType("text/plain");
- //上面分步骤设置是错误的,要么以 setDataAndType 方法设置 URI 及 mime type
- intent.setDataAndType(uri, "text/plain");
- startActivity(intent);
清单中的port及以下属性时可选的,没有必要一定添加,但是添加了port及以下属性的话,java代码中的Uri中要做相应的匹配。
4、隐式跳转之调用系统应用
4.1 使用浏览器浏览网页
- //web浏览器
- Uri uri= Uri.parse("http://www.baidu.com");
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- startActivity(intent);
4.2 调用地图
- //打开地图查看经纬度
- Uri uri = Uri.parse("geo:38.899533,-77.036476");
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- startActivity(intent);
4.3 调用电话拨号(不需要拨号权限)
- Uri uri = Uri.parse("tel:10086");
- Intent intent = new Intent(Intent.ACTION_DIAL, uri);//注意区别于下面4.4的action
- startActivity(intent);
4.4 调用电话直接拨号(需要拨号权限)
- Uri uri = Uri.parse("tel:15980665805");
- Intent intent = new Intent(Intent.ACTION_CALL, uri);//注意区别于上面4.3的aciton
- startActivity(intent);
4.5 调用短信程序(无需发送短信权限,接收者自填)
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.putExtra("sms_body", "这里写短信内容");
- intent.setType("vnd.android-dir/mms-sms");
- startActivity(intent);
4.6 调用短信程序(无需发送短信权限)
- Uri uri = Uri.parse("smsto:10086");//指定接收者
- Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
- intent.putExtra("sms_body", "你这个黑心运营商");
- startActivity(intent);
4.7 调用邮件程序
- Intent intent = new Intent(Intent.ACTION_SENDTO);
- intent.setData(Uri.parse("mailto:xxx@gmail.com"));
- intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");
- intent.putExtra(Intent.EXTRA_TEXT, "这是内容");
- startActivity(intent);
4.8 调用音乐播放器
- Intent intent = new Intent(Intent.ACTION_VIEW);
- //Uri uri = Uri.parse("file:///sdcard/xiong_it.mp4");
- Uri uri = Uri.parse("file:///sdcard/xiong_it.mp3");
- intent.setDataAndType(uri, "audio/mp3");
- startActivity(intent);
4.9 调用视频播放器
- Intent intent = new Intent(Intent.ACTION_VIEW);
- //Uri uri = Uri.parse("file:///sdcard/xiong_it.mp3");
- Uri uri = Uri.parse("file:///sdcard/xiong_it.mp4");
- intent.setDataAndType(uri, "video/mp4");
- startActivity(intent);
调用视频播放器和音乐播放器的区别在setDataAndType()时一个是audio类型,一个是video类型,很容易记住,不允许使用其他意思相近的单词代替,代替无效。
4.10 调用搜索
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_WEB_SEARCH);
- intent.putExtra(SearchManager.QUERY, "android");
- startActivity(intent);
总结
Android开发:显式/隐式Intent的更多相关文章
- 安卓开发学习笔记(四):Android Stuidio无法实现隐式Intent是为什么?
一.首先检查我们的代码: FirstActivity.java(主活动程序当中的代码):Button3监听器后面的代码就是我们隐式Intent的业务逻辑所在了,大家可以往下面看看,大概在代码的第57行 ...
- 学习安卓开发[4] - 使用隐式Intent启动短信、联系人、相机应用
在上一篇学习安卓开发[3] - 使用RecyclerView显示列表中了解了在进行列表展示时RecyclerView的使用,本次记录的是在应用中如何通过隐式Intent调用其它应用的功能,比如发短信. ...
- Android 显示意图和隐式意图的区别
意图在android的应用开发中是很重要的,明白了意图的作用和使用后,对开发会有很大帮助.如果没有把意图搞懂,以后开发应用会感觉缺些什么. 意图的作用: 1.激活组件 ...
- Android中显示和隐式Intent的使用
显示启动activity ...
- Android 8.0对隐式广播的进一步限制
项目targetSdkVersion升级到26后,对应的的是Android O版本,即Android 8.0系统.经测试发现针对8.0及以上安卓版本手机,AndroidMainfest.xml中静态注 ...
- Android开发笔记(7)——Intent启用应用软件
转载请注明:http://www.cnblogs.com/igoslly/p/6844154.html Intent启用应用软件 intent可以用来要求其他应用组件完成特定工作,如相机.电话.地图等 ...
- Android开发点滴 - 实现层级式导航(API 16+)
在Jelly Bean(API 16)以前,为了实现顶部的导航菜单,程序员们不得不手工写代码, 神马在OnCreate啊,神马onOptionsItemSelected啊,但是,现在一切都是浮云了. ...
- C++显式隐式构造函数
https://blog.csdn.net/starlee/article/details/1331268#comments
- Android开发探秘之四:利用Intent实现数据传递
在Android开发过程中,很多人都熟悉Intent,这是个用于在多个View之间共享数据的类.本节主要是继承上节,通过点选ListView中的文本,把文本中的URL加载到一个新的页面上,并且打印出来 ...
随机推荐
- project管理之makefile与自己主动创建makefile文件过程
(风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自己主动编译和链接使用的环境 想知道到Linux Makefile系 ...
- Eclipse 视图
Eclipse 视图 关于视图 Eclipse视图允许用户以图表形式更直观的查看项目的元数据. 例如,项目导航视图中显示的文件夹和文件图形表示在另外一个编辑窗口中相关的项目和属性视图. Eclipse ...
- Toolbar的使用.md
1.什么是Toolbar Toolbar是在Android5.0时出现的一个新控件,其目的用于取代Actionbar,它与Actionbar最大的差别就是Toolbar使用更加灵活.自由,而且Tool ...
- 【Scala类型系统】自身类型(self type)引用
定义 特质能够要求混入它的类扩展自还有一个类型,可是当使用自身类型(self type)的声明来定义特质时(this: ClassName =>).这种特质仅仅能被混入给定类型的子类其中. 如果 ...
- MySQL命令学习(一)
今天我们来学习一下MySQL中的经常使用命令(MySQL中的命令keyword是不区分大写和小写的): (1)show databases; 显示MySQL中的全部database (2)create ...
- R语言数据分析系列之五
R语言数据分析系列之五 -- by comaple.zhang 本节来讨论一下R语言的基本图形展示,先来看一张效果图吧. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...
- 关于angular JS 中$timeOut 的一些不正常情况下的$destory
最近项目中存在的问题头疼脑热了好一会. 我先简单说明下问题是由,使用$timeOut循环调用的时候由于页面存在异步加载会出现反复执行循环反复调用$timeOut,怎么清除跳出循环都不管用.于是查到了如 ...
- MVC入门——编辑页
添加Action EditUserInfo using System; using System.Collections.Generic; using System.Linq; using Syst ...
- 如果在 Code First 模式下使用,则使用 T4 模板为 Database First 和 Model First
web.config里的链接字符串最好和app.config里相同,因为ef的链接字符串需要一些特殊的参数
- Android自己定义控件--下拉刷新的实现
我们在使用ListView的时候.非常多情况下须要用到下拉刷新的功能.为了了解下拉刷新的底层实现原理,我採用自己定义ListView控件的方式来实现效果. 实现的基本原理是:自己定义ListView, ...