我已经按照 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/