我正在尝试了解用户是否启用了管理员,并且LATER更新了一个复选框(在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”在其中总是有误。
答案 0 :(得分:0)
来自startActivityForResult()的文档:
在完成后启动您想要结果的活动。 当此活动退出时,您的onActivityResult()方法将是 使用给定的requestCode调用。使用否定requestCode是 与调用startActivity(Intent)相同(活动未启动为 一项子活动)。
换句话说,您需要覆盖onActivityResult()。在此方法中,您将必须检查使用您在startActivityForResult()中设置的requestCode调用方法,以及它是否包含预期的resultCode。如果确实写了你的偏好。