声明活动中的意图过滤器与接收器之间的区别是什么?

时间:2012-06-02 01:47:10

标签: android android-intent android-manifest

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

   <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 个答案:

答案 0 :(得分:6)

差异很明显:第一个会尝试启动Activity,而第二个会执行BroadcastReceiver。使用什么取决于你想要达到的目标;如果您想捕获某些事件但不想向用户显示任何内容,请使用BroadcastReceiver