Как запустить видеозвонок из приложения Delphi для Android? - PullRequest
0 голосов
/ 21 декабря 2018

Я ищу способ запустить видеозвонок из моего приложения для Android, написанного на Delphi 10.3.Для этого я хочу использовать Android-намерения в сторонних приложениях (WhatsApp или Skype).

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

На основе https://stackoverflow.com/a/38674897 - ничего не происходит

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setData(StrToJURI('content://com.android.contacts/data/123'));
Intent.setType(StringToJString('vnd.android.cursor.item/vnd.com.whatsapp.voip.call'));

На основании https://stackoverflow.com/a/46049004 - ничего не происходит

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setData(StrToJURI('content://com.android.contacts/data/123'));
Intent.setType(StringToJString('vnd.android.cursor.item/vnd.com.whatsapp.video.call'));
Intent.setPackage(StringToJString('com.whatsapp'));

Исправление предлагает отключить SetType https://stackoverflow.com/a/28244207 - ничего не происходит

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(
  StrToJURI('content://com.android.contacts/data/123'),
  StringToJString('vnd.android.cursor.item/vnd.com.whatsapp.video.call'));
Intent.setPackage(StringToJString('com.whatsapp'));

Пример кода Skype на основе https://stackoverflow.com/a/14294299 - он открывает Skype, но не открывает чат / звонок с первой попытки.Если я переключаюсь на свое приложение, когда Skype работает в фоновом режиме, при второй попытке запускается видеозвонок.

Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
//Intent.setData(StrToJURI('skype:username?call&video=true'));
Intent.setData(StrToJURI('skype:username'));

Попытка действия videocall - появляется сообщение «Получатель не найден»

Intent := TJIntent.Create;
Intent.setAction(StringToJString('com.android.phone.videocall'));
Intent.setData(StrToJURI('skype:username'));

Intent := TJIntent.Create;
Intent.setAction(StringToJString('com.android.phone.videocall'));
Intent.setData(StrToJURI('tel:123456789'));

Все намерения выполняются с помощью:

if MainActivity.getPackageManager.queryIntentActivities(Intent, TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY).size > 0 then
  MainActivity.startActivity(Intent)
else
  ShowMessage('Receiver not found');

Как сделать видеозвонок из приложения для Android, написанный на Delphi?

1 Ответ

0 голосов
/ 16 января 2019

Это не специфическая проблема дефи.Ваш код не работает, даже если он находится в Java. (Он показывает, что получатель не найден)

См. Следующее.Они в Java, но я думаю, что они могут указать вам правильный путь

  1. android-make вызов WhatsApp
  2. Android: Получить имя контакта изномер телефона
  3. https://developer.android.com/training/permissions/requesting#java
...