Android 隐式意图的配置

本文地址:http://www.cnblogs.com/wuyudong/p/5677473.html,转载请注明源地址。

《Android 显示意图激活另外一个Actitity》一文介绍了一种激活Activity的方法

本文通过清单文件(AndroidManifest.xml)来实现意图的配置

Intent-filter属性详解

如果一个 Intent 请求在一片数据上执行一个动作, Android 如何知道哪个应用程序(和组件)能用来响应这个请求呢? 
Intent Filter就是用来注册 Activity 、 Service 和 Broadcast Receiver 具有能在某种数据上执行一个动作的能力。
使用 Intent Filter ,应用程序组件告诉 Android ,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组件、本地的或第三方的应用程序。
为了注册一个应用程序组件为 Intent 处理者,在组件的 manifest 节点添加一个 intent-filter 标签。
在 Intent Filter 节点里使用下面的标签(关联属性),你能指定组件支持的动作、种类和数据:

1.动作测试

<intent-filter>元素中可以包括子元素<action>,比如:

<intent-filter ><action android:name="com.example.project.SHOW_CURRENT" /><action android:name="com.example.project.SHOW_RECENT" /><action android:name="com.example.project.SHOW_PENDING" />
</intent-filter >

一条<intent-filter>元素至少应该包含一个<action>,否则任何Intent请求都不能和该<intent-filter>匹配。如果Intent请求的Action和<intent-filter>中个某一条<action>匹配,那么该Intent就通过了这条<intent-filter>的动作测试。如果Intent请求或<intent-filter>中没有说明具体的Action类型,那么会出现下面两种情况。

(1) 如果<intent-filter>中没有包含任何Action类型,那么无论什么Intent请求都无法和这条<intent-filter>匹配;
(2) 反之,如果Intent请求中没有设定Action类型,那么只要<intent-filter>中包含有Action类型,这个Intent请求就将顺利地通过<intent-filter>的行为测试。

2.类别测试

<intent-filter>元素可以包含<category>子元素,比如:

<intent-filter . . . ><category android:name="android.Intent.Category.DEFAULT" /><category android:name="android.Intent.Category.BROWSABLE" />
</intent-filter >

只有当Intent请求中所有的Category与组件中某一个IntentFilter的<category>完全匹配时,才会让该 Intent请求通过测试,IntentFilter中多余的<category>声明并不会导致匹配失败。一个没有指定任何类别测试的 IntentFilter仅仅只会匹配没有设置类别的Intent请求。

3.数据测试

数据在<intent-filter>中的描述如下:

<intent-filter . . . ><data android:type="video/mpeg" android:scheme="http" . . . /><data android:type="audio/mpeg" android:scheme="http" . . . />
</intent-filter >

<data>元素指定了希望接受的Intent请求的数据URI和数据类型,URI被分成三部分来进行匹配:scheme、 authority和path。其中,用setData()设定的Inteat请求的URI数据类型和scheme必须与IntentFilter中所指定的一致。若IntentFilter中还指定了authority或path,它们也需要相匹配才会通过测试。

❑ action
使用 android:name 特性来指定对响应的动作名。动作名必须是独一无二的字符串,所以,一个好的习惯是使用基于 Java 包的命名方式的命名系统。
❑ category

使用 Android:category 属性用来指定在什么样的环境下动作才被响应。每个 Intent Filter 标签可以包含多个 category 标签。你可以指定自定义的种类或使用 Android 提供的标准值,如下所示:

