1

我试图通过拨打某个号码来开始一项活动。但我无法NEW_OUTGOING_CALL在 HTC g17 上接收广播。这是我的代码。

    <receiver android:name="com.example.security.receiver.CallPhoneReceiver">
        <intent-filter >
            <action 
                android:name="android.intent.action.NEW_OUTGOING_CALL"
                android:priority="10000"/>
            </intent-filter>
    </receiver>

我已经添加了这样的权限

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

我的接收器功能是

package com.example.security.receiver;

import com.example.security.ui.LostProtectedActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class CallPhoneReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Log.i("annoy",this.getResultData());
    String outPhoneNumber = this.getResultData();
    if(outPhoneNumber.equals("201314")){
        Intent i = new Intent(context,LostProtectedActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
        context.startActivity(intent);
        setResultData(null);
    }
}

}
4

1 回答 1

0

我已经弄清楚了。“CallPhoneReciever”中有错误。应该是

context.startActivity(i);

不是

context.startActivity(intent);

而且我发现优先级最好设置为2147483647(int的最大值),它是在1000之前。但是假设优先级是2147483647,有一些大公司的应用程序,他们会BroadcastReceiver在电话时动态注册正在启动,这些应用程序将比静态注册的应用程序更早地收到广播。

于 2013-11-12T07:20:11.553 回答