在 Android 上更新设备所有者应用的政策

Posted

技术标签:

【中文标题】在 Android 上更新设备所有者应用的政策【英文标题】:Update policy on a device owner app on Android 【发布时间】:2017-10-26 20:13:40 【问题描述】:

我在 android 上有一个设备所有者应用程序,并且想在 device-admin.xml 文件中添加一个附加策略。这是必需的,因为我想禁用键盘保护上的摄像头,这需要在 device-admin.xml 中提供<disable-keyguard-features />。该应用程序最初是使用NFC安装的,可以通过本地保存的apk文件安装新版本的应用程序,该文件可以从我们的私人服务器下载,但是,安装新版本的应用程序时似乎没有影响将<disable-keyguard-features /> 添加到 device-admin.xml,因为我们在调用时遇到 SecurityException

aDevicePolicyManager.setKeyguardDisabledFeatures(aDeviceAdmin,
    DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA);

现在,如果我们使用 NFC 重新配置具有所有者应用的新版本的设备,那么一切顺利,但我正在寻找一种方法来将此更改应用到现有应用,如何实现?

换句话说,我们如何在不重新配置的情况下更新 Android 设备上设备所有者应用的政策要求?

【问题讨论】:

添加新的使用策略后,您必须再次调用DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN 活动。现在在生产中,这显示了“添加设备管理员”对话框。我认为设备所有者可以自动授予策略。如何让它静默更新策略? 【参考方案1】:

您不能向 device-admin.xml 添加新策略并更新应用程序以激活所需的策略。

您必须重新申请权限才能激活权限。

因此,要么采用版本代码的更新处理机制,要么按照link 中的说明检查权限是否存在。

并且不要忘记添加对取决于新管理策略的任何代码或函数行的检查。

如果您觉得每次尝试运行代码时检查是否已获得权限很昂贵,请在onEnabled 回调您的DeviceAdminReceiver 时设置一个标志并重置它

【讨论】:

当我重新请求权限时,所有权限都将被重新请求,有什么方法可以只请求新权限而不是所有已经请求的权限。??? 不幸的是,它将再次显示完整列表。这种机制的目的是为了防止开发人员在用户不知情的情况下获得额外的权限。

以上是关于在 Android 上更新设备所有者应用的政策的主要内容,如果未能解决你的问题,请参考以下文章

更新 Android 9 SELinux 政策以允许通过系统应用进行 OTA 更新

后台服务未在 Android Management API 中的完全托管设备上运行

Android国内应用的隐私政策问题,WebView加载Html界面获取设备信息问题的解决方案

我的应用违反了 Android 广告 ID 政策 [重复]

违反设备和网络滥用政策

Android Studio拒绝在我的手机上构建和安装任何应用程序