问题标签 [device-owner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - QR code provisioning into Device Owner mode fails
I have a device running Android 7.1.1 and I am building sample DPC app in preparation for making a COSU kiosk app but I keep running into an error in the provisioning setup.
Steps I take:
- Factory reset the device
- Successfully scan the code from the QR provisioning screen
- App downloads successfully and checksum check passes. I know this because at first it kept failing at wrongly generated checksum.
- Installing app message passes without error.
- The message changes to "Setting the device owner..." and immediately fails with the generic message "Oops! Couldn't set up your device..."
I've put simple Toast
in DeviceAdminReceiver
subclass into onEnabled
and onProvisioningComplete
functions. The Toast in onEnabled
is displayed, the one in onProvisioningComplete
is unsuprisingly not.
The app is signed with proper release certificate, setting the device owner through adb works fine as well which also leads me to belief that component name and manifest is ok otherwise adb command would fail as well.
QR code text:
Any ideas what might be wrong ? I've run out of mine. Thanks for any input !
android - 通过 NFC 注册 Lollipop (5.1) 的自助服务终端设备
我想问一下,是否有人尝试通过编程的 NFC 标签在 Android 上注册 Kiosk 设备。
我找到了这篇很棒的博客文章,并按照里面的步骤进行操作。但我什至无法开始注册过程,在 Android 5.1、7.1.2 和 8.0 上尝试过。
我尝试了博客文章的原始方式,仅替换了 token,但 DOWNLOAD_LOCATION 帖子的原始链接似乎已失效,所以我从Android 开发人员那里获取了链接,我还计算了新的 SHA-1 校验和,它应该是 837C87477198CB2DFBFB6CA44829AF2921F3544B 用于下载的最新版本的 apk . 从 Microsoft Intune 门户插入我的注册令牌。 根据 Lollipop 默认情况下未加密且注册设备无法插入 AC 或未收取 70% 费用这一事实跳过加密。
我使用 NFC Tools PRO (android app) 为application/com.android.managedprovisioning创建了新的自定义数据记录,并在下面插入了行。
然后我向 NFC 标签写行,没有错误,一切看起来都很好。
阅读标签显示所有内容都正确写入。
我的设备在恢复出厂设置后启动,我将 NFC 标签放置在设备的 NFC 天线上。
过程立即失败,并显示“糟糕!无法设置您的设备。请联系您的 IT 部门。”
其他注册方法(二维码,...)很好,但我需要 Android 5.1 的 NFC 方法,因为此版本的 android 不支持其他注册方法。
每一个回复都将受到高度赞赏。
java - 在企业的设备所有者应用程序中,flag.DISALLOW_FACTORY_RESET 是否也阻止硬重置恢复?
对于企业的设备所有者应用程序,是否flag.DISALLOW_FACTORY_RESET
也阻止硬重置恢复?
DevicePolicyManager.addUserRestriction(ComponentName, DISALLOW_FACTORY_RESET)
android - 以编程方式使用命令将应用程序包制作为设备所有者
我一直在努力以设备所有者的身份制作软件包,但没有发现任何成功。我已经为我的设备植根了。我正在使用这个命令。
ShellExecuter 片段
MyDeviceAdminReceiver 片段
device_admin_reciever 片段
如果有人可以建议,我想以编程方式使用命令或任何其他方式使我的应用程序包的根设备所有者。
android - 清除设备所有者应用程序数据
我正在开发一个设备所有者应用程序(通过 QR 码安装)在一种情况下,我需要切换用户,这涉及清除与应用程序相关的所有数据,如果该应用程序不是“设备所有者应用程序”我会用安卓
但由于它是“设备所有者应用程序”,我收到以下错误:
java.lang.SecurityException:无法清除受保护包的数据
是否有任何其他 api / 方法来清除设备所有者应用程序的数据?
更新:
感谢@CommonsWare,我打电话context.deleteDatabase("db_name")
给所有数据库并像这样清除了所有 SharedPreferences
这已经足够了......
android - Android:如何以设备所有者身份通过设备策略管理器禁用播放保护?
当我尝试从我的设备所有者/配置应用程序中使用 PackageInstaller 服务下载和安装第 3 方应用程序时,Google Play 在安装应用程序之前会显示一个提示。我可以接受或拒绝,它不会影响安装,但会暂停安装,直到给出答案,所以我想隐藏它。
android - 多用户设备中的 Android ContentProvider 和服务
在多用户Android 设备中,当我们切换到其他次要用户(使用 Ui 或以编程方式)时,Android 是否会保持任何主要用户组件处于活动状态,例如启动ContentProviders或后台服务
android - 寻找无需恢复出厂设置即可更新设备所有者应用的解决方案
我有一个自助服务终端模式的 Android 非 Playstore 平板电脑应用程序(我们一直在使用 adb shell install 在设备上安装它)。Kiosk 模式是通过多种 DevicePolicyManager 方法的组合、设置用户限制、最后通过使用以下 shell 命令将其设置为设备所有者来实现的:
这很好用,很好地满足了我客户的需求,让用户除了使用我们的应用程序来执行他们的工作之外,不能在平板电脑上做任何事情。当我使用设备所有者创建此信息亭版本时,我“假设”我将能够像过去一样将未来的更新推送到应用程序(从而避免在每次后续更新之前必须将设备重置为出厂设置),方法是使用以下shell 命令停止应用程序,卸载它,然后安装新版本:
不幸的是,我现在了解到,您不能简单地卸载设备所有者应用程序,或者在现有应用程序的基础上安装新版本,而您的应用程序中一开始就存在多个项目。因此,经过多次折腾,我设法编写了一个解决方案,以便在我的新版本中实现,希望这个场景在未来能够成功运行,尽管它需要恢复出厂设置才能部署到设备上。我很好奇我是否错过了一种更简单的方法来实现这一点,因为在安装这个“新的和改进的”版本之前必须强制恢复出厂设置并不能很好地适应用户群。
我的解决方案包括以下组合:
1-将 android:testOnly="true" 添加到清单中,以便可以在安装更新之前关闭设备所有者
2-向应用程序添加一个新活动(DeactivateDeviceOwnerActivity),该活动可以使用 adb shell 命令启动,该命令反转一些 DevicePolicyManager 设置并执行
3-将我的停止/卸载/重新安装 shell 命令更改为以下内容:
这一切都很好,我已经测试过这个版本的应用程序没有问题地推动进一步的更新。我的问题是,这一切都是多余的吗?有没有更简单的方法来实现这一点?我最担心的是我可能忽略了一些可以帮助我避免强制恢复出厂设置的东西。
我在这里找到的所有解决方案基本上都表明应用程序的当前版本不能降级为非设备所有者状态,因为缺少 android:testOnly="true" 清单属性并且缺少已经嵌入的活动来完成工作新的 DeactivateDeviceOwnerActivity 将要做的事情。
我已经看到提到了一个 dpm 命令“remove-active-admin”,但该命令似乎不存在于我拥有的任何 Android 安装中......此外,它需要存在 manifest 属性才能正常工作. 此命令是否已从 adb 命令集中删除?提到它的帖子已经很老了。
感谢您提供的任何见解。确认我对我的情况的“我现在几乎搞砸了”的评估也会有所帮助。我讨厌那种只见树木不见森林的唠叨感觉。
android - 未在 Android M 上清除设备所有者
我编写了一个设备所有者信息亭应用程序,我想在该应用程序上删除设备所有者状态,这样我就可以卸载它而无需将设备恢复出厂设置。以下适用于牛轧糖和奥利奥,但不适用于三星平板电脑的棉花糖。
我如何对设备所有者进行编码的细节:
要将应用程序设置为设备所有者,我在安装应用程序后运行此 adb shell 命令:
然后,当我尝试删除设备所有者状态并卸载应用程序时,我正在运行以下 shell 命令:
DeactivateDeviceOwnerActivity 是我的应用程序中的一个 Activity,其中包含以下用于清除设备所有者状态的代码:
奇怪的是,我的 Activity 正在显示 clearDeviceOwnerApp 调用有效的 Toast,但是当我立即运行卸载命令时,我得到“失败 [DELETE_FAILED_DEVICE_POLICY_MANAGER]”的返回,所以显然设备所有者没有被清除我的应用程序。
有谁知道 Marshmallow 和后续 API 之间的任何具体差异,关于设备所有权或 DevicePolicyManager 会导致此代码(适用于 Nougat 和 Oreo)在 Marshmallow 上不起作用?当我发出启动命令让 DeactivateDeviceOwnerActivity 清除设备所有者时,我正在查看系统日志,但没有看到任何表明发生任何异常的信息。任何帮助,将不胜感激。
android - 使用设备所有者将系统应用设置为锁定任务包
我的应用程序是系统签名的设备所有者应用程序,我想将自己的应用程序设置为锁定任务模式。
但是,DevicePolicyManager setLockTaskPackages 中的方法不适用于系统应用程序,即使它是同一个应用程序调用。
我正在寻找一种解决方法,我可以将我的同一个应用程序设置为系统签名的锁定任务模式