无法在广播中收到通话意图



我创建了 broadcastreceiver 来检测呼叫操作。

android.intent.action.CALL在活动中声明时会收到意图。

<activity
    android:name="com.xxx.yyy.CallCatcherActivity"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <action android:name="android.intent.action.CALL" />
        <action android:name="android.intent.action.CALL_BUTTON" />
        <action android:name="android.intent.action.CALL_PRIVILEGED" />
        <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        <action android:name="android.intent.action.DIAL" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="tel" />
    </intent-filter>
</activity>

但是,它在 broadcastreceiver上无效

androidManifest.xml

<receiver android:name="PhoneCallListener">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <action android:name="android.intent.action.CALL" />
        <action android:name="android.intent.action.CALL_BUTTON" />
        <action android:name="android.intent.action.CALL_PRIVILEGED" />
        <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        <action android:name="android.intent.action.DIAL" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="tel" />
    </intent-filter>
</receiver>

PHONECALLLISTENER.JAVA

public class PhoneCallListener extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("-", intent.getAction() + " received");
        try {
            if (intent.getAction().equals("android.intent.action.CALL")) {
                Log.d("-", "+ CALL action received!!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

操作呼叫和操作拨盘用于启动Activity,这些操作在广播Intent s中不使用。启动ActivityServiceBroadcastReceiver S有单独的Intent s,它们彼此无关。

请参阅您如何在Broadcastreceiver中接到传出电话,以获取有关如何捕获Intent.ACTION_NEW_OUTGOING_CALL以及如何使用PhoneStateListener检测呼叫状态变化的更多详细信息。

另请参见https://www.codeproject.com/articles/548416/detecting-incoming-and-comming-and-undoong--------------------------------- and-undove-phone-calls-on-and and and-and and tutorial tutorial。

相关内容

  • 没有找到相关文章

最新更新