#android
#Android
Вопрос:
я корейский студент, поэтому прошу прощения за то, что плохо говорю по-английски..
есть ли какой-либо способ запустить «Настройки Android -> Приложения -> Специальный доступ -> PIP», используя intent??
Из-за этого я не мог сомкнуть глаз.
Ответ №1:
Обычно вы можете запускать настройки, которые хотите использовать, следующим образом (в Kotlin)
startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS))
К сожалению, константа для настройки «картинка в картинке» скрыта. Это означает, что нет никаких способов сделать это надежно. Я имею в виду, что нет надежного решения, которое работало бы на каждой версии API и на каждом устройстве. Однако следующий фрагмент кода будет работать на некоторых устройствах, таких как эмулятор Android.
startActivity(Intent("android.settings.PICTURE_IN_PICTURE_SETTINGS"))
Ответ №2:
Я опаздываю с этим ответом и хочу добавить на экран настройки параметров для конкретного приложения. Вам нужно передать идентификатор пакета приложения во втором параметре.
startActivity(Intent("android.settings.PICTURE_IN_PICTURE_SETTINGS", Uri.parse("package:${packageName}")))
Кроме того, вы можете проверить, включен ли / отключен PIP в приложении, используя приведенный ниже метод.
private fun hasPipPermission(): Boolean {
val appOps = getSystemService(APP_OPS_SERVICE) as AppOpsManager?
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
appOps?.unsafeCheckOpNoThrow(AppOpsManager.OPSTR_PICTURE_IN_PICTURE, android.os.Process.myUid(), packageName) == AppOpsManager.MODE_ALLOWED
} else {
appOps?.checkOpNoThrow(AppOpsManager.OPSTR_PICTURE_IN_PICTURE, android.os.Process.myUid(), packageName) == AppOpsManager.MODE_ALLOWED
}
} else {
false
}
}