Как вызвать щелчок или отправить событие при совместном использовании данных в других приложениях на Android?

Я пытаюсь поделиться данными из своего приложения с другим приложением, например смс или любым другим приложением. У меня есть приложение, где мне нужно отправить или поделиться некоторыми данными в приложениях, таких как sms или fb messenger. Используя эту ссылку, я могу открыть приложение и добавить данные в текстовое поле, используя этот код:

  Intent sendIntent = new Intent();
  sendIntent.setPackage("com.sms or fb");
  sendIntent.setAction(Intent.ACTION_SEND);
  sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
  sendIntent.setType("text/plain");
  startActivity(sendIntent);

Используя это приложение, я могу открыть другое приложение и добавить значение в текстовую область, мой вопрос в том, есть ли способ, с помощью которого я могу запускать щелчок или отправить событие для отправки автоматического сообщения в другое приложение, например, смс facebook. Если да, то как я видел приложение Google, где я использовал свой голос, чтобы отправить привет моему контакту whatsapp, чтобы этот метод был там, приложение Google может отправлять сообщение и запускать события, используя мой голос. Мой вопрос в том, как я могу инициировать отправку события с помощью моего кода Android. Если корневая система там, я также могу ее использовать.

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

Ответ 1

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

Ответ 2

Как говорит @Томас. Нет официального способа рассказать другому о том, что делать. Для приложения Google 3 приложения открывают свои Intent для вызова определенного действия в своем приложении из Google. Вероятно, вы могли бы изучить, как это происходит.

Но есть некоторые возможные решения, такие как app exposing Intent для запуска действия из стороннего приложения.

Ответ 3

Я предполагаю, что вам нужно захватить намерение, которое голосовое приложение google запускает приложение whatsapp/facebook и использует то же намерение с вашего приложения. Чтобы проверить, какие намерения запускаются, используйте adb logcat -b events.

Однако я чувствую, что даже если вы запускаете одно и то же намерение, проверка безопасности в приёмном приложении может помешать ему сделать это.

Вам нужно проверить, есть ли у facebook/whatsapp общедоступные API-интерфейсы, чтобы это сделать. Если это не возможно.

Другой подход. Используйте Uiautomator, чтобы выполнить щелчок на кнопке других приложений. Но это сложно реализовать, поскольку вам может понадобиться отдельное приложение, которое прослушивает события и запускает код автоматизации.

Ответ 4

Я не знаю, работает ли это, но есть приложение SMSButtler, которое автоматически отвечает на приемные SMS. Хорошо, что приложение является открытым исходным кодом, и вы можете загрузить код из этого Github post.

Я не могу дать вам ответ о вашей проблеме Whatsapp, но я проанализировал код, и я получил этот метод оттуда:

Для автоматической отправки SMS-сообщения сначала необходимо создать SMSManager

SmsManager sms = SmsManager.getDefault();

а затем просто отправьте текстовое сообщение

sms.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);

Параметры:

  • destinationAddress адрес для отправки сообщения
  • scAddress - это адрес центра обслуживания или null для использования текущего SMSC по умолчанию
  • text тело сообщения для отправки
  • sentIntent Если не NULL, этот PendingIntent передается, когда сообщение успешно отправлено или не выполнено.
  • deliveryIntent, если не NULL, этот PendingIntent равен  когда сообщение доставляется получателю.  raw pdu отчета о состоянии находится в расширенных данных ( "pdu" ).

Важно: Использование этого метода требует, чтобы ваше приложение android.Manifest.permission_SEND_SMS.

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

Ответ 5

Существует сайт/приложение под названием IFTTT (если это так), который может управлять другими sservices и отправлять вам оповещения/электронные письма /etc. Ссылка: https://ifttt.com/

Ответ 6

Если вы хотите, чтобы другие приложения запускали события в ваших приложениях, общий способ включает два шага:.

  • Ваше приложение должно предоставить API, следующий по Android.

  • Другие приложения взаимодействуют с вашим приложением, потребляя вышеуказанный API.

Тип API и его реализация зависят от данных и функций приложения. Например, вы можете использовать Content Provider, Intend и Broadcast для предоставления API.

Ответ 7

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

Ответ 8

Пожалуйста, следуйте официальным инструкциям по андроиду (перечисленным ниже):

Создание приложений с общим доступом к ресурсам: https://developer.android.com/training/building-content-sharing.html

Отправка простых данных в другие приложения: https://developer.android.com/training/sharing/send.html

Получение простых данных из других приложений: https://developer.android.com/training/sharing/receive.html