在活动结束前调用的说明

时间:2012-04-25 18:40:35

标签: java android device-admin

我正在尝试了解用户是否启用了管理员,并且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”在其中总是有误。

1 个答案:

答案 0 :(得分:0)

来自startActivityForResult()的文档:

  

在完成后启动您想要结果的活动。   当此活动退出时,您的onActivityResult()方法将是   使用给定的requestCode调用。使用否定requestCode是   与调用startActivity(Intent)相同(活动未启动为   一项子活动)。

换句话说,您需要覆盖onActivityResult()。在此方法中,您将必须检查使用您在startActivityForResult()中设置的requestCode调用方法,以及它是否包含预期的resultCode。如果确实写了你的偏好。