很抱歉给您带来不便,但我确实需要帮助。 我创建了一个 webview,并添加了一个通过 WhatsApp 发送文件的按钮。一切正常,直到发送文件的那一刻。
我选择联系人。然后它显示聊天屏幕,但没有要发送的文件
您尝试发送的文件位于下载文件夹中。就好像文件不存在一样。
private fun sharePDF() {
val outputFile = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
"INVOICE.PDF"
)
val uri = FileProvider.getUriForFile(this@MainActivity, "${BuildConfig.APPLICATION_ID}.provider", outputFile)
val share = Intent()
share.action = Intent.ACTION_SEND
share.type = "application/pdf"
share.putExtra(Intent.EXTRA_STREAM, uri)
//share.setPackage("com.whatsapp")
share.setPackage("com.whatsapp.w4b")
startActivity(share)
}
//provider_paths
<external-path
name="external"
path="." />
<external-files-path
name="external_files"
path="." />
<files-path
name="files"
path="." />
manifest
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
我查了网站也没找到解决办法。
通过 WhatsApp、Gmail 或 Drive 发送并不重要。我无法附加文件
val outputFile: File = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
"invoice.txt"
)
whatapp.setOnClickListener {
共享文件(输出文件) }
fun shareFile(file:File){
if (file.exists()) {
val uri = FileProvider.getUriForFile(
this@MainActivity,
BuildConfig.APPLICATION_ID + ".provider",
file
)
val intent = Intent(Intent.ACTION_SEND)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
intent.setType("text/plain")
intent.putExtra(Intent.EXTRA_STREAM, uri)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(Intent.createChooser(intent, "Enviar"))
}
}