❑ ALTERNATIVE
你将在这章的后面所看到的,一个 Intent Filter 的用途是使用动作来帮忙填入上下文菜单。 ALTERNATIVE 种类指定,在某种数据类型的项目上可以替代默认执行的动作。例如,一个联系人的默认动作时浏览它,替代的可能是去编辑或删除它。
❑ SELECTED_ALTERNATIVE
与 ALTERNATIVE 类似,但 ALTERNATIVE 总是使用下面所述的 Intent 解析来指向单一的动作。SELECTED_ALTERNATIVE在需要一个可能性列表时使用。
❑ BROWSABLE
指定在浏览器中的动作。当 Intent 在浏览器中被引发,都会被指定成 BROWSABLE 种类。
❑ DEFAULT
设置这个种类来让组件成为 Intent Filter 中定义的 data 的默认动作。这对使用显式 Intent 启动的 Activity 来说也是必要的。
❑ GADGET
通过设置 GADGET 种类,你可以指定这个 Activity 可以嵌入到其他的 Activity 来允许。
❑ HOME
HOME Activity 是设备启动(登陆屏幕)时显示的第一个 Activity 。通过指定 Intent Filter 为 HOME 种类而不指定动作的话,你正在将其设为本地 home 画面的替代。
❑ LAUNCHER
使用这个种类来让一个 Activity 作为应用程序的启动项。
❑ data
data 标签允许你指定组件能作用的数据的匹配;如果你的组件能处理多个的话,你可以包含多个条件。你可以使用下面属性的任意组合来指定组件支持的数据:
❑ android:host
指定一个有效的主机名(例如, com.google )。
❑ android:mimetype
允许你设定组件能处理的数据类型。例如,<type android:value=”vnd.android.cursor.dir/*”/>能匹配任何 Android 游标。
❑ android:path
有效地 URI 路径值(例如, /transport/boats/ )。
❑ android:port
特定主机上的有效端口。
❑ android:scheme
需要一个特殊的图示(例如, content 或 http )。


实战一下

添加《Android 显示意图激活另外一个Actitity》中的跳转功能,实现隐式意图激活第三个界面

代码:

    // 采用隐式意图激活第三个界面public void click3(View view) {Intent intent = new Intent();intent.setAction("com.wuyudong.xxx");intent.addCategory("android.intent.category.DEFAULT");//intent.setData(Uri.parse("wuyudong:hahaha"));//指定数据类型//intent.setType("vnd.android.cursor.item/xixixi");
        intent.setDataAndType(Uri.parse("wuyudong:hahaha"), "vnd.android.cursor.item/xixixi");startActivity(intent);}

可以在OtherScreenActivity接收数据,代码如下:

public class OtherScreenActivity extends Activity {//重写activity的onCreate方法 方法里面设置初始化程序的界面
    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_two);Intent intent = getIntent(); //获取到激活它的意图Uri uri = intent.getData();System.out.println(uri.getScheme());}
}

清单文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.wuyudong.twoactivity"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:icon="@drawable/icon1"android:name="com.wuyudong.twoactivity.MainActivity"android:label="@string/activity01" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:icon="@drawable/icon2"android:name="com.wuyudong.twoactivity.OtherScreenActivity"android:label="@string/activity02" ><intent-filter><action android:name="com.wuyudong.xxx"/><data android:scheme="wuyudong" android:mimeType="vnd.android.cursor.item/xixixi"></data><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity></application></manifest>

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

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

相关文章

fpga中wire和reg的区别

wire表示直通&#xff0c;即只要输入有变化&#xff0c;输出马上无条件地反映&#xff1b;reg表示一定要有触发&#xff0c;输出才会反映输入。wire表示直通&#xff0c;即只要输入有变化&#xff0c;输出马上无条件地反映&#xff1b;reg表示一定要有触发&#xff0c;输出才会…

Django Tips

新加admin.py需重启自带Web服务器才能显示Admin保存设置外键的默认值http://stackoverflow.com/questions/937954/how-do-you-specify-a-default-for-a-django-foreignkey-model-or-adminmodel-fieldhttp://stackoverflow.com/questions/5632848/django-default-value-for-user…

wordpress html音乐,WordPress引用百度Ting音乐方法

对于个人博客来说&#xff0c;要在文章中添加音乐&#xff0c;如果放在自己服务器上&#xff0c;一方面是成本问题&#xff0c;其次&#xff0c;大部分博主用的国外服务器&#xff0c;而国外对版权看得比较重&#xff0c;基本上不允许上传音乐&#xff0c;所以我们通常都是通过…

开发工具MyEclipse如何支持可视化设计HTML和JSP页面

转自&#xff1a;http://tigerben.iteye.com/blog/722128 这两天一直在设计和开发JSP页面&#xff0c;所有标签都得通过自己手工编辑深感厌烦&#xff0c;印象中以前是有看到过MyEclipse是支持拖放HTML常用控件的&#xff0c;所以为此百度了一把&#xff0c;终有所获。 MyEclip…

转:c# Linq 的分页[转]

转&#xff1a;http://www.cnblogs.com/leleroyn/archive/2008/05/14/1196811.html 很多学习Linq的朋友肯定有自己所不同的方法&#xff0c;考虑这个问题我所想到的是 用Take(),Skip(),TakeWhile(),SkipUntil()中的方法来实现 首先看Take()是否可用 Take方法的作用是从结果中取…

html edge浏览器 图片,浏览器时序图及 Microsoft Edge 构架

本文又是我的作业&#xff0c;完成思路借鉴了 版权说明。作业要求针对一款典型浏览器&#xff0c;绘制浏览器处理时序图对用户界面进行操作(如拖拽窗口)带有 JavaScript 脚本 HTML 文档查阅资料&#xff0c;绘制 Edge 浏览器的参考架构浏览器时序图对用户界面进行操作(如拖拽窗…

您需要了解的跨阻放大器——第1部分

跨阻放大器&#xff08;TIA&#xff09;是光学传感器&#xff08;如光电二极管&#xff09;的前端放大器&#xff0c;用于将传感器的输出电流转换为电压。跨阻放大器的概念很简单&#xff0c;即运算放大器&#xff08;op amp&#xff09;两端的反馈电阻&#xff08;RF&#xff…

Objective-C组合模式(Composite)

什么是组合模式&#xff1f; 官方&#xff1a;将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;组合模式使用户使用单独对象和组合对象具有一致性。 个人理解&#xff1a;组合模式就相当于一个大家族&#xff0c;每个人都是家族中的一部分&#xff0c;整个家族就…

WP7应用开发笔记(3) 界面设计

界面设计 回顾一下按钮清单&#xff1a; 播放控制播放/暂停Space 停止F4 快进Right 快退Left 快进X2ControlRight 快退X2ControlLeft 快进X3AltRight 快退X3AltLeft音量放大Up 缩小Down 静音M节目下一个PageDown 上一个PageUp基本上就是把这些按钮布置到480*800的屏幕上。 快进…

html手机显示评论列表页面,请问如何完美显示评论列表头像

目前具体思路是通过轮询构建头像&#xff0c;条件是通过判断评论区条目length。问题是有时依然无法显示评论区头像。以下是目前的代码&#xff1a;function showAvatar() {$(.feedbackItem).each(function() {let avatar $(this).children(.feedbackCon).children(span:last).…

几何画板中可以这样选择对象

在使用几何画板过程中&#xff0c;一些用户朋友发现几何画板虽然是在Windows平台上运行的软件&#xff0c;但它选择对象的选择方式常常与一般的Windows绘图软件是有一些差别的&#xff0c;下面将通过详细的讲解&#xff0c;让大家对几何画板选择对象方法有比较系统全面的了解。…

2012 不宜进入的三个技术点(下)

赖勇浩&#xff08;http://laiyonghao.com&#xff09;CC 在 2011 年其实风头甚劲&#xff0c;C2011 标准出台&#xff0c;gcc/msvc/clang 都很快速地支持了许多新特性&#xff0c;新兴的移动设备的性能较差&#xff0c;更是 C 的新舞台&#xff0c;在这个时候唱衰 C&#xff0…

菜鸟做HTML5小游戏 - 刮刮乐

继上篇翻翻乐之后&#xff0c;又来刮刮乐。还是先上效果图&#xff1a; 开始demo的世界&#xff1a; 1.css去绘制界面效果。&#xff08;源码提供&#xff09; 2.原理&#xff1a;要实现刮刮卡内容的出现&#xff0c;我用div做了背景层去显示刮出的内容结果【重点】。中间Canva…

1 计算机主机里面都有些什么东西,计算机主机和外设分别包括那些东西?

___耐撕Nice___的回答&#xff1a;1、主机是指计算机除去输入输出设备以外的主要机体部分。也是用于放置主板及其他主要部件的控制箱体(容器Mainframe)。通常包括 CPU、内存、主板、光驱、电源、以及其他输入输出控制器和接口。在网络技术中是关于发送与接收信息的终端设备。2、…

AppDynamics赵宇辰:硅谷APM独角兽,打造DevOps领域的智能大脑

近来&#xff0c;关于机器学习的报道很多&#xff0c;国内外的大型互联网企业都在着手对机器学习的研究。对应用性能的高效管理&#xff0c;首先要了解应用的一手数据&#xff0c;通过传统的数据获取方式已经不能满足企业的发展和市场环境&#xff0c;这就需要借助机器学习的技…

江苏有保障的计算机应用技术,2022年江苏单招计算机应用技术专业公办学校名单...

2021年高职单招升学一对一咨询蒲善婷:18983252108(微信)很多考生都存在一个疑问&#xff0c;到底该选择什么样的单招学校和专业&#xff1f;其实啊&#xff0c;我们在选择时首先要了解学校的办学情况和招生专业&#xff0c;看看有没有是不是符合自己的选择条件&#xff0c;是否…

mybatis一对多查询

18 <!-- 19 方式一&#xff1a;嵌套结果&#xff1a;使用嵌套结果映射来处理重复的联合结果的子集 20 封装联表查询的数据(去除重复的数据) 21 select * from class c, teacher t where c.teacher_idt.t_id and c.c_id1 22 --> 23 …

如何选购集成吊顶

吊顶对比-选购-经验篇:集成吊顶顶行业作为一个新兴的行业类别&#xff0c;同时也是一个高速发展的行业&#xff0c;使得集成吊顶市场牌混乱不堪&#xff0c;为大家介绍 正确的选购之法。以下内容由买购网整理&#xff0c;提供给您参考。现在市场上扣板已经有很多品种了&#xf…

php - preg_match

任务&#xff1a;匹配一个函数名或者变量名&#xff0c;如果碰到alpha&#xff0c;numeric&#xff0c;_以外的全部不允许通过。 实验1&#xff1a; <?php //第一个字符不符合就直接退出正则匹配 $str %abcscript%d; var_dump(preg_match(/^(\w*)$/, $str, $matches)); va…

wp网站链接不带html,解决WordPress网站带与不带WWW网址跳转问题

我们在用wordpress搭建网站的时候是不是有些时候发现在输入WWW与不带WWW的地址都可以打开&#xff0c;以前我在配置的时候直接用WWW或者不带WWW只需要在后台设置两个统一的地址就可以。这几天在遇到一个网站发现并不是这样的&#xff0c;即便都设置了WWW的域名&#xff0c;然后…