NEW_OUTGOING_CALL未在三星Galaxy S上调用

时间:2011-07-14 16:25:21

标签: android broadcastreceiver

尝试拦截传出呼叫,并使解决方案正常运行

  • nexus 1 stock android 2.2
  • HTC欲望2.2
  • Moto defy 2.1

但不是在运行2.1的三星Galaxy S上,有人见过这个吗?

 <receiver  android:name="com.mypackge.OutGoingCallDetection" 
    android:exported="true"> 
 <intent-filter>   
  <action
    android:name="android.intent.action.NEW_OUTGOING_CALL"
    android:priority="0" /> 
</intent-filter> 
</receiver>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 

更新:还添加了PROCESS_OUTGOING_CALLS。

接收者:

public class OutGoingCallDetection extends BroadcastReceiver {

    private static final String TAG = "OutGoingCallDetection";


    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();
        Log.d(TAG, "onReceive, Action:" +intent.getAction());
    }
}

4 个答案:

答案 0 :(得分:5)

您需要添加用户权限:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 

请参阅this blog post,了解如何设置和使用NEW_OUTGOING_CALL。

另请参阅this blog post,了解将android:priority设置为。

的内容

答案 1 :(得分:5)

尝试按照Google Dev开头的建议按顺序放置清单:Manifest.xml

像这样:

<uses-permission />
...
<receiver>
    <intent-filter> . . . </intent-filter>
    <meta-data />
</receiver>

某些设备可能会解析Manifest并且可能无法正确注册接收器。

编辑:从ADT 16开始,Lint会告诉您,您的权限位于错误的位置,所以我认为这必须是以前认为的更多问题

干杯

答案 2 :(得分:0)

您是否尝试增加android:priority?我们说高达10000。

我正在拦截收到的短信'并且android:priority属性的增加很有帮助

答案 3 :(得分:0)

我以编程方式创建了广播监听器。它工作正常。供您参考。

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.NEW_OUTGOING_CALL");

receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.d(TAG, "onReceive, Action:" +intent.getAction());
    }
};
registerReceiver(receiver, filter);