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。

4

1 回答 1

0

startActivityForResult()的文档中:

启动一项您希望在完成后获得结果的活动。当此活动退出时,您的 onActivityResult() 方法将使用给定的 requestCode 调用。使用否定的 requestCode 与调用 startActivity(Intent) 相同(该活动不作为子活动启动)。

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

于 2012-04-25T19:32:08.933 回答