Отправляет email-рассылки с помощью сервиса Sendsay

За 2018-07-14

[prg] Re[3]: Как перехватывать обработку нажатия на ссылки с talkback?

Приветствую всех.

> Подскажите мне пожалуйста все варианты обработки клика по ссылкам,даже
> если они не подходят для моей ситуации,учитывая,что это html текст в
> textView и что talkback распознаёт эти ссылки.

Клик всегда обрабатывается в обработчике onClick того View, по которому этот
клик осуществлен.
TalkBack перехватывает сенсорный и клавиатурный ввод и может сам выполнять
какие-то специфические действия (которые его разработчики считают
необходимыми) и тогда этот клик может не попасть в целевой View.
Так что для полного понимания происходящего вам необходимо исследовать
исходники TalkBack.

В итоге ситуация распадается на два варианта: клик обработан в TalkBack
(если он активен), либо в View (если у него есть обработчик onClick
дефолтный или ваш).
Поскольку оба варианта имеют доступ к текстовому содержимому, то выделить
ссылку в позиции курсора не будет сложной задачей (при помощи регулярных
выражений или иным способом). Затем полученная ссылка отправляется системе
при помощи intent с значением action равным VIEW, а уже сама система
подбирает подходящее приложение из тех, в манифесте которых указан
intent-filter для конкретного типа url.
В чистой системе, кроме браузера, на http-ссылки ничего не зарегистрировано,
поэтому сразу стартует браузер. Если будут другие кандидаты, то система
предложит пользователю список приложений для работы с такими ссылками.
Например, чтобы ваша активность появлялась в списке приложений для открытия
http-ссылок, добавьте к активности вашего приложения intent-filter примерно
такого вида:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"
/>
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>

Другой вариант (который правильнее назвать "костыль") -- это
трансформировать внешний вид ссылок так, чтобы TalkBack не распознавал в них
url (опять же для успеха необходимо уточнить способ, каким TalkBack
распознает url в обычном тексте).
Есть класс Linkify, который используется для выделения ссылок в TextView, но
помимо этого он позволяет изменить их внешний вид.
http://developer.alexanderklimov.ru/android/theory/linkify.php

Это позволит избежать вмешательства со стороны TalkBack и реализовать ваш
собственный обработчик для щелчка.

Успехов. Анатолий.

   "i_chay" 2018-07-14 16:36:03 (#3573442)

[prg] Re[2]: Как перехватывать обработку нажатия на ссылки с talkback?

Здравствуйте Анатолий. Вы писали
> Формулируйте конкретнее: что вы хотите получить при щелчке по ссылке в
> вашей
> программе?
Я хочу понять,на какую ссылку я нажал и выполнить свой код. В общем это
тоже самое,что обработка клика по view,только обрабатывать клик по view
я умею,а вот с обработкой клика по ссылкам в textView с html текстом я
очень долго мучаюсь и не знаю,возможно ли это. Ещё Вы пишете
> Какой View содержит ссылку? Это действительно ссылка или обычный текст
Ссылку содержит textView,причём talkback определяет эту ссылку как
ссылка,при этом в тексте может быть несколько таких
ссылок,соответственно мне нужно обрабатывать клик по каждой из
ссылок,т.е когда я с помощью посимвольной навигации дохожу до конкретной
ссылки и делаю по ней двойной таб. Ещё,если это реально,меня устроит
вариант,чтобы когда я нахожу список ссылок в talkback и делаю двойной
таб по одной из сылок,выполнялся мой код,хотя это совсем не обязательно.
Главное,чтобы я мог обработать клик по конкретной ссылке в textView и
выполнить мой метод. Ещё Вы пишете
> Это ссылка на какой-то один конкретный тип файлов или любой url?
Это ссылка на любой url. Ещё Вы пишете
> От этого зависит, есть ли подходящий вариант или нет.
Подскажите мне пожалуйста все варианты обработки клика по ссылкам,даже
если они не подходят для моей ситуации,учитывая,что это html текст в
textView и что talkback распознаёт эти ссылки. Если подходящих вариантов
нет,напишите мне пожалуйста об этом,чтобы я знал,что это невозможно.
Заранее благодарю Вас за помощь.

   2018-07-14 15:27:17 (#3573437)

[prg] Re: Как перехватывать обработку нажатия на ссылки с talkback?

Приветствую всех.

> Подскажите пожалуйста,как изменить поведение в моей программе при клике
> на ссылку,или при её выборе из меню ссылок в talkback,чтобы при этом
> клик срабатывал в talkback

Формулируйте конкретнее: что вы хотите получить при щелчке по ссылке в вашей
программе?
Какой View содержит ссылку? Это действительно ссылка или обычный текст,
который TalkBack распознает по шаблону как ссылку?
Это ссылка на какой-то один конкретный тип файлов или любой url?
От этого зависит, есть ли подходящий вариант или нет.
Успехов. Анатолий.

   "i_chay" 2018-07-14 06:42:17 (#3573386)