我试图了解用户是否启用了管理员,然后更新一个复选框(在恢复中)。
问题是允许用户启用管理员的活动已启动,并且无需等待用户决定即可启动以下代码。怎么能绕过它?
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。
来自 startActivityForResult() 的文档:
启动您希望在完成后获得结果的活动。 当此活动退出时,您的 onActivityResult() 方法将是 使用给定的请求代码调用。使用负请求代码是 与调用 startActivity(Intent) 相同(活动不会以 子活动)。
换句话说,你需要覆盖onActivityResult()。在此方法中,您必须检查该方法是否使用您在startActivityForResult()中设置的请求代码调用,以及它是否包含预期的结果代码。如果它确实写下了您的偏好。