Android ShareCompat.IntentBuilder:Intent.data与收件人混合
我正在使用Android ShareCompat.IntentBuilder:Intent.data与收件人混合,android,android-intent,Android,Android Intent,我正在使用ShareCompat.IntentBuilder发送带有附件的电子邮件 我对附加的文件没有任何问题,除了要附加的文件的uri自动添加到收件人 亲自看看: 以下是我用来发送电子邮件的代码: val fileUri = FileProvider.getUriForFile(context, context.packageName + ".fileprovider", pdfFile) val shareIntentBuilder = ShareCompat.IntentBuilder
ShareCompat.IntentBuilder
发送带有附件的电子邮件
我对附加的文件没有任何问题,除了要附加的文件的uri自动添加到收件人
亲自看看:
以下是我用来发送电子邮件的代码:
val fileUri = FileProvider.getUriForFile(context, context.packageName + ".fileprovider", pdfFile)
val shareIntentBuilder = ShareCompat.IntentBuilder
.from(this@MyActivity)
.setType(baseContext.contentResolver.getType(fileUri))
.setStream(fileUri)
.setSubject(getString(R.string.app_name))
.setText("Please find attached ...")
.setEmailTo(arrayOf("email@gmail.com"))
val shareIntent = shareIntentBuilder.intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
shareIntent.data = fileUri
startActivity(shareIntent)
(我使用过本教程:)
你们当中有人知道我犯了什么错误吗
提前谢谢你看来问题出在
shareIntent.data=fileUri
上。当我移除它时,一切都正常。希望现在回答还来得及
-此方法自动清除以前由设置的任何类型
setType(String)
或setTypeAndNormalize(String)
如果您看到来自的注释,则它们从未同时使用setType()
和setData()
注意:在构建我们的ShareCompat
(尽管在视频中我设置了它)。正如在报告中所解释的那样
setDataAndType()
Javadoc,从
数据URI使用getContentResolver().getType(uriToImage)
自
FileProvider
会自动返回正确的mime类型,我们不会
需要手动指定mime类型
因此,使用setData()
是不必要的,因为文档中还提到:
Uri
:此意图现在针对的数据的Uri
此值可能不正确
为空
另外,您已经通过
setType
&getType(fileUri)
设置并获取了type
,无需再次设置。但是,为了简化代码,您可以尝试使用以下方法:
val fileUri = FileProvider.getUriForFile(context, context.packageName + ".fileprovider", pdfFile)
val shareIntent = ShareCompat.IntentBuilder
.from(this@MainActivity)
.setType(baseContext.contentResolver.getType(fileUri))
.setStream(fileUri)
.setSubject(getString(R.string.app_name))
.setText("Please find attached ...")
.setEmailTo(arrayOf("email@gmail.com"))
.intent // added this
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
startActivity(shareIntent)
好的样品