NEW_OUTGOING_CALL未在三星Galaxy S上调用

sco*_*yab 5 android broadcastreceiver

试图拦截传出呼叫,并使解决方案运行良好

  • nexus 1股票android 2.2
  • HTC渴望2.2
  • Moto无视2.1

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

 <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" /> 
Run Code Online (Sandbox Code Playgroud)

更新:还添加了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());
    }
}
Run Code Online (Sandbox Code Playgroud)

Sha*_*ell 5

您需要添加用户权限:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
Run Code Online (Sandbox Code Playgroud)

请参阅此博客文章,了解如何设置和使用NEW_OUTGOING_CALL.

另请参阅此博客文章,了解您android:priority要设置的内容.


Chr*_*ins 5

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

像这样:

<uses-permission />
...
<receiver>
    <intent-filter> . . . </intent-filter>
    <meta-data />
</receiver>
Run Code Online (Sandbox Code Playgroud)

某些设备如何解析清单可能存在问题,并且可能无法正确注册接收器.

编辑:从ADT 16开始,Lint会告诉你,你的权限是在错误的地方,所以我认为这必须是一个问题然后以前认为

干杯