Kotlin android studio,不允许文件共享

问题描述 投票:0回答:1

很抱歉给您带来不便,但我确实需要帮助。 我创建了一个 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>




我查了网站也没找到解决办法。

android kotlin webview whatsapp
1个回答
0
投票

通过 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"))
    }
}

Android 文件共享

共享文件

© www.soinside.com 2019 - 2024. All rights reserved.