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

bma*_*ajz 5 android android-manifest android-intent

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

   <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>
Run Code Online (Sandbox Code Playgroud)

但如果我将其注册为广播接收器,我的应用程序不会显示在"使用...完成操作"对话框中.

   <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>
Run Code Online (Sandbox Code Playgroud)

一旦Intent与过滤器匹配,除了要调用的类的类型之外,两者之间有什么区别?

Cri*_*ian 6

区别很明显:第一个将尝试启动Activity,而第二个将执行a BroadcastReceiver.使用什么取决于你想要达到的目标; 使用BroadcastReceiver时,你想赶上一些事件,但不希望任何显示给用户.