android - 打开带有附件的短信应用程序
问题描述
我正在尝试从 Unity 应用程序启动一个 Intent,该应用程序将启动带有附件的短信应用程序。
我已经能够打开短信应用程序,但附件无法正确加载,引发以下异常:
'无法确定文件的类型:///storage/emulated/0/Android/data/com.torpedoesaway.memematch/files/Gifit2MemeFiles/gifit2meme-2019-09-7-09-39-54.gif java.io。 IOException:java.lang.RuntimeException:setDataSource 失败:状态 = 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);
}
我尝试使用意图操作以及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"));
解决方案
就在您调用startActivity(intent);之前
添加这些行:
StrictMode.VmPolicy.Builder builder = StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
然后打电话
startActivity(intent);
推荐阅读
- r - 获取矩阵每一列的第一个 TRUE 元素的索引,但索引必须 > 到 n
- html - HTML:图像和替代文本均不可见,边框可见
- google-sheets - 在 Google Sheets 中的脚本中使 B1 返回 A1,B2 返回 A2,依此类推。此函数的正确单元格范围参考是什么?
- ckan - 有没有办法在 CKAN 的网格视觉中转置数据显示?
- c++ - 编译时计数器
- java - NamingException 使用 JNDI 加载 bean
- python - 如何获取 .wav 文件格式的 numpy 数组输出
- python - 在条件下使用 Python 解析/提取嵌套的 JSON 数据
- reactjs - React 响应模态的良好实践
- json - 将 Json 格式的数据插入数据库