2017-06-17 59 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你的答案。 –