- Status: Fixed
- Priority: Normal
- Resolution: Fixed
- Platform: Android
- Affects version 1.18.5.0
- Fix version: 1.18.6.0
Здравствуйте.
Для того, чтобы вернуть accessibility, то-есть чтобы работали события касания некоторых контролов со включенными специальными возможностями (TalkBack), по совету, полученному здесь же, на форуме, я применяю следующую конструкцию:
type
TfgOpenAndroidControl = class(TfgAndroidControl);
var NativeControl: TfgOpenAndroidControl;
...
NativeControl := TfgOpenAndroidControl(fObj.Handle.NativeControl);
NativeControl.FOptions := NativeControl.FOptions - [TfgAndroidControlOption.CustomTouchProcessing];
Но теперь обнаружилось, что длительные касания, после такого вот воздействия на контрол, приводят к краху приложения в Android 14. Мне удалось запросить у пользователя bagreport, и вот, полагаю, из-за чего сыр-бор:
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: java.lang.NullPointerException: Expected to unbox a 'boolean' primitive type but was returned null
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at $Proxy17.onLongClickUseDefaultHapticFeedback(Unknown Source)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.view.View.performLongClickInternal(View.java:8131)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.view.View.performLongClick(View.java:8085)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.widget.TextView.performLongClick(TextView.java:15544)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.view.View.performLongClick(View.java:8103)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.view.View$CheckForLongPress.run(View.java:31848)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:958)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:230)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.os.Looper.loop(Looper.java:319)
08-26 17:21:52.326 10393 24016 24016 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8919)
В более ранних версиях Android, до 11 (включительно), всё нормально. Как оно будет в Android 12, 13, остаётся лишь гадать...
Хотя, когда-то я здесь же писал, что данная конструкция бесполезна и даже вредна на Android 5.0, и пытался получить ясность, с какой версии её следует применять, а с какой не следует, но увы...
Впрочем, спасся этим:
if (TJBuild_VERSION.SDK_INT>TJBuild_VERSION_CODES.LOLLIPOP) then
Но опять-таки белым пятном остаётся Android 5.1. Очень прошу, разъясните этот момент. Раз уж нет полной поддержки accessibility, то хочется хотя бы с костылями разобраться, чтобы они работали... И упомянутый крах - это моя вина или кто-то другой виноват?
Спасибо!
Recommended Comments
Create an account or sign in to comment