Ativar administrador de dispositivos via ADB


9

É possível ativar o Administrador de dispositivos via comando ADB em vez de tocar

"Configuração -> Segurança -> Administradores de dispositivos -> Selecionar aplicativo -> Ativar"

no computador de mão?

Se é possível, como?


Você deve aceitar a resposta de 'a', pois ela funciona perfeitamente !!
Cliff Burton

Respostas:


6

Não é possível. O código de configurações foi escrito especificamente para evitar isso. O mais próximo que você pode chegar é abrir a página de configurações de administração do dispositivo no aplicativo Configurações . Você pode fazer isso com:

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

Graças Dan, Little correção: ela deve ser adb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" Sem aspas simples
marengga

Na maioria dos shells, esse comando inicia apenas as Configurações , não a página de configurações de administração do dispositivo . Aqui está a explicação de Izzy sobre o porquê .
Dan Hulme

E quanto a desativar? isso é possível?
desenvolvedor android

5

Testado e funcionando no Android 7.0 sem raiz:

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

Para encontrar o receptor do administrador de um pacote instalado, use o seguinte para adb shell command e revise a saída:

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

Para dar um exemplo do mundo real, aqui está o comando usado para ativar o cliente Maas360 Android da IBM como um administrador de dispositivo:

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

FUNCIONA! Essa deve ser a resposta aceita! Eu tenho uma pergunta, é possível adicionar um extra a esse comando? Eu preciso solicitar a ativação de licença Samsung Knox logo após a ativação administrador e eu gostaria de passar a chave do licenciamento como um extra (por isso não tem que armazená-lo no meu código ou no meu dispositivo)
Cliff Burton

1

Sim, desde que você tenha acesso root. Você precisaria adicionar o destinatário do aplicativo e o sinalizador de política no arquivo /data/system/device_policies.xml. Por exemplo, para ativar o Tasker como administrador do dispositivo, adicione as seguintes linhas no arquivo mencionado,

Para Android 5.x: remova a última linha com </policies>se já houver um administrador de dispositivos habilitado no sistema. Simplesmente adicione as linhas no arquivo após a linha com string <policies setup-complete="true">.

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

Para Android 4.2.1: remova a última linha com </policies>se já houver um administrador de dispositivos habilitado no sistema. Simplesmente adicione as linhas no arquivo após a linha com string <policies>.

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

Reinicie o dispositivo para que as alterações entrem em vigor.

( Busybox obrigatório) Você pode usar sedou echoqualquer comando com o qual se sinta à vontade para gravar o arquivo com essas linhas. Para qualquer ajuda, consulte minha resposta aqui: Como habilitar o administrador do dispositivo para aplicativos específicos usando o Tasker?


0

Isso é possível. Você pode usar a nova ferramenta UI-Automator do android para clicar e interagir com qualquer visualização ou botão do sistema, incluindo "Ativar" para o administrador do dispositivo. Aqui está como:

  1. Coloque o UI-Automator em execução. (vá para "Configure seu ambiente de desenvolvimento" e configure um novo projeto java).
  2. Escreva um código para interagir com sua lista de preferências e clique em "Ativar". Exemplo:

    UiScrollable settingsItem = new UiScrollable (novo UiSelector (). ClassName ("android.widget.ListView")); UiObject listButton = settingsItem.getChildByText (novo UiSelector (). ClassName ("android.widget.LinearLayout"), "Ativar administrador do dispositivo"); listButton.click (); (novo UiObject (novo UiSelector (). texto ("Ativar")))). clickAndWaitForNewWindow (); me.celebrateWith (new Beer ());

  3. Compile-o: ant build

  4. Empurre o arquivo jar: adb -d push bin/LookoutTest.jar /data/local/tmp/
  5. Inicie sua atividade de configurações: adb shell am start -S "'com.android.settings/.Settings\$DeviceAdminSettingsActivity'"
  6. Execute a automação: adb -d shell uiautomator runtest LookoutTest.jar -c DALaunch
  7. Festa.

Isso funcionará mesmo que o local atual do dispositivo não seja inglês?
desenvolvedor android

0

você pode definir o dispositivo como proprietário no Android Studio. Primeiro, vá para o local adb, que está em Platform-tools no Android Sdk e, em seguida, execute o comando adb shell. Forneci o caminho completo e você pode ajustar conforme sua necessidade ao alterar o caminho adb e o nome do pacote

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

MyDeviceAdminReceiver é a interface.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.