Answers:
这是不可能的。专门编写设置代码来防止这种情况。最接近的是在“ 设置”应用中打开“ 设备管理设置”页面。您可以执行以下操作:
adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity"
在没有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
是的,前提是您具有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)您可以使用sed
或echo
或任何您喜欢的命令来使用这些行写入文件。对于任何帮助,请在此处查看我的答案:如何使用Tasker为特定应用启用设备管理员?
这是可能的。您可以使用android的新工具UI-Automator单击系统上的任何视图或按钮并与之交互,包括点击“激活”以进行设备管理员。就是这样:
编写一些代码以与您的首选项列表进行交互,然后单击“激活”。例:
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());
编译: ant build
adb -d push bin/LookoutTest.jar /data/local/tmp/
adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
您可以从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。