android - 从收听拨出电话的广播接收器启动 Activity

标签 android broadcastreceiver

我正在尝试从广播接收器启动一个 Activity ,该接收器监听 5556 的拨出电话。问题是,该 Activity 未启动,但正在调用拨号内置 Activity ,我已经更改了 Intent 的优先级到 100 但无济于事。如何让 Activity 在拨号时启动而不是内置调用 Activity ? 这是代码:

package com.messageHider;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class launchReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
        String compare_num="5556";
        if(number.equals(compare_num))
        {
            Intent myintent=new Intent(context,messageHider.class);
            myintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(myintent);
            abortBroadcast();
        }
    }

}

list 文件:

<receiver android:name=".launchReceiver">
    <intent-filter android:priority="0">
        <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
    </intent-filter>
</receiver>

最佳答案

在您的 list 中,您需要一个权限(根据文档):

You must hold the PROCESS_OUTGOING_CALLS permission to receive this Intent.

那就是

"android.permission.PROCESS_OUTGOING_CALLS"

也直接来自文档:

Any BroadcastReceiver receiving this Intent must not abort the broadcast.

这是我获得信息的页面链接:

http://developer.android.com/reference/android/content/Intent.html

关于android - 从收听拨出电话的广播接收器启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6402679/

相关文章:

java - 在 Android 上获取 CommPortIdentifier 实例

android - 语音识别 - 获取所有支持的语言 - Android

android - 为什么我的小部件广播接收器服务在主应用程序停止时停止

android - 短信已发送ContentObserver

Android - sendBroadcast() 和 onReceive() - 进程间通信的同步解决方案

android - 调用 onDestroy 函数时 Receiver not registered 错误

android - 该应用程序会在一秒钟后自动定期重启

android - apache cordova android native 应用程序上的 html5 音频

java - 从已知类型实例化类

android - Android Studio在密度上拆分了APK