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" /> + +