次のリンクをクリックして、ADBを使用してアプリのデバイス所有者を作成しました。 アプリをデバイス所有者にする方法
しかし、今、これを元に戻すことはできません。
デバイス管理タブでは、このオプションは無効になっています。このアプリの値を変更することはできません。
プログラムで設定解除できます。デバイス所有者アプリケーションでこの関数を呼び出す必要があります
DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
dpm.clearDeviceOwnerApp(context.getPackageName());
詳細については see
更新:このメソッドはAPIレベル26で廃止されました
AndroidManifest.xmlでAndroid:testOnly = "true"属性を指定することにより、アプリをアンインストールしたり、管理者を削除したりできます。
_adb Shell dpm remove-active-admin package.name/MyDeviceAdminReceiver
_
しかし、実稼働デバイスでは、この属性を含めるべきではなく、アプリは非テスト管理者になります。その時点から、ワイプ/工場出荷時設定にリセットせずに、それを削除したり、アプリケーションをアンインストールしたりすることはできません。
ありがたいことに、アプリが同じキーで署名され、バージョンコードが同等以上の場合、更新を実行できます。
_adb install -r path/to/kiosk.apk
_
プロダクションデバイスの管理者とアプリケーションをプログラムで削除する場合は、いくつかの新しい変更を加えて再インストールする必要があります。まず、device_admin_receiver.xmlで以下の権限__<wipe-data \>
_を持っている場合、プログラムでデータを消去できます。
devicePolicyManager.wipeData(DevicePolicyManager.WIPE_RESET_PROTECTION_DATA)
この権限がない場合、新しいバージョンはLockTaskを起動してデフォルトのホームアプリリストからそのパッケージを削除しないでください:
devicePolicyManager.clearPackagePersistentPreferredActivities(adminComponentName, packageName)
その後、手動で設定に移動して、ワイプ/工場出荷時のリセットを実行できます。
次のADBシェルコマンドを使用して、デバイスの所有者を削除できます。
adb Shell dpm remove-active-admin ComponentInfo{}
アクティブな管理者を無効にします。管理者は、マニフェストのアプリケーションでAndroid:testOnlyを宣言している必要があります。これにより、デバイスとプロファイルの所有者も削除されます
唯一の解決方法は、デバイスをフラッシュまたは工場出荷時の状態にリセットすることです。