ない、とDevicePolicyManager
にsetPermissionGrantState
機能を呼び出している間、私はデバイス管理APIの周りの仕事は、私は、デバイス管理APIを介して自分の道を働いていた自身のプロファイル
Unable to start receiver com.xx.admin.receivers.AdminReceiver: java.lang.SecurityException: Admin ComponentInfo{com.xx/com.xx.admin.receivers.AdminReceiver} does not own the profile.
を得た私は、特定の機能があることを理解デバイス/プロファイル所有者のみが実行できます。さらにNFC provisioning and dpm command
がその方法です。しかし、これは私のアプリを配布するときに進めたいことはほとんどありません。この許可を自動化する方法はありますか?ルートの有無にかかわらずプロフィールの所有権を持つアプリを許可するようにユーザーに要求することはできますか?
はここ
class AdminReceiver : DeviceAdminReceiver() {
var manager: DevicePolicyManager? = null
override fun onEnabled(context: Context?, intent: Intent?) {
super.onEnabled(context, intent)
manager = getManager(context)
manager!!.setPermissionGrantState(getComponentName(context!!)
, "com.abc.app"
, Manifest.permission.WRITE_EXTERNAL_STORAGE
, DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED)
}
fun getComponentName(context: Context): ComponentName {
return ComponentName(context.applicationContext, AdminReceiver::class.java)
}
}
APIを抽象化しても、デバイスを工場出荷時のリセットにする必要がないため、デバイスを所有していない場合や、Googleに配布する必要がある場合再生 – humblerookie
実際、工場出荷時のリセットなしでデバイス全体のデバイス所有者特権を得ることはできません。これは、デバイス所有者がデバイスを完全に制御できるため、セキュリティ機能です。ただし、デバイス内に仕事用プロファイルを作成することはできますが、制御するアプリケーションだけで、プロフィール所有者の権限が与えられます。 – Fred