android Broadcastreceiver问题

时间:2012-01-09 07:58:10

标签: android broadcastreceiver

我正在开发一个应用程序,它阻止所有拨出的呼叫,然后在阻止该呼叫之后,另一个新的呼叫被启动到预定义的号码......

我的问题是,当我使用广播接收器阻止呼叫时,我以编程方式启动的第二个呼叫也会被阻止...

是否有任何方法在阻止第一次调用或任何其他方法或技术后取消注册广播???

这是我为我的应用程序实现的广播接收器......

public class CallListenerActivity extends BroadcastReceiver {

Uri uri;

    @Override
    public void onReceive(Context context, Intent intent) {
            Bundle bundle = intent.getExtras();

            if(bundle == null)
                return;


            String phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

            Log.i("@@@OutgoingCallReceiver",phonenumber);
            Log.i("@@@OutgoingCallReceiver",bundle.toString());

            String info = "Detect Calls sample application\nOutgoing number: " + phonenumber;

           Toast.makeText(context, info, Toast.LENGTH_LONG).show();



           String phoneNumber = "5556";
           Uri uri = Uri.fromParts("tel", phoneNumber, null);

           Intent callIntent = new Intent(Intent.ACTION_CALL, uri);
           callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           context.startActivity(callIntent);




    }

2 个答案:

答案 0 :(得分:1)

您可以在发起呼叫时和完成呼叫标记后使用存储检查。为此,您可以使用SharedPreference

答案 1 :(得分:1)

您可以尝试使用在intent中存储为extra的标志再次启动原始(CallListenerActivity?注册广播接收器的活动)活动。 如果您在附加内容中看到标记,请评估活动中的意图并取消注册广播接收器。然后启动调用活动,如示例代码所示。