android - Android ACTON_SEND MMS Intent 失败并显示“无法附加。文件不受支持”
问题描述
private void sendPhotoByEmail(Uri photoUri, String[] emailTo) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setType("message/rfc822");
intent.putExtra(android.content.Intent.EXTRA_EMAIL, emailTo);
String intro;
if (mData != null) {
intro = mData.optString(DecisionTree.EMAIL_BODY, getString(R.string.share_photo_email_body_format));
} else {
intro = getString(R.string.share_photo_email_body_format);
}
intro = String.format("%s\n\n%s", intro, getString(R.string.share_photo_email_body_footer,
ApplicationContext.getFormattedVersionInfo(this)));
String locationText = intro + ApplicationContext.getUserLocationBody();
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.share_photo_subject));
intent.putExtra(android.content.Intent.EXTRA_TEXT, locationText);
intent.putExtra(Intent.EXTRA_STREAM, photoUri);
startActivity(intent);
}
private void sendPhotoByText(Uri photoUri, String phoneTo) {
Toast.makeText(this, "In sendPhotoByText", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setType("image/*");
intent.setData(Uri.parse("smsto:" + phoneTo));
String intro;
if (mData != null) {
intro = mData.optString(DecisionTree.EMAIL_BODY, getString(R.string.share_photo_email_body_format));
} else {
intro = getString(R.string.share_photo_email_body_format);
}
intro = String.format("%s\n\n%s", intro, getString(R.string.share_photo_email_body_footer,
ApplicationContext.getFormattedVersionInfo(this)));
String locationText = intro + ApplicationContext.getUserLocationBody();
intent.putExtra("sms_body", locationText);
intent.putExtra(Intent.EXTRA_STREAM, photoUri);
startActivity(intent);
}
在我的应用程序中,用户从图库中选择一张照片。它被保存,并将 uri 传递给上述两种方法之一。sendPhotoByEmail 方法格式化包含照片的电子邮件。sendPhotoByText 方法格式化文本消息。照片没有出现在其中,并且我看到错误消息“无法附加。文件不支持”。我已经在每个函数中使用相同的照片(相同的 uri)进行了测试。URI 是“content://media/external/images/media/1017”。我还单独运行了 Messenger,并且能够成功附加同一张照片。
我已经在我设备上的应用程序中设置了 SMS 和 Storage 权限,这些是 AndroidManifest.xml 中的权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.SEND_SMS />
任何见解将不胜感激。
不管你信不信,我换了
intent.setData(Uri.parse("smsto:" + phoneTo));
和
intent.putExtra("address", phoneTo);
照片出现在格式化的短信中。但是,显示可供选择的应用程序的屏幕(以前仅显示短信应用程序)现在也显示其他应用程序。我希望它只显示短信应用程序。
解决方案
根据您上面的评论,您似乎只想与 SMS/MMS 应用程序共享您的意图。您是否尝试过设置意图类型intent.setType("vnd.android-dir/mms-sms")
?
推荐阅读
- haskell - 不能在 where 块中使用“<-”吗?
- java - 通过泛型在java中制作泛型接口
- amazon-web-services - AWS Quicksight 计划报告交付
- algorithm - 为什么这种等式在 Floyd-Warshall 算法中成立?
- javascript - 如何将目标值从网站动态发送到谷歌分析
- sublimetext3 - 自动换行如何在 SublimeText 中工作?
- javascript - 循环遍历数组数组
- linux - Rqaspberry 在启动时运行 java 脚本并查看 cmd?
- javascript - addEventListener 错误.. some1 能帮我吗?
- python - 无法安装本地构建的 python 包