2

我目前正在做一个自定义方案意图过滤器来从浏览器打开我自己的应用程序。

是否可以改为打开活动来启动广播接收器。

我当前的活动广播接收器代码是这样的:

  <action android:name="android.intent.action.VIEW" >
            </action>

            <category android:name="android.intent.category.DEFAULT" >
            </category>
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="shortener.com"
                android:scheme="shortener" >
            </data>
        </intent-filter>

这是我的接收器代码。不触发。尝试了查看操作和自定义操作

 <receiver android:name="MyReceiver" >
            <intent-filter>
                <action android:name="com.dg.action.CONFIGURE" >
                </action>
                <category android:name="android.intent.category.DEFAULT" >
                </category>
                <data
                    android:host="shortener.com"
                    android:scheme="shortener" >
                </data>
            </intent-filter>
        </receiver>
4

1 回答 1

10

我知道这是旧的,但由于没有明确和可接受的答案,嘿嘿。正如官方文档所说:

... Intent 广播机制 .. 与用于使用 Context.startActivity() 启动活动的 Intent 完全分开。BroadcastReceiver 无法查看或捕获与 startActivity() 一起使用的 Intent;同样,当你广播一个 Intent 时,你永远不会找到或启动一个 Activity。这两个操作在语义上是非常不同的:使用 Intent 启动一个 Activity 是一个前台操作,它会修改用户当前正在与之交互的内容;广播 Intent 是用户通常不知道的后台操作。

来源:Android 开发者文档,BroadcastReceiver

希望这说明清楚。

于 2013-10-08T16:47:18.570 回答