diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cec0787cb..c33bb0580 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,6 +58,10 @@
android:name="android.hardware.gamepad"
android:required="false"/>
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/aurora/store/data/receiver/DeviceOwnerReceiver.kt b/app/src/main/java/com/aurora/store/data/receiver/DeviceOwnerReceiver.kt
new file mode 100644
index 000000000..cc5fb4184
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/data/receiver/DeviceOwnerReceiver.kt
@@ -0,0 +1,5 @@
+package com.aurora.store.data.receiver
+
+import android.app.admin.DeviceAdminReceiver
+
+class DeviceOwnerReceiver : DeviceAdminReceiver()
diff --git a/app/src/main/java/com/aurora/store/util/Preferences.kt b/app/src/main/java/com/aurora/store/util/Preferences.kt
index b500207b6..3046943e6 100644
--- a/app/src/main/java/com/aurora/store/util/Preferences.kt
+++ b/app/src/main/java/com/aurora/store/util/Preferences.kt
@@ -47,6 +47,7 @@ object Preferences {
const val PREFERENCE_DOWNLOADS_CACHE_TIME = "PREFERENCE_DOWNLOADS_CACHE_TIME"
const val PREFERENCE_AUTO_DELETE = "PREFERENCE_AUTO_DELETE"
+ const val PREFERENCE_INSTALLATION_DEVICE_OWNER = "PREFERENCE_INSTALLATION_DEVICE_OWNER"
const val INSTALLATION_ABANDON_SESSION = "INSTALLATION_ABANDON_SESSION"
const val PREFERENCE_TOS_READ = "PREFERENCE_TOS_READ"
diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt
index d69f78d69..f1895eb7f 100644
--- a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt
+++ b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt
@@ -19,6 +19,9 @@
package com.aurora.store.view.ui.preferences
+import android.app.admin.DevicePolicyManager
+import android.content.Context
+import android.content.DialogInterface
import android.content.pm.PackageManager
import android.os.Bundle
import android.view.View
@@ -38,6 +41,7 @@ import com.aurora.store.util.CommonUtil
import com.aurora.store.util.Log
import com.aurora.store.util.PackageUtil
import com.aurora.store.util.Preferences
+import com.aurora.store.util.Preferences.PREFERENCE_INSTALLATION_DEVICE_OWNER
import com.aurora.store.util.save
import com.aurora.store.view.custom.preference.AuroraListPreference
import com.topjohnwu.superuser.Shell
@@ -72,6 +76,27 @@ class InstallationPreference : BasePreferenceFragment() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences_installation, rootKey)
+
+ findPreference(PREFERENCE_INSTALLATION_DEVICE_OWNER)?.apply {
+ val packageName = context.packageName
+ val devicePolicyManager =
+ context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
+
+ isVisible = devicePolicyManager.isDeviceOwnerApp(packageName)
+ setOnPreferenceClickListener {
+ context.showDialog(
+ context.getString(R.string.pref_clear_device_owner_title),
+ context.getString(R.string.pref_clear_device_owner_desc),
+ { _: DialogInterface, _: Int ->
+ @Suppress("DEPRECATION")
+ devicePolicyManager.clearDeviceOwnerApp(packageName)
+ activity?.recreate()
+ },
+ { dialog: DialogInterface, _: Int -> dialog.dismiss() }
+ )
+ true
+ }
+ }
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a2d19f86c..030046b12 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -439,4 +439,9 @@
Keep downloads cache
How long to preserve downloads cache (failed, cancelled and completed), in hours
+
+
+ Clear device owner
+ Removes Aurora Store as the device owner app
+ This will revoke session installer\'s permission to silently install app. Proceed with clearing device ownership?
diff --git a/app/src/main/res/xml/device_owner_receiver.xml b/app/src/main/res/xml/device_owner_receiver.xml
new file mode 100644
index 000000000..af18155c5
--- /dev/null
+++ b/app/src/main/res/xml/device_owner_receiver.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/app/src/main/res/xml/preferences_installation.xml b/app/src/main/res/xml/preferences_installation.xml
index ab19bcb5a..3343c3da7 100644
--- a/app/src/main/res/xml/preferences_installation.xml
+++ b/app/src/main/res/xml/preferences_installation.xml
@@ -41,6 +41,13 @@
app:summary="@string/pref_abandon_session_desc"
app:title="@string/pref_abandon_session" />
+
+