小结:
receiver是不存在于任务栈中的,在receiver里面启动一个Activity必须要指定flag:Intent.FLAG_ACTIVITY_NEW_TASK
写了一个外拨电话拦截的广播,当拨打一个号码的时候去启动一个Activity。
示例Demo
1 public class PhoneReceiver extends BroadcastReceiver { 2 3 @Override 4 public void onReceive(Context context, Intent intent) { 5 // TODO Auto-generated method stub 6 Log.i("i", "已经拦截到了外拨通话"); 7 // 1.清除数据 8 // 2.激活一个activity 9 String number = getResultData(); 10 if("911".equals(number)){ 11 setResultData(null); 12 // receiver是不存在任务栈里面的 ,在里面启动activity必须要指定FLAG:Intent.FLAG_ACTIVITY_NEW_TASK 13 Intent i = new Intent(context,LostProtectedActivity.class); 14 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 15 context.startActivity(i); 16 } 17 } 18 19 }
如果不设置FLAG 会提示错误: