Show warning when enabling applock on phones that cannot launch the grant-usage-stats-window.
This commit is contained in:
parent
65955fd7dc
commit
cdd7f42532
@ -2,12 +2,14 @@ package exh.ui.lock
|
|||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.app.AppOpsManager
|
import android.app.AppOpsManager
|
||||||
|
import android.content.ActivityNotFoundException
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||||
@ -61,7 +63,20 @@ fun notifyLockSecurity(context: Context,
|
|||||||
.negativeText("Cancel")
|
.negativeText("Cancel")
|
||||||
.positiveText("Ok")
|
.positiveText("Ok")
|
||||||
.onPositive { _, _ ->
|
.onPositive { _, _ ->
|
||||||
context.startActivity(Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS))
|
try {
|
||||||
|
context.startActivity(Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS))
|
||||||
|
} catch(e: ActivityNotFoundException) {
|
||||||
|
XLog.e("Device does not support USAGE_ACCESS_SETTINGS shortcut!")
|
||||||
|
MaterialDialog.Builder(context)
|
||||||
|
.title("Grant permission manually")
|
||||||
|
.content("Failed to launch the window used to grant the usage stats permission. " +
|
||||||
|
"You can still grant this permission manually: go to your phone's settings and search for 'usage access'.")
|
||||||
|
.positiveText("Ok")
|
||||||
|
.onPositive { dialog, _ -> dialog.dismiss() }
|
||||||
|
.cancelable(true)
|
||||||
|
.canceledOnTouchOutside(false)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.autoDismiss(true)
|
.autoDismiss(true)
|
||||||
.cancelable(false)
|
.cancelable(false)
|
||||||
@ -74,13 +89,13 @@ fun notifyLockSecurity(context: Context,
|
|||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||||
fun hasAccessToUsageStats(context: Context): Boolean {
|
fun hasAccessToUsageStats(context: Context): Boolean {
|
||||||
try {
|
return try {
|
||||||
val packageManager = context.packageManager
|
val packageManager = context.packageManager
|
||||||
val applicationInfo = packageManager.getApplicationInfo(context.packageName, 0)
|
val applicationInfo = packageManager.getApplicationInfo(context.packageName, 0)
|
||||||
val appOpsManager = context.getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager
|
val appOpsManager = context.getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager
|
||||||
val mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, applicationInfo.uid, applicationInfo.packageName)
|
val mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, applicationInfo.uid, applicationInfo.packageName)
|
||||||
return (mode == AppOpsManager.MODE_ALLOWED)
|
(mode == AppOpsManager.MODE_ALLOWED)
|
||||||
} catch (e: PackageManager.NameNotFoundException) {
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
return false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user