Android意向-如何在Android中使用发送短信的意向共享文本和图像

Android意向-如何在Android中使用发送短信的意向共享文本和图像,android,kotlin,android-intent,Android,Kotlin,Android Intent,我尝试使用我的应用程序中的意图共享文本并将图像附加到sms消息。它接受消息正文,但显示错误,“无法附加文件”作为toast val intent = Intent(Intent.ACTION_SEND) intent.putExtra("sms_body", message) intent.putExtra(Intent.EXTRA_STREAM, attachment) intent.type = "image/*" intent.addFlags(Intent.FLAG_GRANT_WRIT

我尝试使用我的应用程序中的意图共享文本并将图像附加到sms消息。它接受消息正文,但显示错误,“无法附加文件”作为toast

val intent = Intent(Intent.ACTION_SEND)
intent.putExtra("sms_body", message)
intent.putExtra(Intent.EXTRA_STREAM, attachment)
intent.type = "image/*"
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
activity?.startActivity(intent)

我尝试了很多方法,但都没有成功。你认为我错在哪里?是否无法通过短信共享图像?非常感谢您的帮助

您正在使用android.resource
Uri
用于
额外的\u流
。并非所有应用程序都能够使用您的
android.resource
Uri
,因为它们不希望使用该方案


如果您希望提高兼容性,请使用
FileProvider
使用
FileProvider.getUriForFile()
共享您的PNG图像,这样您就有了一个
内容
Uri
用于
额外的\u流

首先,使用一个具体的MIME类型。这是你的附件,所以你的工作就是告诉另一个应用程序MIME类型是什么。其次,您没有授予读访问权限,只授予写访问权限(其他应用可能不需要)。
附件
(例如,带有
文件
方案的
Uri
)也可能有问题,但我们需要知道
附件
是什么意思。@Commonware附件是png图像(Uri),它与facebook和instagram共享“附件是png图像(Uri)”--然后使用
图像/png
,不是
image/*
。此外,从
Uri
的角度来看,方案很重要<代码>操作发送
应该为
额外流
使用
内容
方案。通常,这意味着您应该使用
FileProvider
来获取
Uri
.Uri.parse(ContentResolver.SCHEME\u ANDROID\u RESOURCE+“:/”+context.resources.getResourcePackageName(resID)+'/'+context.resources.getResourceTypeName(resID)+'/'+context.resources.getResourceEntryName(resID)@commonware这就是我如何获取提供png图像资源id的Uri的方法。我更改了mime类型,并按照您所说的授予了读取权限。