1

在我的應用程序中,每天都有一個檢查條件,如果它變成真,那麼我希望我的應用程序在運行之間像崩潰和堆棧之間關閉也變得清晰。從BroadcastReceiver關閉正在運行的應用程序

我已經嘗試並測試了很多解決方案,但沒有找到按照我想要的方式工作的解決方案。 我廣播接收器

public void onReceive(Context context, Intent intent) { 
     PreferenceForApp prefs = new PreferenceForApp(context); 
     Bundle bundle = intent.getExtras(); 
     if (bundle!=null){ 
      if(bundle.containsKey("exception")) { 

//    String e = bundle.getString("exception") 
       if(bundle.get("exception").toString().equalsIgnoreCase("http request failed with error_msg No Match Found")) { 
        prefs.setIsDeviceValidated(false); 
        prefs.setIsLogIn(false); 
        Log.i("Time", "Exception Occur"); 

        Intent CSPIntent=new Intent(context,CSPLoginActivity.class); 
        CSPIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        CSPIntent.putExtra("close_activity", true); 
        Log.i("Time", "IntentExit"); 
        context.startActivity(CSPIntent); 
       } 
      } 
     } 
    } 
} 

和代碼在活動中,我從廣播接收器調用完成:

if (getIntent().getBooleanExtra("close_activity",false)) { 
    Log.i("Time", "ExitCSPLogin"); 
    this.finish(); 
} 

此代碼不能在運行之間關閉應用程序。

+0

你必須使用這個標誌的onCreate檢查設備每當有用戶輸入您的應用程序(其意義在您的第一個活動中)時,您是否有效。嘗試一下。 –

回答

1

您需要在您的活動中註冊BroadcastReceiver,並在要關閉應用程序時將廣播發送到BroadcastReceiver

在您的活動試試這個:

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction("com.package.ACTION_CLOSE");; 
BroadcastReceiver Receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      finish(); 
     } 
    }; 
registerReceiver(Receiver, intentFilter); 

onDestroy()你方法活動註銷BroadcastReceiver

@Override 
protected void onDestroy() { 
    unregisterReceiver(Receiver); 
    super.onDestroy(); 
} 

現在,當你想關閉應用程序發送廣播BroadcastReceiver

Intent broadcastIntent = new Intent(); 
broadcastIntent.setAction("com.package.ACTION_CLOSE"); 
sendBroadcast(broadcastIntent); 

希望這有助於!

+0

我應該在MainActivity中添加abv 2代碼還是我想從BroadcastReceiver調用的活動? –

+0

@ young_08你應該在你的活動中調用2位以上的代碼來關閉應用程序,並在任何地方發送廣播以關閉應用程序 – Rajesh

+0

嗨,thanx此代碼適用於我。真的!謝謝 。 –

0

每次用戶在您的應用中輸入時,您都必須在應用的mainActivity的onCreate方法中檢查以下條件。或onResume,如果你想關閉您的應用程序立即

if (!prefs.getIsDeviceValidated()) { 
    Log.i("Time", "ExitCSPLogin"); 
    this.finish(); 
} 

我假設你已經在你的應用程序更多然後一個活動中,我們將其放在主要活動的每一次活動,以便insted的支票上面的標誌。允許用戶使用你的應用程序,直到他/她付出mainActivity

注:創建廣播接收器爲您的應用程序(加入清單),未針對特定活動

+0

Nops,我修改了代碼,因爲你的建議,但它沒有爲我工作它沒有來主要活動,因此沒有關閉我的應用程序。 –

+0

只是檢查我編輯的代碼,改變條件 - > if(!prefs.getIsDeviceValidated()) –

+0

嘿,這也不適合我。它不調用MainActivity類。我不知道爲什麼 –

相關問題