回答

1

你需要使用if/else條件,以確定廣播行動:

public static final String Screen_on = "android.intent.action.SCREEN_ON"; 
@Override 
public void onReceive(Context context, Intent intent) { 
if (intent.getAction().equals(Screen_on)) { 
    // do your job here if screen is on /off 
} 
else{ 
     // send new intent to your Activity here 
     Intent intent = new Intent(context,Activity1.class); 
    intent.putExtra("status","CALL_STATE"); 
    context.startActivity(intent); 

     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING) { 
      // do your job here if PHONE STATE CHNAGED 
     } 
     } 

} 

,並宣佈在AndroidManifest.xml您的活動爲android:launchMode="singleTask"和覆蓋onNewIntent recive intent當活動運行時:

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    finishactivity(); 
} 
private void finishactivity(){ 
    Intent intent = getIntent(); 
    Bundle extras=intent.getExtras(); 
    if(extras!=null){ 
      if(extras.getString("status").equals("CALL_STATE")) 
     // finish your Activity here 
    } 
} 
+0

我試過這個,但似乎像screen_on首先被稱爲電話狀態假設在screen_on上顯示我的活動,然後在獲得Phone_state接收器之後,不應顯示活動。 – sandy

+0

@sandy:作爲您的問題,此代碼僅在SCREEN_ON Action BroadcastReceiver時才啓動活動。 –

+0

@sandy:看到我的編輯答案也許可以幫助你實現你想找的 –

相關問題