从收听拨出呼叫的广播接收器发起活动

时间:2011-06-19 13:41:14

标签: android broadcastreceiver

我正在尝试从收听呼叫的广播接收器发起一个活动,即5556.问题是,活动没有启动但是正在调用内置活动的活动,我已经改变了意图的优先级到100但无济于事。如何在拨号时启动活动而不是内置呼叫活动? 这是代码:

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();
        }
    }

}

清单文件:

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

2 个答案:

答案 0 :(得分:3)

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

  

您必须持有PROCESS_OUTGOING_CALLS权限才能接收此权限   意图。

那就是

"android.permission.PROCESS_OUTGOING_CALLS"

同样直接来自文档:

  

接收此Intent的任何BroadcastReceiver都不得中止广播。

以下是我获取信息页面的链接:

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

答案 1 :(得分:3)

而不是用abortBroadcast()中止广播;使用setResultData(null)在启动活动后结束调用。