Предоставление автоматического разрешения не работает с Android 14Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Предоставление автоматического разрешения не работает с Android 14

Сообщение Anonymous »

Я отвечаю за небольшие проблемы в нашей компании с приложением для Android, поскольку я не такой уж хороший программист, я системный администратор, но я вроде универсал.
Прежде чем мы рассмотрим возможность оплаты программиста, я хочу исправить эта проблема у меня самого. «Мне тоже было бы полезно это исправить», — сказал мой шеф-повар =) С момента выпуска Android 14 наше автоматическое предоставление разрешения после включения специальных возможностей приложения больше не работает. Нас около 130 человек, и более половины из них теперь имеют Android 14.
При включении специальных возможностей для приложения появляются диалоговые окна разрешений, в которых должны автоматически предоставляться три разрешения. Разрешения: Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS.
Мы записываем в нашу базу данных всегда новые контакты на телефоны и нам нужно их читать в особых случаях, главное просто чтобы записать контакты на телефонах.
Для автоматического предоставления разрешений я буду использовать идентификатор ресурса кнопки.
Поскольку это больше не работает на Android 14, я попытался использовать текст кнопок, которые следует нажимать, когда найден текст типа «Грант». На двух языках я написал текст кнопок, но это тоже не работает.
Я не понимаю, почему это больше не работает на A14, поскольку идентификатор ресурса диалога разрешений Кнопка «Предоставить» такая же и не изменилась по сравнению с A13.
Я просмотрел идентификаторы ресурсов с помощью инструмента uiautomatorview, который присутствует в Android SDK.
Я вижу, что он «пытается» нажмите на кнопку, когда появляется диалоговое окно разрешений, но этого не происходит.
Вот несколько фрагментов кода для этого: он написан на Kotlin.
для одного файла у меня установлены разрешения:

Код: Выделить всё

val PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_CONTACTS,
Manifest.permission.WRITE_CONTACTS,
а это код щелчка:

Код: Выделить всё

private fun AccessibilityServiceQ.click(it: AccessibilityNodeInfo, clickOnlyIfVisible: Boolean = false): Boolean {
runCatching {
if (clickOnlyIfVisible && it.isVisibleToUser) {
Log.v(TAG, "ACC::onAccessibilityEvent: click - $it")
return it.performAction(AccessibilityNodeInfo.ACTION_CLICK)
} else if (!clickOnlyIfVisible) {
Log.v(TAG, "ACC::onAccessibilityEvent: click - $it")
return it.performAction(AccessibilityNodeInfo.ACTION_CLICK)
}
}
}
это код идентификаторов ресурсов кнопок, которые следует нажимать при обнаружении:

Код: Выделить всё

private fun permissionClick(packageName: String, currentActivity: String, listWithNameOfApp: Set): Boolean {
val buttonIds = listOf(
"com.android.permissioncontroller:id/permission_allow_foreground_only_button",
"com.android.permissioncontroller:id/permission_allow_button")
а вот код, который отвечает за щелчок при появлении диалогового окна разрешения: `
findAccessibilityNodeInfosByText здесь только потому, что я тоже попробовал, как я сказал, использовать текст кнопки, вы можете игнорировать это

Код: Выделить всё

        fun clickOnButton(selector: String, findByText: Boolean): Boolean {
val nodes = if (findByText) {
eventRootInActiveWindow?.findAccessibilityNodeInfosByText(selector)
} else {
eventRootInActiveWindow?.findAccessibilityNodeInfosByViewId(selector)
}
return nodes?.firstOrNull { it.isClickable }?.let { node ->
click(node).also { node.recycle() }
} ?: false

Я так думаю. Почему это не работает на Android 14, даже если идентификатор ресурса тот же?
Кто-нибудь может мне помочь, пожалуйста? Мы хотим сделать приложение легко устанавливаемым и доступным, чтобы не возникало проблем и вопросов, мы знаем все, что многие люди не знают, что они делают.
Надеемся на любую помощь, если она поможет. даже возможно, конечно
с уважением

Подробнее здесь: https://stackoverflow.com/questions/782 ... android-14
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»