デバイスポリシーマネージャーAPIドキュメント および Android 5.0の概要 は、どちらもデバイス所有者アプリについて何か言及しています。アプリをデバイス所有者として設定するにはどうすればよいですか?
編集:応援とNFC可能であれば共有してください以外の方法はありますか.
実際には、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
デバイスのルートである場合は、この方法に従ってデバイスの所有者になることができます。
まず、ファイルを作成しますdevice_owner.xml
次のコンテンツ:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<device-owner package="your.owner.app.package.id" name="Your app name" />
次の手順を実行します
adb Push device_owner.xml /sdcard/
adb Shell
su
cp /sdcard/device_owner.xml /data/system/
cd /data/system/
chown system:system device_owner.xml
リブート
注:デバイスを再起動する前に、デバイスの所有者にしようとしているアプリケーションをインストールしたことを確認してください。そうしないと、起動アニメーションが無限に続きます。
SDKドキュメントに隠されていたDevicePolicyManager
というsetProfileOwner
メソッドを呼び出すことにより、反射を使用することもできます。
キャンセルすることを忘れないでください。そうしないと、Google Playと競合することになります;)
更新:
私のAndroid 7.1.2セットトップボックス(AOSFおよびルート化))で、時間の経過とともに進化したものがいくつか見つかりました。
exec("dpm set-device-owner ...")
は、<uses-permission Android:name="Android.permission.MANAGE_DEVICE_ADMINS" />
はAndroidManifest.xmlで宣言されています。しかし、それは他の問題、それについての詳細をもたらします ここ 。/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>