ADB経由でデバイス管理者をアクティブ化


9

タップする代わりにADBコマンドを介してデバイスアドミニストレーターをアクティブにすることは可能ですか

「設定->セキュリティ->デバイス管理者->アプリの選択->アクティベート」

ハンドヘルドで?

可能であれば、どうやって?


完全に機能するため、вaᴎᴅᴏƞвєнᴎєƞの回答を受け入れることを検討してください
クリフバートン

回答:


6

不可能です。設定コードは、これを防ぐために特別に書かれています。最も近いのは、設定アプリのデバイス管理設定ページを表示することです。これは次の方法で行うことができます。

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

おかげでダン、少し訂正:それはadb shell am start -S "com.android.settings/.Settings\$DeviceAdminSettingsActivity" 一重引用符なしである必要があり ます
marengga 2013年

ほとんどのシェルでは、このコマンドは[ デバイス管理の設定]ページではなく、単に[設定]を開始します。これがIzzyの理由の説明です
Dan Hulme 2013年

無効にするのはどうですか?それは可能ですか?
Android開発者

5

ルートなしで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

できます!これは受け入れられる答えでなければなりません!質問が1つあります。そのコマンドにエキストラを追加することは可能ですか?管理者のアクティベーションの直後にSamsung Knoxライセンスのアクティベーションをリクエストする必要があり、ライセンスのキーを追加として渡したいので(コードやデバイスに保存する必要がないため)
Cliff Burton

1

はい、あなたがルートアクセスを持っている限り。ファイルにアプリのレシーバーとポリシーフラグを追加する必要があります/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を使用して特定のアプリのデバイス管理者を有効にする方法は?


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")、 "Enable Device Admin"); 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のPlatform-toolsにあるadbの場所に移動してから、adbシェルコマンドを実行します。フルパスを指定しました。adbパスとパッケージ名を変更すると、要件に合わせて調整できます

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

MyDeviceAdminReceiverはインターフェースです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.