在活动和接收器中声明意图过滤器的区别是什么?

5

我希望我的应用程序能够通过“使用完整操作...”对话框注册电话调用处理程序。我发现如果在我的清单中使用以下语法,它将起作用:

   <activity android:name="my.class">
       <intent-filter>
          <action android:name="android.intent.action.CALL_PRIVILEGED" />
          <category android:name="android.intent.category.DEFAULT" />
          <data android:scheme="tel" />
       </intent-filter>
   </activity>

但如果我将其注册为广播接收器,那么我的应用程序就不会出现在“使用以下方式完成操作”对话框中。

   <receiver android:name="my.class">
       <intent-filter>
          <action android:name="android.intent.action.CALL_PRIVILEGED" />
          <category android:name="android.intent.category.DEFAULT" />
          <data android:scheme="tel" />
       </intent-filter>
   </receiver>

除了Intent匹配过滤器后要调用的类的类型之外,这两者有什么区别?
1个回答

6
差异很明显:第一个会尝试启动一个Activity,而第二个将执行一个BroadcastReceiver。使用哪个取决于您想要实现什么;当您想要捕获某个事件但不想向用户显示任何内容时,请使用BroadcastReceiver

我理解Activity和BroadcastReceiver之间的区别,但我的问题是关于Android操作系统如何处理它们是否有任何差异。例如,似乎只有Activity出现在操作系统默认选择器中。还有其他类似的注意事项吗? - bmajz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接