前言:上一篇博客给大家聊了Intent的定义,分类、属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法。 Android系统的一个重要特性就是一个应用程序可以调用另外一个应用程序来完成用户的请求动作。比如你的应用程序 ...
前言:
上一篇博客给大家聊了Intent的定义,分类、属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法。
Android系统的一个重要特性就是一个应用程序可以调用另外一个应用程序来完成用户的请求动作。比如你的应用程序需要给用户显示一个地理位置在地图上,你不必在你的应用程序中实现地图功能,而是创建一个显示这个地理位置的Intent,发送出去,Android系统会启动那些可以处理这个请求的应用程序。还比如:你用百度云盘下载了一个pdf文档,你在点击打开这个文档的时候百度云盘是无法打开的,但是也许你系统上安装有其他的能打开pdf文档的阅读器,这个时候就会弹出一个对话框,列举了可以打开pdf文档的应用程序,你可以自由选择一个应用程序打开你下载的文档。
使用隐式Intent:
当你在你的应用程序中调用startActivity(Intent intent),传入上面的Intent,电话应用程序就会呼叫你上面指定的电话号码。下面是两个利用Intent实现其他功能的例子。
在浏览器上查看请求的网址:
Uri webpage = Uri.parse("http://www.android.com");Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
上面的Intent都是不带data的,但是有的时候Intent需要附带数据,数据可以是string,可以是基本数据类型,你可以调用putExtra()方法设置多个数据。
Intent数据是有数据类型的,这个数据类型叫做MIME类型,默认情况下系统通过数据中包含的Uri数据来确定数据的MIME类型,如果数据中不包含Uri,那么你需要调用setType()设置Intent数据的MIME类型。设置MIME类型进一步指定了哪些类型的Activity可以响应这个Intent。
注:MIME:全称Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务。它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。在Android中通过文件的MIME类型来判断有哪些应用程序可以处理这些文件,并使用其中的某一个应用程序(如果有多个可选的应用程序,则用户必须指定一个)处理之。创建日历事件(API level 14 and higher):
Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30);Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());calendarIntent.putExtra(Events.TITLE, "Ninja class");calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");
下面的例子是完整的启动地图应用的例子,包含启动前Intent的安全检查:显示应用选择器:
有的时候你在调用startActivity()向系统请求Activity处理你的请求时会有多个应用程序响应,用户需要选择一个应用程序来处理这个意图请求,这种体验非常好,用户可以自由选择应用程序,也可以指定默认用哪个应用程序响应这个请求,比如拍照,查看图片,上网。给用户显示这种应用选择器需要调用creatChooser()创建你的Intent,例如:
Intent intent = new Intent(Intent.ACTION_SEND);... // Always use string resources for UI text. // This says something like "Share this photo with" String title = getResources().getString(R.string.chooser_title);// Create intent to show chooser Intent chooser = Intent.createChooser(intent, title); // Verify the intent will resolve to at least one activity if (intent.resolveActivity(getPackageManager()) != null) { startActivity(chooser);}
原标题:Android利用Intent与其他应用交互
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。