java - 为什么重新启动具有限制使用 UserManager.DISALLOW_USB_FILE_TRANSFER 的应用程序的设备会导致设备无法使用?
问题描述
我已经按照 android 开发人员中的本指南创建了一个信息亭应用程序 -锁定任务模式。应用程序可以在设备完成启动时自动启动,但问题是每当我重新启动/关闭并启动具有此限制的设备时,设备将无法启动它会卡在设备的品牌徽标屏幕中并且有将其恢复出厂设置以再次工作。
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");
}
}
}
在清单中添加代码
<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>
推荐阅读
- asp.net - InvalidOperationException:尝试激活时无法解析类型“Microsoft.AspNetCore.Identity.UI.Services.IEmailSender”的服务
- eclipse - 将 jar 文件上传到 Azure Web App 的问题
- javascript - 在 JavaScript 中打印具有给定长度的钻石的代码
- sql - 方程需要在一个 group by 语句中吗?
- python - HTML 使用 BeautifulSoup 解析拥挤的网页
- javascript - 为 quickbooks .iif 文件创建制表符分隔文件
- javascript - 在 Google Scripts 中将 JS 变量传递给 HTML
- delphi - 绘制的矩形总是在创建下一个时被擦除
- javascript - 如何检查 jQuery DataTable 的 ajax 调用是否已返回数据
- sql - 如何在脚本加载器中将四位儒略(yddd)转换为公历(mm/dd/yy等)?