BroadcastReceiver组件

小结:

  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 会提示错误:

  

posted @ 2013-02-16 17:11  My_苦行僧  阅读(252)  评论(0编辑  收藏  举报