Aktywuj administratora urządzenia za pomocą ADB


9

Czy możliwe jest aktywowanie administratora urządzenia za pomocą polecenia ADB zamiast dotykania

„Ustawienia -> Bezpieczeństwo -> Administratorzy urządzeń -> Wybierz aplikację -> Aktywuj”

na palmtopie?

Jeśli to możliwe, w jaki sposób?


Powinieneś rozważyć zaakceptowanie odpowiedzi, ponieważ działa ona idealnie !!
Cliff Burton,

Odpowiedzi:


6

To nie jest możliwe. Kod ustawień został specjalnie napisany, aby temu zapobiec. Najbliżej możesz przywołać stronę ustawień Administrowania urządzeniem w aplikacji Ustawienia . Możesz to zrobić za pomocą:

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

Dzięki Dan, mała korekta: powinno być adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" Bez pojedynczego cytatu
marengga

W większości powłok to polecenie uruchamia po prostu ustawienia , a nie stronę ustawień administracyjnych urządzenia . Oto wyjaśnienie dlaczego Izzy .
Dan Hulme

Co z wyłączaniem? czy to jest możliwe?
programista Androida

5

Testowane i działające na Androidzie 7.0 bez roota:

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

Aby znaleźć odbiorcę administratora zainstalowanego pakietu, użyj następującego polecenia do polecenia powłoki adb i przejrzyj dane wyjściowe:

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

Aby podać przykład ze świata rzeczywistego, oto polecenie użyte do aktywacji klienta Maas360 dla Androida IBM jako administrator urządzenia:

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

TO DZIAŁA! To musi być zaakceptowana odpowiedź! Mam jedno pytanie, czy można dodać do tego polecenia dodatkowe? Muszę poprosić o aktywację licencji Samsung Knox zaraz po aktywacji administratora i chciałbym przekazać klucz licencji jako dodatkową (więc nie muszę go przechowywać w kodzie ani na urządzeniu)
Cliff Burton

1

Tak, pod warunkiem, że masz uprawnienia roota. Musisz dodać odbiornik aplikacji i flagę zasad do pliku /data/system/device_policies.xml. Na przykład, aby włączyć Tasker jako administrator urządzenia, dodaj następujące wiersze do tego pliku,

W systemie Android 5.x: Usuń ostatni wiersz z, </policies>jeśli w systemie jest już włączony administrator urządzenia. Po prostu dodaj linie w pliku po linii z łańcuchem <policies setup-complete="true">.

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

W Androidzie 4.2.1: Usuń ostatni wiersz z, </policies>jeśli w systemie jest już włączony Administrator urządzenia. Po prostu dodaj linie w pliku po linii z łańcuchem <policies>.

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

Uruchom ponownie urządzenie, aby zmiany odniosły skutek.

( Wymagany Busybox ) Możesz użyć sedlub echodowolnego polecenia, które ci odpowiada, aby zapisać plik za pomocą tych linii. Aby uzyskać pomoc, zobacz moją odpowiedź tutaj: Jak włączyć administratora urządzenia dla określonych aplikacji za pomocą Taskera?


0

To jest możliwe. Możesz użyć nowego narzędzia Android UI-Automator, aby klikać i wchodzić w interakcje z dowolnym widokiem lub przyciskiem w systemie, w tym naciskając „Aktywuj” dla administratora urządzenia. Oto jak:

  1. Uruchom UI-Automator . (przejdź do „Konfiguruj środowisko programistyczne” i skonfiguruj nowy projekt Java).
  2. Napisz kod, aby wejść w interakcję z listą preferencji i kliknij „Aktywuj”. Przykład:

    UiScrollable settingsItem = new UiScrollable (new UiSelector (). ClassName („android.widget.ListView”)); UiObject listButton = settingsItem.getChildByText (nowy UiSelector (). ClassName („android.widget.LinearLayout”), „Enable Device Admin”); listButton.click (); (nowy UiObject (nowy UiSelector (). tekst („Aktywuj”))). clickAndWaitForNewWindow (); me.celebrateWith (new Beer ());

  3. Skompiluj to: ant build

  4. Wciśnij plik jar: adb -d push bin/LookoutTest.jar /data/local/tmp/
  5. Uruchom aktywność związaną z ustawieniami: adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
  6. Uruchom automatyzację: adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
  7. Przyjęcie.

Czy to zadziała, nawet jeśli bieżące ustawienia regionalne urządzenia nie są w języku angielskim?
programista Androida

0

możesz ustawić urządzenie jako właściciela w Android Studio. Najpierw przejdź do lokalizacji adb, która znajduje się w Platform-tools w Android Sdk, a następnie uruchom polecenie powłoki adb. Podałem pełną ścieżkę i możesz zmienić swój wymóg po zmianie ścieżki adb i nazwy pakietu

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

MyDeviceAdminReceiver to interfejs.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.