Открытие приложения для обмена текстовыми сообщениями с вложением - PullRequest
3 голосов
/ 11 июля 2019

Я пытаюсь запустить Intent из приложения Unity, которое запустит приложение для обмена текстовыми сообщениями с вложением.

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

'Не удалось определить тип файла: ///storage/emulated/0/Android/data/com.torpedoesaway.memematch/files/Gifit2MemeFiles/gifit2meme-2019-09-09-7-09-39-54.gif java.io.IOException: java.lang.RuntimeException: setDataSource fail: status = 0x80000000 '

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

Это мой код:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + recipient));
intent.putExtra("sms_body", message);
intent.putExtra(Intent.EXTRA_STREAM, attachment);

if (intent.resolveActivity(activity.getPackageManager()) != null) {
   activity.startActivity(intent);
}

Я попытался поиграться с действием намерения, а также вызовами setData / setTypeи в одном случае я могу открыть селектор, выбрать приложение обмена сообщениями, а затем вложение загружается правильно.Тем не менее, я хочу открыть приложение для обмена текстовыми сообщениями непосредственно с работающим приложением.

Заранее спасибо за помощь!

Редактировать:

Как я звонюот Unity:

AndroidJavaClass Uri = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject uri = Uri.CallStatic<AndroidJavaObject>("parse", path);

        unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        pluginClass = new AndroidJavaObject("com.torpedosaway.giftomessage.Gif2Message");
        pluginClass.Call(
            "ComposeMmsMessage",
            "53876045",
            "message",
            uri,
            unityClass.GetStatic<AndroidJavaObject>("currentActivity"));

1 Ответ

0 голосов
/ 14 июля 2019

Вот возможный ответ на ваш вопрос (обратите внимание на дополнительную строку в коде и преобразование ACTION_SENDTO в ACTION_SEND) -

public void composeMmsMessage(String message, Uri attachment, long phoneNumber) {
     Intent intent = new Intent(Intent.ACTION_SEND);
     intent.setData(Uri.parse("smsto:" + phoneNumber));  // This ensures only SMS apps respond
     intent.putExtra("sms_body", message); // For the text that you want to send
     intent.putExtra(Intent.EXTRA_STREAM, attachment); // For the atachment, which be a photo, video, file, etc. If you are using Firebase, you might want to take a look at the official Firebase Docs Page on this topic - https://firebase.google.com/docs/storage/unity/start
     if (intent.resolveActivity(getPackageManager()) != null) {
         startActivity(intent);
     }
 }

Вот главный андроид -

<activity ...>
     <intent-filter>
         <action android:name="android.intent.action.SEND" />
         <data android:type="text/plain" />
         <data android:type="image/*" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
</activity>

Надеюсь, это поможет !!

Источник - https://developer.android.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...