android intent-filter category,android intent-filter category.DEFAULT

在显式Intent消息中,决定目标组件的惟一要素就是组件名称,所以,若是你的Intent中已经明肯定义了目标组件的名称,那么你就彻底不用再 定义其余Intent内容。而对于隐式Intent则不一样,因为没有明确的目标组件名称,因此必须由Android系统帮助应用程序寻找与Intent请 求意图最匹配的组件。具体的选择方法是:Android将Intent的请求内容和一个叫作Intent Filter的过滤器比较,Intent Filter中包含系统中全部可能的待选组件。若是Intent Filter中某一组件匹配隐式Intent请求的内容,那么Android就选择该组件做为该隐式Intent的目标组件.java

Android 如何知道应用程序可以处理某种类型的Intent 请求呢? 这须要应用程序在AndroidManifest.xml中声明本身所含组件的过滤器(便可以匹配哪些Intent请求)。一个没有声android

明Intent Filter的组件只能响应指明本身名字的显式Intent请求,而没法响应隐式Intent请求。而一个声明了Intent Filter的组件既能够响应显式Intent请求,也能够响应隐式Intent请求。在经过和Intent Filter比较来解析隐式Intent请求时,Android将如下三个因素做为选择的参考标准。ide

􀂉 Action测试

􀂉 Dataspa

􀂉 Categoryxml

而Entra和Flag在解析收到Intent时是并不起做用的。对象

对于categoryget

对于一个intent要经过种类检测,intent对象中的每一个种类必须匹配过滤器中的一个。即过滤器可以列出额外的种类,可是intent对象中的种类都必须可以在过滤器中找到,只有一个种类在过滤器列表中没有,就算种类检测失败!it

所以,原则上若是一个intent对象中没有种类(即种类字段为空)应该老是经过种类测试,而无论过滤器中有什么种类。可是有个例外,Android对待全部传递给Context.startActivity()的 隐式intent好像它们至少包含"android.intent.category.DEFAULT"(对应CATEGORY_DEFAULT常量)。 所以,活动想要接收隐式intent必需要在intent过滤器中包含"android.intent.category.DEFAULT"。io

注意:"android.intent.action.MAIN" 和 "android.intent.category.LAUNCHER"设置,它们分别标记活动开始新的任务和带到启动列表界面。它们能够包 含"android.intent.category.DEFAULT"到种类列表,也能够不包含。

因此蓝牙BluetoothOppReceiver.java中隐式发送以下:

Intent in1 = new Intent(BluetoothDevicePicker.ACTION_LAUNCH);

in1.putExtra(BluetoothDevicePicker.EXTRA_NEED_AUTH, false);

in1.putExtra(BluetoothDevicePicker.EXTRA_FILTER_TYPE,

BluetoothDevicePicker.FILTER_TYPE_TRANSFER);

in1.putExtra(BluetoothDevicePicker.EXTRA_LAUNCH_PACKAGE,

Constants.THIS_PACKAGE_NAME);

in1.putExtra(BluetoothDevicePicker.EXTRA_LAUNCH_CLASS,

BluetoothOppReceiver.class.getName());

in1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(in1);

而BluetoothSettings在接收的时候,

在AndroidManifest.xml中

对于BluetoothSettings这个activity

若是把这段注释掉的话,那么发送的ACTION_LAUNCH意图将不会被BluetoothSettings接收。

因此要想让其接收,必需要加上这句话!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值