เป็นไปได้ไหมที่จะเปิดใช้งาน Device Administrator ผ่านคำสั่ง ADB แทนการแตะ
"การตั้งค่า -> ความปลอดภัย -> ผู้ดูแลระบบอุปกรณ์ -> เลือกแอพ -> เปิดใช้งาน"
บนมือถือ?
ถ้าเป็นไปได้อย่างไร
เป็นไปได้ไหมที่จะเปิดใช้งาน Device Administrator ผ่านคำสั่ง ADB แทนการแตะ
"การตั้งค่า -> ความปลอดภัย -> ผู้ดูแลระบบอุปกรณ์ -> เลือกแอพ -> เปิดใช้งาน"
บนมือถือ?
ถ้าเป็นไปได้อย่างไร
คำตอบ:
มันเป็นไปไม่ได้. รหัสการตั้งค่าถูกเขียนขึ้นเป็นพิเศษเพื่อป้องกันสิ่งนี้ สิ่งที่ใกล้เคียงที่สุดที่คุณสามารถทำได้คือเปิดหน้าการตั้งค่าการดูแลอุปกรณ์ในแอพการตั้งค่า คุณสามารถทำได้ด้วย:
adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity"
โดยไม่ต้องอ้างคำพูดเดียว
ทดสอบและทำงานบน 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
เพื่อให้เป็นตัวอย่างในโลกแห่งความจริงนี่คือคำสั่งที่ใช้เพื่อเปิดใช้งานไคลเอนต์ Maas360 Android ของ IBM ในฐานะผู้ดูแลอุปกรณ์:
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
ใช่โดยมีเงื่อนไขว่าคุณได้รูทการเข้าถึง /data/system/device_policies.xml
คุณจะต้องเพิ่มตัวรับแอปและธงนโยบายในแฟ้ม ตัวอย่างเช่นหากต้องการเปิดใช้งานTaskerในฐานะผู้ดูแลระบบอุปกรณ์ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์ดังกล่าว
สำหรับ Android 5.x:ลบบรรทัดสุดท้ายด้วย</policies>
หากมีผู้ดูแลอุปกรณ์เปิดใช้งานอยู่ในระบบแล้ว <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>
หากมีผู้ดูแลอุปกรณ์เปิดใช้งานอยู่ในระบบแล้ว <policies>
เพียงแค่เพิ่มบรรทัดในไฟล์หลังจากบรรทัดกับสตริง
<admin name="net.dinglisch.android.taskerm/net.dinglisch.android.taskerm.MyDeviceAdminReceiver">
<policies flags="8" />
</admin>
</policies>
รีบูตอุปกรณ์เพื่อให้การเปลี่ยนแปลงมีผล
(ไม่จำเป็นต้องใช้Busybox ) คุณสามารถใช้sed
หรือecho
คำสั่งใดก็ได้ที่คุณต้องการเขียนไฟล์ด้วยบรรทัดเหล่านั้น สำหรับความช่วยเหลือใด ๆ โปรดดูคำตอบของฉันที่นี่: วิธีการเปิดใช้งานผู้ดูแลระบบอุปกรณ์สำหรับแอพที่ระบุโดยใช้ Tasker
สิ่งนี้เป็นไปได้ คุณสามารถใช้เครื่องมือ UI-Automator ใหม่ของ android เพื่อคลิกและโต้ตอบกับมุมมองหรือปุ่มใด ๆ บนระบบรวมถึงการกดปุ่ม "เปิดใช้งาน" สำหรับผู้ดูแลระบบอุปกรณ์ นี่คือวิธี:
เขียนรหัสเพื่อโต้ตอบกับรายการค่ากำหนดของคุณแล้วคลิก "เปิดใช้งาน" ตัวอย่าง:
UiScrollable settingsItem = ใหม่ UiScrollable (ใหม่ UiSelector (). className ("android.widget.ListView")); UiObject listButton = settingsItem.getChildByText (ใหม่ UiSelector (). className ("android.widget.LinearLayout"), "เปิดใช้งาน Device Admin"); listButton.click (); (UiObject ใหม่ (ใหม่ UiSelector (). ข้อความ ("เปิดใช้งาน"))) คลิก clickAndWaitForNewWindow (); me.celebrateWith (เบียร์ใหม่ ());
รวบรวมมัน 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 ก่อนอื่นให้ไปที่ตำแหน่ง adb ซึ่งอยู่ที่ Platform-tools ใน Android Sdk จากนั้นรันคำสั่ง adb shell ฉันให้เส้นทางเต็มและคุณสามารถปรับตามความต้องการของคุณเมื่อเปลี่ยนเส้นทาง adb และชื่อแพคเกจ
C:\Users\Owner\AppData\Local\Android\Sdk\platform-tools>adb shell dpm set-device-owner package-name/.MyDeviceAdminReceiver
MyDeviceAdminReceiver เป็นอินเทอร์เฟซ