kUr*_*4m4 6 android unity-game-engine android-intent android-gradle-plugin
我正在尝试从Unity应用程序启动Intent,该应用程序将启动带有附件的文本消息传递应用程序。
我已经可以打开短信应用程序,但是附件无法正确加载,引发以下异常:
'无法确定文件的类型:///storage/emulated/0/Android/data/com.torpedoesaway.memematch/files/Gifit2MemeFiles/gifit2meme-2019-09-7-09-39-54.gifjava.io。 IOException:java.lang.RuntimeException:setDataSource失败:status = 0x80000000'
请注意,我还尝试加载其他图像,例如png和jpg,都引发相同的错误。
这是我的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用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"));
Run Code Online (Sandbox Code Playgroud)
这是您问题的可能答案(请注意代码中的附加行以及ACTION_SENDTOto的转换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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是 android mainfest -
<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>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!!
来源 - https://developer.android.com/
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |