通过ADB激活设备管理员


Answers:


6

这是不可能的。专门编写设置代码来防止这种情况。最接近的是在“ 设置”应用中打开设备管理设置”页面。您可以执行以下操作:

adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"

感谢Dan,请adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity"
稍加

在大多数Shell中,该命令将仅启动Settings而不是Device Administration设置页面。这是伊齐对原因的解释
Dan Hulme

禁用呢?那可能吗?
android开发人员

5

在没有root的情况下测试并在Android 7.0上工作:

adb shell
dpm set-active-admin --user current com.company.foo.bar.package/.the.Admin.Reciever

要查找已安装软件包的管理接收者,请对adb shell命令使用以下命令并查看输出:

adb shell
pm dump com.company.foo.bar.package | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

举一个真实的例子,以下是用于将IBM Maas360 Android客户端激活为设备管理员的命令:

adb shell
pm dump com.fiberlink.maas360.android.control | grep ' filter' | cut -d ' ' -f 12 | sort | uniq

Output:
…
com.fiberlink.maas360.android.control/.receivers.GoogleCampaignReceiver
com.fiberlink.maas360.android.control/.receivers.LocalEventReceiver
com.fiberlink.maas360.android.control/.receivers.Maas360DeviceAdminReceiver  <-- This is the one I want
com.fiberlink.maas360.android.control/.receivers.Maas360SecondaryDeviceAdminReceiver
…


Set Device Admin:    
dpm set-active-admin --user current com.fiberlink.maas360.android.control/.receivers.Maas360DeviceAdminReceiver

有用!这必须是公认的答案!我有一个问题,是否可以在该命令中添加其他内容?我需要在管理员激活后立即要求激活Samsung Knox许可证,并且我想额外传递许可证的密钥(因此我不必将其存储在代码或设备中)
Cliff Burton

1

是的,前提是您具有root用户访问权限。您必须在文件中添加应用程序的接收者和策略标志/data/system/device_policies.xml。例如,要使Tasker成为设备管理员,请在上述文件中添加以下几行,

对于Android 5.x:</policies>如果系统中已启用设备管理员,请删除最后一行。只需在带有string的行之后添加文件中的行<policies setup-complete="true">

<admin name="net.dinglisch.android.taskerm/net.dinglisch.android.taskerm.MyDeviceAdminReceiver">
<policies flags="8" />
</admin>
</policies>

对于Android 4.2.1:</policies>如果系统中已启用设备管理员,请删除最后一行。只需在带有string的行之后添加文件中的行<policies>

<admin name="net.dinglisch.android.taskerm/net.dinglisch.android.taskerm.MyDeviceAdminReceiver">
<policies flags="8" />
</admin>
</policies>

重新启动设备以使更改生效。

(需要Busybox)您可以使用sedecho或任何您喜欢的命令来使用这些行写入文件。对于任何帮助,请在此处查看我的答案:如何使用Tasker为特定应用启用设备管理员?


0

可能的。您可以使用android的新工具UI-Automator单击系统上的任何视图或按钮并与之交互,包括点击“激活”以进行设备管理员。就是这样:

  1. 使UI-Automator运行。(转到“配置您的开发环境”并设置一个新的Java项目)。
  2. 编写一些代码以与您的首选项列表进行交互,然后单击“激活”。例:

    UiScrollable settingsItem = new UiScrollable(new UiSelector()。className(“ android.widget.ListView”));; UiObject listButton = settingsItem.getChildByText(new UiSelector()。className(“ android.widget.LinearLayout”),“启用设备管理”); listButton.click(); (new UiObject(new UiSelector()。text(“ Activate”))))。clickAndWaitForNewWindow(); me.celebrateWith(new Beer());

  3. 编译: ant build

  4. 推送jar文件: adb -d push bin/LookoutTest.jar /data/local/tmp/
  5. 启动您的设置活动: adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
  6. 运行自动化: adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
  7. 派对。

即使设备当前的语言环境不是英语,此功能也可以使用吗?
android开发人员

0

您可以从Android Studio将设备设置为所有者。首先转到Android Sdk中平台工具上的adb位置,然后运行adb shell命令。我已经给出了完整的路径,您可以在更改adb路径和程序包名称时根据需要进行调整

C:\Users\Owner\AppData\Local\Android\Sdk\platform-tools>adb shell dpm set-device-owner package-name/.MyDeviceAdminReceiver

接口是MyDeviceAdminReceiver。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.