从监听呼出的广播接收机发起活动

我试图从一个广播接收机开始一个活动,这个广播接收机监听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> 

Solutions Collecting From Web of "从监听呼出的广播接收机发起活动"

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

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

那就是

 "android.permission.PROCESS_OUTGOING_CALLS" 

也从文档直接:

任何接收此意图的BroadcastReceiver不得中止广播。

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

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

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