2013-01-19 87 views
16

我認爲這是一個基本問題。是否有任何選擇通過使用意圖停止活動。如何使用intent停止android中的活動?

Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:5554")); 
startActivity(intent); 

這是我的代碼。如果用戶很忙或者其他什麼,我想停止這個活動(這意味着,我想放棄這個呼叫)。我能爲此做些什麼?我試過這個:

if (condition) { 
    Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:5554")); 
    startActivity(intent); 
}else { 
    this.finish(); 
} 

但沒用。有人有建議嗎?

+1

似乎這將是一個安全侵犯,如果一個應用程序可能會殺死另一個。 – EJK

+0

除非目標應用程序通過意圖發佈此功能。 – EJK

回答

23

前幾天我有這個問題,我很高興地告訴你,我找到了解決辦法。

首先,對活動要停止在AndroidManifest.xml補充一點:

android:launchMode="singleTop" 

我要使用一個CheckBox實例。當它被檢查時,活動已開始,未選中時將終止該活動。

示例活動A正在調用活動B,然後使用意向對其進行殺死。被放在一個

代碼:

checkbox.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent intent = new Intent(A.this, B.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      if (enable.isChecked()) { 
       intent.putExtra("keep", true); 
       startActivity(intent); 
      } 
      else 
      { 
       intent.putExtra("keep", false); 
       startActivity(intent); 
      } 
     } 
    }); 

代碼被放入B:

boolean keep; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.B); 
    intent = this.getIntent(); 
    boolean keep = intent.getExtras().getBoolean("keep"); 
    if(keep==true) 
    { 
     //execute your code here 

    } 
} 
    @Override 
protected void onNewIntent(Intent intent) 
{ 
    super.onNewIntent(intent); 
    keep = intent.getExtras().getBoolean("keep"); 
    if(keep==false) 
    { 
     B.this.finish(); 
    } 
} 

說明:這是什麼基本上做的是,當複選框被選中它調用的活動,傳遞一個布爾值,如果它是真的活動保持活躍並被帶到前臺。現在,如果您未通過國旗singleTop,則會創建此活動的許多實例。 singleTop確保只調用同一個實例。現在,當取消選中複選框時,將傳遞一個新的keep值,並在B中進行驗證。如果未選中,則活動A將傳遞false,因此B將從onNewIntent()函數中自行終止。

P.S - 您也可以從其他活動中關閉活動B.只需使用 如果另一項活動是C:

Intent intent = new Intent(C.this, B.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.putExtra("keep", false); 
startActivity(intent); 
+0

非常感謝Torcellite!這可以幫助我很多。 – Tony

+0

@Tony任何時候,請投票支持其他人查看它,以防萬一遇到此問題:) –

+0

@Tony另外,用B代碼嘗試一下,它可能不會很好運行,除非因爲我不知道你究竟想要什麼。 –

0

您可以關閉Play商店的後臺數據,而對沒有進入Play商店。它只會說三合一服務, 「無法加載」 這是我發現停止意圖的唯一方法

+0

@Sree鏈接在哪裏? –

相關問題