java - 如何打开whats app和gmail的选择器意图仅在kotlin中发送附件文档
问题描述
我需要将从我的应用程序创建的文档仅发送到 gmail 和 whatsapp。
对于whatsapp,我得到了工作代码,
val filelocation = GlobalVariables.getMyFilePath(this, "dummy_file.mem")
val uri = Uri.parse(filelocation.absolutePath)
val whatsappIntent = Intent(Intent.ACTION_SEND)
whatsappIntent.type = "text/plain"
whatsappIntent.setPackage("com.whatsapp")
whatsappIntent.putExtra(Intent.EXTRA_TEXT, "members file list")
whatsappIntent.putExtra(Intent.EXTRA_STREAM, uri)
whatsappIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
this.startActivity(whatsappIntent)
基于此,我只是对 gmail 进行了同样的操作。但没有得到附加。它吐司消息file not attached
val email = Intent(Intent.ACTION_SEND)
email.setPackage("com.google.android.gm")
email.putExtra(Intent.EXTRA_EMAIL, arrayOf<String>("vikas16acharya@gmail.com"))
email.putExtra(Intent.EXTRA_SUBJECT, "members file list")
email.putExtra(Intent.EXTRA_TEXT, message)
email.putExtra(Intent.EXTRA_STREAM, uri)
email.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
email.type = "message/rfc822"
this.startActivity(email)
- 怎么把附件发到gmail
- 如何仅显示
whatsapp
并gmail
在选择器意图操作中显示
解决方案
如何将附件发送到gmail?
要发送文件,您需要更多的东西,
首先在里面Manifest
->application
添加下面的代码片段
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths" />
</provider>
xml
然后在下创建一个文件夹res
并添加此文件
file_provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="external_files" path="."/>
</paths>
</PreferenceScreen>
然后在您的代码中添加以下行而不是val uri = Uri.parse(filelocation.absolutePath)
val uri = FileProvider.getUriForFile(this, "${BuildConfig.APPLICATION_ID}.provider", filelocation)
现在您可以发送附件了。
如何在选择器意图操作中仅显示 whatsapp 和 gmail?
推荐阅读
- google-chrome-app - 使用 chrome.app.window.create 时如何截屏
- excel - 在 Excel (VBA) 中仅选择 X 误差线
- reactjs - 使 React 应用程序路由服务于静态文件夹
- ios - 如何使用 iOS 应用程序运行 Appium
- java - 如何使用 iText 列表将具有不同权重的文本添加到单个 ListItem
- python-3.x - 根据由空格分隔的字符长度删除值
- r - lapply 循环根据经过的时间跳到下一次迭代
- python - SQLAlchemy 从 Table 对象(从 Metadata 或 Session 或其他)获取 Mapper 对象
- html - 在 Angular 7 中,下拉菜单的默认选择值并不直接
- r - R read.xlsx 注释字符选项