使用预定义的action值启动系统应用
1、启动浏览器
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
//可以传一个搜索关键字,会直接显示搜索结果页面。key是预定义的常量
// intent.putExtra(SearchManager.QUERY,"要搜索的内容");
startActivity(intent);
Intent.ACTION_WEB_SEARCH 匹配的动作是网页/浏览器 如果是这样的Intent:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
也可以写成这样:
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
2、启动浏览器,转到指定页面
//网址必须写全,不能省略协议http
Uri uri =Uri.parse("http://www.baidu.com");
//必须要传一个URI,才可以启动浏览器
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
Intent.ACTION_VIEW匹配的动作很多,是一个大类,包含了各种功能,必须要传参数,系统根据这些具体的参数才能判断要启动的程序(类型)。
3、启动拨号程序
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);
startActivity(intent);
ACTION_DIAL 匹配拨号程序。可以自动填写要拨的号码:
//手机号
Uri uri =Uri.parse("tel:137.....");
Intent intent = new Intent(Intent.ACTION_DIAL,uri);
startActivity(intent);
Uri参数可以写在Intent的构造函数里,也可以setData()单独写:
Intent intent = new Intent(Intent.ACTION_DIAL);
//传一个Uri类型的参数
intent.setData(Uri.parse("tel:137.....")); //参数为Uri类型
startActivity(intent);
如果是putExtra,只能单独写:
intent.putExtra(String key,String value);
4、发短信
方式一:
Intent intent = new Intent(Intent.ACTION_VIEW);
//可以设置短信的默认内容。可选
intent.putExtra("sms_body", "短信内容");
//具体细分VIEW的action为发短信
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
此方式不能设置默认收件人
方式二:
//默认收件人
Uri uri =Uri.parse("smsto:137782323");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "默认的短信内容");
startActivity(it);
5、发邮件
//默认收件人
Uri uri =Uri.parse("mailto:xxx@abc.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(intent);
注意:如果手机上没有对应的该类应用,又没有写对应的处理代码,会闪退。比如发送邮件,但没有安装邮箱,会闪退。
应该先检查手机上是否已安装该类应用,如果没有,给出提示,或者打开浏览器,转到该类常用应用的下载页面。
6、播放多媒体
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri =Uri.parse("mnt/sdcard/1.mp3");
//不能缺省这句代码
intent.setDataAndType(uri,"audio/mp3");
startActivity(intent);
7、安装apk
Intent intent = new Intent(Intent.ACTION_VIEW);
//apk路径
3 Uri uri=Uri.parse("mnt/sdcard/qqmail.apk");
//参数:Uri类型的apk路径,String类型的数据类型(固定写法)
intent.setDataAndType(uri,"application/vnd.android.package-archive");
startActivity(intent);
8、卸载apk
更新软件时,有时需要先卸载原来的版本,再下载安装新版本。
9、从相册选取图片
Intent intent = new Intent();
//所有图片格式
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
//要设置请求码
startActivityForResult(intent, 1);
10、选择某类应用
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TITLE, "标题信息");
intent.putExtra(Intent.EXTRA_SUBJECT, "主题信息");
intent.putExtra(Intent.EXTRA_TEXT, "内容信息");
startActivity(intent);
会弹出对话框列出所有满足该action的的应用,点击某项会打开该应用。预定义的action值分类很乱,所以往往会列出很多项,其中一些我们并不想要。
有时候我们并不想全部列出,只想列出其中部分,可以这样:
Intent it = new Intent(Intent.ACTION_SEND);
it.setType("text/plain");
/*
首先我们通过getPackageManager()获取包管理器PackageManager对象。PackageManger的主要职责是管理应用程序包。
通过PackageManager,我们就可以获取应用程序信息,PackageManager获取的信息即来自AndroidManifest.XML。
PageManager对象有个queryIntentActivities()方法,用来根据Intent查询可用的activity信息,该方法返回ResolveInfo集合。
*/
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(it, 0);
if (!resInfo.isEmpty()){
List<Intent> targetedShareIntents = new ArrayList<Intent>();
/*
针对每个ResolveInfo对象,通过activityInfo属性获取ActivityInfo对象,
根据ActivityInfo的packageName获取所属的包名称,并判断名称是否包含email、bluetooth、mms、weibo,如果包含,则添加到备选集合中。
*/
for (ResolveInfo info : resInfo) {
ActivityInfo activityInfo = info.activityInfo;
if (activityInfo.packageName.contains("email") || activityInfo.packageName.contains("bluetooth")
|| activityInfo.packageName.contains("mms") || activityInfo.packageName.contains("weibo")) {
Intent targeted = new Intent(Intent.ACTION_SEND);
targeted.setType("text/plain");
targeted.putExtra(Intent.EXTRA_TITLE, "title");
targeted.putExtra(Intent.EXTRA_SUBJECT, "subject");
targeted.putExtra(Intent.EXTRA_TEXT, "content");
targeted.setPackage(activityInfo.packageName);
targetedShareIntents.add(targeted);
}
}
//然后调用ceateChooser创建一个ACTION_CHOOSER Intent,用第一个备选Intent作为target Intent(第一个参数)
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "选择分享到:");
//通过putExtra设置Intent.EXTRA_INITIAL_INTENTS为其他备选Intent
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {}));
startActivity(chooserIntent);
}
只会列出我们想要列出的项。通常用这种方式。
下一篇随笔写 分享功能的实现。
12、打开照相机
Intent intent = new Intent("android.media.action.STILL_IMAGE_CAMERA");
startActivity(intent);
13、打开录音机
Intent mi = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
startActivity(mi);
使用预定义的action值启动系统应用的更多相关文章
- android 22 启动带2个action值的预定义acticity
main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ...
- android 21 隐式意图启动系统预定义activity
Intent intent=new Intent(LoginActivity.this, MainActivity.class);//显示意图启动,显示从一个activity到另一个activity, ...
- C++系统预定义4个用于标准数据流对象
C++系统预定义4个用于标准数据流对象 cin cout cerr clog C++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的 ...
- linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...
- WordPress Import 上传的文件尺寸超过php.ini中定义的upload_max_filesize值-->解决方法。
參考一: WordPress Importer上传导入备份文件时遇到这样一个错误,提示"上传的文件尺寸超过 php.ini 中定义的 upload_max_filesize 值". ...
- VC 预定义宏
列出预定义的 ANSI C和C++ Microsoft实现宏. 编译器识别预定义的ANSI C宏,并且Microsoft C++实现提供几个更多.这些宏不带参数,并且不能重定义.下面列出的某些预定义的 ...
- C/C++预定义宏
编译器识别预定义的 ANSI/ISO C99 C 预处理宏,Microsoft C++ 实现将提供更多宏.这些预处理器宏不带参数,并且不能重新定义. ANSI 兼容的预定义宏 __FILE__,__L ...
- 预定义宏,C语言预定义的宏详解
1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如 ...
- 关于标准C语言的预定义宏
标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来.__LINE__ 当前 ...
随机推荐
- UIBarButtonSystemItem 各种款式
- Axios 请求配置参数详解
axios API 可以通过向 axios 传递相关配置来创建请求 axios(config) // 发送 POST 请求 axios({ method: 'post', url: ' ...
- GCD的使用(1)使用GCD保护property
作为一个iOS开发者,必须要熟练使用GCD,本文是站在实际应用的角度总结GCD的用法之一: 使用barrier保护property.在多线程环境下,如果有多个线程要执行同一份代码,那么有时会出现问题, ...
- [USACO 2016Dec] Team Building
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4742 [算法] 动态规划 用Fi,j,k表示约翰的前i头牛和保罗的前j头牛匹配 , ...
- fastText(二):微博短文本下fastText的应用(一)
众所周知,微博中的内容以短文本居多,文本内容随意性极强,这给建模增加了很大的难度.针对这一问题,这里分享一下fastText在微博短文本的应用. 任务目标简单介绍一下整个任务的目标:给微博内容打上标签 ...
- 1、HTML的本质以及在web中的作用
一.HTML 1.一套规则,浏览器认识的规则. 2.开发者: 学习Html规则 开发后台程序: -写Html文件(充当模板的作用)****** -数据库获取数据,然后替换到html文件的指定位置(We ...
- 实现node端渲染图表的简单方案
实现node端渲染图表的简单方案 这个题目有点小,本篇博客真正谈论的应该是服务端生成图表的简单方案,这里面有两个关键字:服务端 & 简单,我们知道基于js有很多的图表库,知名的如D3.echa ...
- Codeforces - Gym102028 - 2018 Jiaozuo Regional Contest
http://codeforces.com/gym/102028 A. Xu Xiake in Henan Province 看起来像水题.乱搞一下,还真是. #include<bits/std ...
- Log2Net的架构简介
在开始介绍源码之前,我们有必要了解下整个系统的大致需求,设计架构,观其大略,这样才能从总体上把握为何细节上要如此设计,不至于在代码的海洋中迷失,时不时吐槽为何要这么多代码.高屋建瓴地把控系统的全局,孜 ...
- 重装 Cloudera CDH 5,启动oozie 出错处理
参考文章:http://community.cloudera.com/t5/Cloudera-Manager-Installation/Error-CDH5-oozie/td-p/8686 按照文章说 ...