Android 将安卓意向下传给另一个应用程序
有没有一种方法可以让一个应用程序接收到一个意图并将其“传递”到下一个应用程序 我的意图如下:我想让我的应用程序接收Android 将安卓意向下传给另一个应用程序,android,android-intent,Android,Android Intent,有没有一种方法可以让一个应用程序接收到一个意图并将其“传递”到下一个应用程序 我的意图如下:我想让我的应用程序接收android.nfc.action.TAG\u DISCOVERED和android.nfc.action.TECH\u DISCOVERED意图,并检查它们的附加内容,以决定如何处理它们:要么在应用程序中触发一个动作,或者忽略其意图,将其交给可能感兴趣的任何其他应用程序 据我所知,IntentFilter只能处理Intent的操作、类别或数据,而不能处理其附加内容。因此,我必须确
android.nfc.action.TAG\u DISCOVERED
和android.nfc.action.TECH\u DISCOVERED
意图,并检查它们的附加内容,以决定如何处理它们:要么在应用程序中触发一个动作,或者忽略其意图,将其交给可能感兴趣的任何其他应用程序
据我所知,IntentFilter
只能处理Intent的操作、类别或数据,而不能处理其附加内容。因此,我必须确保我的应用程序得到所有的意图,但要与其他应用程序配合良好,我需要手动复制此功能
Android是否提供了一种方式让应用程序告诉它“我不会处理你发给我的意图,把它交给其他人”?如果没有,我能做什么?从我的应用程序重新发送意图
Android是否提供了一种方式让应用程序告诉它“我不会处理你发给我的意图,把它交给其他人”
没有
Android不允许您在意图进入其他应用程序之前“拦截”它们。如果是这样的话,你将陷入一种棘手的境地,即在其他应用程序出现泡沫之前,你要先决定哪些应用程序应该获得目的
如果没有,我能做什么?从我的应用程序重新发送意图
对于广播目的,您不必做任何事情。每个注册了收听fo广播的意图过滤器的应用程序都将接收广播
其他仅交付给单个应用程序的意图-这些意图启动活动或服务。如果对哪个应用程序应该接收其中一个意图(即多个应用程序注册与意图匹配的意图过滤器)存在任何歧义,Android将显示消歧UI,要求用户选择他们想要使用的应用程序
android.nfc.action.TAG_DISCOVERED
和android.nfc.action.TECH_DISCOVERED
属于后者(根据),因此只有一个应用程序能够接收这些事件,用户可能会被要求选择要使用的应用程序
Android是否提供了一种方式让应用程序告诉它“我不会处理你发给我的意图,把它交给其他人”
没有
Android不允许您在意图进入其他应用程序之前“拦截”它们。如果是这样的话,你将陷入一种棘手的境地,即在其他应用程序出现泡沫之前,你要先决定哪些应用程序应该获得目的
如果没有,我能做什么?从我的应用程序重新发送意图
对于广播目的,您不必做任何事情。每个注册了收听fo广播的意图过滤器的应用程序都将接收广播
其他仅交付给单个应用程序的意图-这些意图启动活动或服务。如果对哪个应用程序应该接收其中一个意图(即多个应用程序注册与意图匹配的意图过滤器)存在任何歧义,Android将显示消歧UI,要求用户选择他们想要使用的应用程序
android.nfc.action.TAG_DISCOVERED
和android.nfc.action.TECH_DISCOVERED
属于后者(根据),因此只有一个应用程序能够接收这些事件,用户可能会被要求选择要使用的应用程序。在对该主题进行进一步研究后,看来要做到这一点并不容易
Android中的Intent
可以发送到三个不同的收件人类别。发送Intent
时会进行此选择,并且只有匹配收件人类的实例才会接收Intent
。行为因收件人类别和发送意图所调用的方法而异。有关详细信息,请参阅
- 如果使用了
startActivity()
或startActivityForResult()
方法,则收件人是活动
。只有一个活动
将收到该意图。如果有多个活动
具有匹配的意向过滤器
,则通常会显示一个选择器对话框,以便用户进行选择。选择器对话框依次由另一个Intent
触发,其中android.Intent.action.chooser
作为其操作,充当原始Intent
的包装器
- 如果使用
startService()
或bindService()
方法,则服务将收到意图。强烈建议(甚至从API 21开始强制执行bindService()
)仅在明确的意图上使用这些方法,这些意图唯一地标识了它们的组件。否则Android会随机选择一个匹配的服务,而应用程序开发者无法控制这个选择
- 如果使用了
sendBroadcast()
、sendorderdbroadcast()
或(现在已弃用)sendStickyBroadcast()
方法,则BroadcastReceiver
将接收该意图。使用sendBroadcast()
时,Intent
将以随机顺序发送给所有匹配的接收器。使用sendOrderedBroadcast()
,收件人将一次发送一个广播。注册一个广播接收器
后,应用程序可以为其意向过滤器设置优先级
,优先级较高的用户首先获得意向。在这种特殊情况下,队列中的任何BroadcastReceiver
都可以在接收到Intent
时调用abortBroadcast()
,以防止其传播到优先级较低的收件人
现在,正如其他人所指出的,android.nfc.action.TAG\u DISCOVERED
和android.nfc.action.TECH\u DISCOVERED
与startActivity()一起发送(或