2017-06-17 63 views
0

我每次通话结束时都使用广播接收器打开活动A. 5秒后活动重定向到另一个活动B.导航到另一个屏幕时广播接收器问题

现在,当另一次通话,尽管调用活动的广播接收器的末端直接调用活动B.

这是我的代码。

public void onReceive(Context context, Intent intent) { 
    try { 
     if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) { 
      savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER"); 
     } else { 
      String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE); 
      String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      int state = 0; 
      if (stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
       switch (state) { 
        case TelephonyManager.CALL_STATE_IDLE: 

         intent = new Intent(context, Create_log.class); 
         System.out.println("call state called"); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         //intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
         context.startActivity(intent); 
         break; 
       } 
      } else if (stateStr.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
       state = TelephonyManager.CALL_STATE_OFFHOOK; 
      } else if (stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
       state = TelephonyManager.CALL_STATE_RINGING; 
      } 

      onCallStateChanged(context, state, number); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

这需要create_log.class和create_log我已经调用5秒后的另一个类。

new Handler().postDelayed(new Runnable() { 
    @Override 
     public void run() { 
      final Intent mainIntent = new Intent(Create_log.this, Home_nav.class); 
      Create_log.this.startActivity(mainIntent); 
      Create_log.this.finish(); 
     } 
    }, 5000); 

但有时广播接收器带我直接到Home_nav.class.What可能是问题?

回答

1
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

一旦这条线尝试在你的onRecvie()方法

+0

的意图其实它,突如其来的,而不是每次。所以我无法确定它是否会成功。反正到现在它工作正常,所以upvoting你的答案。 –