Intent过滤器不适用于调用屏幕

Rol*_*no1 6 android intentfilter android-manifest android-intent

我正在设计一个自定义呼叫屏幕,以在电话交谈期间在屏幕上显示信息,例如呼叫者的地址簿信息.我的应用程序将在用户通过使用a按下呼叫按钮时开始Intent Filter,之后我将从地址簿中获取其他信息并将其添加到屏幕.

我的问题是,当按下呼叫按钮时,我activity没有启动.我的意图过滤器对吗?是否有可能拦截电话Intent?请分享您处理电话会议的知识.

Intent Filter的如下所示.

<activity android:name=".MyCallingScreen">
  <intent-filter android:priority="100">
    <action android:name="android.intent.action.CALL_BUTTON" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="tel" />
  </intent-filter>
</activity>    
Run Code Online (Sandbox Code Playgroud)

Nik*_*huk 4

在您的情况下,请尝试按以下方式更改代码:

<intent-filter android:priority="100">
    <action android:name="android.intent.action.CALL_BUTTON" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

如果按下通话按钮,这对我来说很有效。

尝试使用以下代码来拦截调用:

<activity>
  <intent-filter>
    <action android:name="android.intent.action.CALL_PRIVILEGED" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

对于 HTC 来说,有一些变化:

<activity>
  <intent-filter>
    <action android:name="android.intent.action.CALL_PRIVILEGED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="vnd.android.cursor.item/phone" />
    <data android:mimeType="vnd.android.cursor.item/phone_v2" />
    <data android:mimeType="vnd.android.cursor.item/person" />
  </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

当您通过以下方式从电话簿拨打电话时,会调用带有操作android.intent.action.CALL_PRIVILEGED的意图:电话簿->联系人->电话号码长按->从下拉菜单中选择拨打电话。