Как мы можем добавить новую опцию контекстного меню во все приложения, которые будут отображаться, когда пользователь выбирает текст и долго нажимает на него?

Как мы можем добавить новую опцию контекстного меню во все приложения, которые будут отображаться, когда пользователь выбирает текст и долго нажимает на него?

Допустим, я хочу предоставить пользователю возможность находить значение слова из автономного словаря, не выходя из контекста своего приложения.

  1. В общем, чтобы добавить контекстное меню, мы должны сделать registerForContextMenu для определенного объекта TextView. Учитывая, что это должно работать для всех приложений, как нам добавить параметры контекстного меню?
  2. Как прочитать выделенный текст?
  3. Как отобразить всплывающий элемент управления поверх текущего открытого приложения?

Я совершенно новичок в разработке Android. Поэтому любые подробные ответы или указатели на образцы будут очень полезны. Я предполагаю, что это должно быть возможно сделать, поскольку приложения «определить», «определить автономный словарь», похоже, делают что-то близкое к этому, если не совсем то же самое. В этих приложениях вы можете выделить текст и нажать «Копировать», чтобы увидеть значение текста.

Все поиски, которые я сделал, показали мне примеры того, как отображать контекстное меню для текстового представления или как получить выбранный элемент списка в обработчике контекстного меню. Но это бесполезно.

Заранее спасибо.


person cp1    schedule 21.02.2017    source источник


Ответы (1)


Я думаю, это может вам помочь, говорит, как создать контекстное меню и получить выделенный текст. с этим вам просто нужно сделать намерение словаря, дающего этот выделенный текст в качестве дополнительного:

https://nitesh.morajkar.com/how-to-select-and-share-text-with-intents-in-android/

И если вы хотите использовать, например, переводчик Google для определений, это может помочь:

Android API поддерживает словарные приложения

РЕДАКТИРОВАТЬ: после некоторого поиска по обоим решениям этот вопрос находится здесь: https://medium.com/google-developers/custom-text-selection-actions-with-action-process-text-191f792d2999#.h6377bc8j

person Joao Jorge    schedule 21.02.2017
comment
В предоставленной вами ссылке мы, кажется, делаем это: tv = (TextView) findViewById(R.id.textview); tv.setCustomSelectionActionModeCallback(...) Не означает ли это, что мы добавляем контекстное меню только к элементу TextView в нашем приложении? Как это будет работать для всех других приложений? Допустим, я хочу иметь возможность показать новую опцию контекстного меню в Adobe PDF Reader. Это не сработает? - person cp1; 22.02.2017
comment
я думаю, что вы не можете ... контекстное меню предназначено для уникального приложения, вы не можете изменить код в других приложениях ... для этого другое приложение должно было выполнить намерение для определенного действия, как в этом случае, когда вы выбираете текст, и ваше приложение способно обрабатывать это действие, которое заключается в поиске нового определения ... поэтому я думаю, что вы не можете сделать это с другими приложениями ... - person Joao Jorge; 22.02.2017
comment
То, что вы говорите, кажется правильным. Имеет смысл не иметь возможности расширять функции в других приложениях, если только они явно не разрешат нам это делать. - person cp1; 22.02.2017
comment
Но, как я уже говорил в вопросе ранее, есть это приложение под названием «определить», функция которого состоит в том, чтобы показать значение текста, который пользователь копирует на панели уведомлений. Существует близкий вариант этого, называемый «определить - автономный словарь», который показывает значение скопированного текста в виде всплывающего окна в текущем приложении (например, Adobe pdf reader). Как он может делать что-то в этом роде? Предоставляет ли опция копирования в буфер обмена в Android возможность что-то сделать? Каким образом «define — автономный словарь» может отображать всплывающее окно в контексте другого приложения? - person cp1; 22.02.2017
comment
о, я вижу, может быть, вам нужно что-то вроде этого, взгляните .. developer.android.com/guide/topics/ui/notifiers/ - person Joao Jorge; 22.02.2017
comment
Хм.. не совсем. Ссылка говорит об обычных уведомлениях. Например, что-то вроде уведомления WhatsApp. WhatsApp показывает сообщение с уведомлением, когда вы получаете сообщение. Когда вы нажимаете на уведомление, в приложении вызывается действие, которое будет обрабатывать всплывающее окно с нужным вам диалогом. Здесь уведомление вызывается WhatsApp, а при нажатии на него также обрабатывается тем же приложением. Я ищу что-то, что будет работать в приложениях. - person cp1; 22.02.2017
comment
после того, как вы, наконец, поймете, что вы хотите, и после небольшого поиска вам понадобится приложение с разрешением рисовать поверх других приложений. Пример этой функции и объяснение: medium.com/@rotxed/ androidpolice .com/2015/09/07/ И вам нужно сделать намерение запросить это разрешение, которое вы нашли здесь: stackoverflow.com/questions/32061934/ - person Joao Jorge; 23.02.2017
comment
Теперь вам просто нужно искать, как это сделать, как я, чтобы вы нашли то, что вам нужно - person Joao Jorge; 23.02.2017
comment
Нашел то, что искал: https://medium.com/google-developers/custom-text-selection-actions-with-action-process-text-191f792d2999#.ytta438f7. За все усилия, которые вы предприняли, я хотел бы отдать вам должное, приняв ваш пост в качестве ответа. Не могли бы вы отредактировать его, чтобы он содержал эту ссылку. - person cp1; 24.02.2017