我正在开发一个应用程序,它阻止所有呼出呼叫,然后在阻止该呼叫后,另一个新的呼叫被发起到一个预定义的号码...
我的问题是,当我使用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);
}发布于 2012-01-09 17:05:58
你可以试着启动你的原版(CallListenerActivity?注册广播接收器的那个)活动再次使用存储在意图中作为额外的标志。评估您的活动中的意图,如果在附加内容中看到标志,则取消注册广播接收器。然后启动call活动,如示例代码所示。
发布于 2012-01-09 16:05:58
您可以在发起呼叫时使用store a check,并在呼叫完成后对其进行标记。对于此检查,您可以使用SharedPreference。
https://stackoverflow.com/questions/8785371
复制相似问题