web-dev-qa-db-ja.com

アプリをデバイス所有者にする方法は?

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

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

55

実際には、NFCおよびrooting以外の方法で、アプリケーションをデバイス所有者アプリとして設定します。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.
_

UPDATE:dpmユーティリティは実際には本当に簡単です。その目的は、デバイス/プロファイル所有者アプリを参照する_device_owner.xml_の下に_/data/system/device_owner.xml_という新しいファイルを作成することです。

Androidプラットフォームはこのファイルを読み込んで、どのアプリケーションがデバイス所有者またはプロファイル所有者アプリと見なされるかを確認します。

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

例:Runtime.exec()コマンド経由:

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

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

ソースおよび詳細情報 at Android Shellコマンドツール:Device Policy Manager

54
Florent Dupont

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

まず、ファイルを作成します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. リブート

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

13
Spynet

SDKドキュメントに隠されていたDevicePolicyManagerというsetProfileOwnerメソッドを呼び出すことにより、反射を使用することもできます。

キャンセルすることを忘れないでください。そうしないと、Google Playと競合することになります;)

0
Ektos974

更新:

私のAndroid 7.1.2セットトップボックス(AOSFおよびルート化))で、時間の経過とともに進化したものがいくつか見つかりました。

  1. exec("dpm set-device-owner ...")は、<uses-permission Android:name="Android.permission.MANAGE_DEVICE_ADMINS" />はAndroidManifest.xmlで宣言されています。しかし、それは他の問題、それについての詳細をもたらします ここ
  2. ファイル /data/system/device_policy.xmlは表示されなくなりました。代わりに、今では/data/system/device_policy_2.xmlとスキーマはわずかに異なります。ランニング dpm set-device-owner com.myDomain.myPackage/.myComponent adbシェルを介して、ファイルを次のように生成します。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<root>
    <device-owner package="com.myDomain.myPackage" name="" component="com.myDomain.myPackage/com.myDomain.myPackage.myComponent" userRestrictionsMigrated="true" />
</root>
0
Gary Kumfert