interupting链接到我的应用程序
我有个问题。 Iam使用下面的代码来插入我的应用程序的链接
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="http" android:host="twitter.com"/>
<data android:scheme="http" android:host="facebook.com"/>
</intent-filter>
但问题是我需要在运行时设置数据方案和主机,即我可以在运行时添加或删除主机。 所以请有人帮助我设置运行时的数据方案和主机的价值。我使用下面的代码,但它不工作
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.VIEW");
filter.addCategory("android.intent.category.DEFAULT");
filter.addCategory("android.intent.category.BROWSABLE");
filter.addDataScheme("http");
filter.addDataAuthority("www.facebook.com", null);
RecieveBroadcaster receiver = new RecieveBroadcaster();
registerReceiver(receiver, filter);
严格地说,对应于字符串ACTION_VIEW
是按照惯例活动动作; 事实上,您将它放入清单中activity
的intent-filter
元素,使其成为活动动作! 系统代表您的应用程序监听这些信息,这基本上就是您为什么不自己监听它们的原因。 Context.startActivity()
方法生成这些Intent
。
意图解析的规则实际上决定了一个特定的Intent
是否与任何IntentFilter
匹配。 对于活动意图,可能会有多个匹配项,并且通常会显示“选择器”界面,因此用户可以选择一个目标。
有三个Intent
“流”永远不会交叉: startActivity()
, sendBroadcast()
和startService()
。 这些都是通过Context
方法启动的,并且每个都分别具有特定的目标Activity
, BroadcastReceiver
和Service
。
设置BroadcastReceiver
(不是ReceiveBroadcaster
是否尝试过这些代码?)以获取您感兴趣的事件并将Context.startActivity()
与您所需的Intent
一起使用是一件简单的事情。 您甚至可以使用自定义操作,所以您知道它是由接收方触发的,而不是用户触发的。
唯一的问题是:您是否可以安排接收广播事件? 您可以注册一个系统事件,或者您可以通过Context.sendBroadcast()
自己生成一个自定义事件。
请记住,您可以检查传入的Intent
是否开始于您的活动,并且如果与您正在查找的内容不完全匹配,则可以“转发”相同或已修改的Intent
。 正如您正确确定的那样,您不能动态更改活动的一组IntentFilter
,因此您必须检查每个请求的主机。
请记住,您也可以在清单中注册接收器,并让系统自动调用该实现。
链接地址: http://www.djcxy.com/p/57981.html上一篇: interupting link to my app
下一篇: What is the purpose of static keyword in array parameter of function like "char s[static 10]"?