ユーザーが管理者を有効にしているかどうかを理解しようとしており、後で(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 が含まれています。