Image 在kotlin中使用Intent共享图像和文本

Image 在kotlin中使用Intent共享图像和文本,image,kotlin,share,Image,Kotlin,Share,我必须在Recyclerview中分享一个活动的图像和文本。在adapter中,我提供了“注释和共享”按钮,但我无法将图像共享给任何成员,因为它显示“文件格式不受支持”。我使用改型从服务器获取图像,收到的路径是“Uploads/xxx.jpg”。我已使用Fileprovider共享图像。还添加了清单权限(读取外部存储和写入外部存储)。请在这方面提供帮助的任何人都将非常感谢 这是下面的共享按钮部分: mHolder.event_shareButton.setOnClickListener(View

我必须在Recyclerview中分享一个活动的图像和文本。在adapter中,我提供了“注释和共享”按钮,但我无法将图像共享给任何成员,因为它显示“文件格式不受支持”。我使用改型从服务器获取图像,收到的路径是“Uploads/xxx.jpg”。我已使用Fileprovider共享图像。还添加了清单权限(读取外部存储和写入外部存储)。请在这方面提供帮助的任何人都将非常感谢

这是下面的共享按钮部分:

mHolder.event_shareButton.setOnClickListener(View.OnClickListener {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val permissionCheck = ContextCompat.checkSelfPermission(
            context,
            android.Manifest.permission.READ_EXTERNAL_STORAGE
        )
        if (permissionCheck == PackageManager.PERMISSION_GRANTED) {

            val imageUri=mEvents.image
            val externalStorageDir = Environment.getExternalStorageDirectory().toString() + "/shared_images/"
            val mDrawable = mHolder.event_image.drawable
            val bmp = Bitmap.createBitmap(mDrawable.intrinsicWidth,mDrawable.intrinsicHeight,Bitmap.Config.ARGB_8888)
            val canvas = Canvas(bmp);
            mDrawable.setBounds(0,0,canvas.width,canvas.height)
            mDrawable.draw(canvas)

            val file = File(externalStorageDir)
            file.mkdirs()

            val fname = "/" + imageUri
            val mFile = File(file, fname!!)
            val shareIntent = Intent(Intent.ACTION_SEND)
            shareIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
            val uri = FileProvider.getUriForFile(
                context,
                "${BuildConfig.APPLICATION_ID}.provider",
                mFile.absoluteFile
            )
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri)
            shareIntent.putExtra(Intent.EXTRA_TEXT, mEvents.eventname)
            shareIntent.setDataAndType(uri, "image/*")
            shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            context.startActivity(Intent.createChooser(shareIntent, "Send"))
        }else {
            ActivityCompat.requestPermissions(context, arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
        }
    }


})
AndroidManifest:

<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>

提供程序路径:

 <?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>

</paths>


你的问题太模糊了。“分享”是什么意思?听起来好像您没有处理抛出的异常,当您收到消息“文件格式不受支持”时,它被包装在从您调用的方法抛出的异常中。它可以告诉你问题出在哪里。您有两个选项要解决;在尝试使用该文件之前,请检查文件格式是否有效,或者将该文件打包为一个try catch(这些选项中的前一个对我来说更合理)。实际上,我没有获得要共享的图像。有人可以在此plz上提供帮助吗。。我不知道我分享图片是否正确。你还没有解释“分享图片”是什么意思。在担心其他事情之前,我建议先修复“不支持文件格式”