67

デバイス ポリシー マネージャー API ドキュメントAndroid 5.0 の概要の両方で、デバイス オーナー アプリについて言及されています。アプリをデバイス所有者として設定するにはどうすればよいですか?

編集: root 化と NFC 以外の方法はありますか? 可能であれば共有してください。

4

5 に答える 5

72

アプリをデバイス所有者アプリとして設定するには、実際には NFC とルート化以外の方法があります。からdpmコマンド ライン ツールを使用できますadb shell

使用法 :

usage: dpm [subcommand] [options]
usage: dpm set-device-owner <COMPONENT>
usage: dpm set-profile-owner <COMPONENT> <USER_ID>

dpm set-device-owner: Sets the given component as active admin, and its package as device owner.
dpm set-profile-owner: Sets the given component as active admin and profile owner for an existing user.

更新:ユーティリティdpmは実際には非常に単純です。その目的は、 Device/Profile 所有者アプリ を参照するdevice_owner.xmlunderという名前の新しいファイルを作成することです。/data/system/device_owner.xml

次に、Android プラットフォームはこのファイルを読み取って、どのアプリケーションがDevice OwnerまたはProfile Owner Appと見なされるかを確認します。

ルート化されたデバイスでは、実際にこのファイルを自分で作成できますが、dpmツールがそれを行っているため、それを使用することをお勧めします (DRY 原則):

たとえば、次のRuntime.exec()コマンドを使用します。

Runtime.getRuntime().exec("dpm set-device-owner com.foo.deviceowner/.DeviceAdminRcvr");

また、このツールは、ユーザーにアカウントが設定されていない場合にのみ機能することに注意してください ( [設定] > [アカウント]でアカウントが設定されていないことを確認してから使用してください)。

ソースと詳細については、Android シェル コマンド ツール: Device Policy Managerを参照してください。

于 2015-01-12T19:28:26.633 に答える
19

デバイスの root である場合は、この方法に従ってデバイスの所有者になることができます。

device_owner.xmlまず、次の内容のファイルを作成します。

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<device-owner package="your.owner.app.package.id" name="Your app name" />

次の手順を実行します

  1. adb push device_owner.xml /sdcard/

  2. adb shell

  3. su

  4. cp /sdcard/device_owner.xml /data/system/

  5. cd /data/system/

  6. chown system:system device_owner.xml

  7. リブート

注:デバイスを再起動する前に、デバイスの所有者にしようとしているアプリケーションがインストールされていることを確認してください。そうしないと、起動アニメーションが無限に発生します。

于 2014-11-10T08:26:59.607 に答える
-4

試してみたところ、dpmコマンドには実際のデバイス (Samsung T550 など) でのルート権限が必要です。そうしないと、SecurityException. adb shellAndroid エミュレーターでのみ root を付与します。したがって、最初にデバイスをルート化する必要があります。

于 2016-05-14T15:58:20.227 に答える