デバイス ポリシー マネージャー API ドキュメントとAndroid 5.0 の概要の両方で、デバイス オーナー アプリについて言及されています。アプリをデバイス所有者として設定するにはどうすればよいですか?
編集: root 化と NFC 以外の方法はありますか? 可能であれば共有してください。
デバイス ポリシー マネージャー API ドキュメントとAndroid 5.0 の概要の両方で、デバイス オーナー アプリについて言及されています。アプリをデバイス所有者として設定するにはどうすればよいですか?
編集: root 化と NFC 以外の方法はありますか? 可能であれば共有してください。
アプリをデバイス所有者アプリとして設定するには、実際には 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.xml
underという名前の新しいファイルを作成することです。/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を参照してください。
デバイスの 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" />
次の手順を実行します
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
リブート
注:デバイスを再起動する前に、デバイスの所有者にしようとしているアプリケーションがインストールされていることを確認してください。そうしないと、起動アニメーションが無限に発生します。
試してみたところ、dpm
コマンドには実際のデバイス (Samsung T550 など) でのルート権限が必要です。そうしないと、SecurityException
. adb shell
Android エミュレーターでのみ root を付与します。したがって、最初にデバイスをルート化する必要があります。