尝试拦截传出呼叫,并使解决方案正常运行
但不是在运行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());
}
}
答案 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);