java - 为什么重新启动具有限制 UserManager.DISALLOW_USB_FILE_TRANSFER 使用的应用程序的设备会导致该设备无法使用?

标签 java android android-studio android-6.0-marshmallow kiosk-mode

我已经按照 Android 开发人员中的本指南创建了一个信息亭应用程序 - Lock Task Mode 。每当设备完成启动时,该应用程序就可以自动启动,但问题是每当我重新启动/关闭并启动具有此限制的设备时,设备将无法启动,它会卡在设备的品牌 Logo 屏幕中,并且具有将其恢复出厂设置即可再次工作。

dpm.addUserRestriction(componentName, UserManager.DISALLOW_USB_FILE_TRANSFER);

如果我不重新启动设备,则此限制工作正常,但在某些时候需要关闭设备。如何在启动时正确设置此限制而不破坏设备?

最佳答案

我找到了解决该问题的方法。我创建了一个用于设备关闭的 BroadcastReceiver,并在设备重新启动时删除限制并重新启用限制。


public class ShutDownReceiver extends BroadcastReceiver {

    private static final String TAG = "ShutDownReceiver";
    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();

        if (Intent.ACTION_SHUTDOWN.equals(action)){

            DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
            ComponentName cn = AdminReceiver.getComponentName(context);

            if (dpm != null && dpm.isDeviceOwnerApp(context.getPackageName())) {
                //This is a custom method
                setUserRestriction(dpm, cn, UserManager.DISALLOW_USB_FILE_TRANSFER, false);
            }
            Toast.makeText(context, "Shutting Down", Toast.LENGTH_SHORT).show();
            Log.d(TAG, "onReceive: ACTION_SHUTDOWN");
        }
    }
}

在 list 中添加代码

        <receiver android:name=".receiver.ShutDownReceiver">
            <intent-filter>
                <action android:name="android.intent.action.ACTION_SHUTDOWN" />
                <action android:name="android.intent.action.QUICKBOOT_POWEROFF" />
            </intent-filter>
        </receiver>

关于java - 为什么重新启动具有限制 UserManager.DISALLOW_USB_FILE_TRANSFER 使用的应用程序的设备会导致该设备无法使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57744066/

相关文章:

android - 可以使用 ListView 进行内联编辑吗?

java - 如何从 IO 异常中检测 404 响应代码?

java - Android 中的问答游戏无法获得分数

java - 将多个流优化为单个循环

java - setMultiChoiceItems 和我的数组

Java方法调用格式

安卓工作室 - "Android framework is detected in the project"

android - Gradle项目同步失败,如何解决?

java - While 循环创建永无止境的输入循环

java - 无法在 JRE7 中打开字符串