2012-04-25 30 views
0

我在試圖瞭解用戶是否已啓用管理員或不更新複選框(在onResume中)。在活動關閉之前調用的指令

問題是,允許用戶啓用管理的活動已啓動,並且在不等待用戶決定的情況下啓動以下代碼。 怎麼可能繞過它?

private void doAttivaRimuoviAdmin() { 
    if (isAdminAttivo()) { 
     mDPM.removeActiveAdmin(mDeviceAdminSample); 
    } else { 
     Intent localIntent = new Intent("android.app.action.ADD_DEVICE_ADMIN"); 
     localIntent.putExtra("android.app.extra.DEVICE_ADMIN", mDeviceAdminSample); 
     localIntent.putExtra("android.app.extra.ADD_EXPLANATION", 
       getString(R.string.spiegazione_amministratore)); 
     startActivityForResult(localIntent, 1); 

     // se non è stato dato il permesso, non attiva la checkbox 
     Editor e = mPrefs.edit(); 

     if (isAdminAttivo()) { 
      e.putBoolean("spegnischermoabilitato", true); 
     } else { 
      e.putBoolean("spegnischermoabilitato", false); 
     } 
     e.commit(); 
     Log.i(getString(R.string.app_name), ""+ mPrefs.getBoolean("spegnischermoabilitato", false)); 

    } 

} 

在可憐的話語中,共享首選項「spegnischermoabilitato」中總是有FALSE。

回答

0

startActivityForResult()文檔:

推出一個活動,你想結果,當它完成。 當此活動退出時,您的onActivityResult()方法將使用給定的requestCode調用 。使用負的requestCode與調用startActivity(Intent)相同(該活動未作爲 子活動啓動)。

換句話說,您將需要覆蓋onActivityResult()。在這個方法中,你將不得不檢查用你在startActivityForResult()中設置的requestCode調用方法,並且它包含預期的resultCode。如果它寫了你的偏好。

相關問題