LoginSignup
30
31

More than 5 years have passed since last update.

DeviceOwnerによるアプリのサイレントインストール・アンインストール

Last updated at Posted at 2015-06-19

過去に書いたPackageInstaller.sessionによるサイレントインストール(ユーザ操作不要のバックグラウンドインストール)が、AndroidMからDevicePolicyManagerで利用できるようになった。ただし、利用するにはDeviceOwnerである必要がある。

Android M; API Overview

Silent install and uninstall of apps by Device Owner: A Device Owner can now >silently install and uninstall applications using the PackageInstaller

DeviceAdmin

AndroidではいわゆるMDM機能の実現のためにDeviceAdminという概念が存在する。
DeviceAdminの権限では端末のリモートワイプや強制ロック、カメラ等のデバイス利用制限が実行でき、
標準ではAndroidDeviceManagerというアプリがインストールされている。
これは設定>セキュリティ>端末管理アプリから確認可能であり、ここでチェックを入れるとそのアプリがDeviceAdminアプリになる。

DeviceAdminアプリのつくりかたは他に譲るとして、ここではDeviceOwnerの説明をする。

DeviceOwner

DeviceOwnerは、特権DeviceAdminとでもいうべき存在で、DeviceAdminよりも多くの、そして強力な端末操作APIが利用できる。その一つがサイレントインストールなのだ。

ただし、DeviceAdminが一端末に複数存在しうるのに対し、DeviceOwnerは端末に一アプリのみが許されている模様。
(DeviceOwnerと似た概念でProfileOwnerというものも存在するが、ここでは割愛する)

DeviceOwnerになるためには、端末初回起動時にAndroidBeamによるプロビジョニング作業が必要であり、いまのところ一般ユースではほとんど関係なさそうである。
(今後各キャリアプリインされれば関係するかもしれない)
方法は気が向いたら別途ポストする。

開発時は以下のdpmコマンドを利用することで可能。
ComponentNameにはインストール済みのDeviceAdminのコンポーネント名を入れる。
このとき、端末にGoogleアカウントなどのアカウントが登録されていると失敗するので要注意。

adb shell dpm set-device-owner <ComponentName>

DeviceOwnerの情報は、端末の/data/system/device_owner.xmlに記載されている。
このファイルを自分で作成し端末を再起動することでもDeviceOwnerになることが可能である。

サイレントインストール・アンインストール

http://qiita.com/machortz/items/5206773c6ece286e52a3
DeviceOwnerでこれを実行するだけである。

サンプルをGithubに置いておく。

サイレントインストール・アンインストールが完了すると、以下のNotificationが表示される。
ここでの対象はfirefoxである。

ssinstall.png

ssuninstall.png

30
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
31