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 与过滤器匹配时将调用的类的类型之外,两者之间有什么区别?

4

1 回答 1

6

区别很明显:第一个将尝试启动一个Activity,而第二个将执行一个BroadcastReceiver。用什么取决于你想达到什么;BroadcastReceiver当您想捕捉某些事件但不想向用户显示任何内容时使用。

于 2012-06-02T01:49:25.530 回答