Я должен поделиться изображением и текстом события, которое есть в Recyclerview. В адаптере я дал кнопку комментария и поделиться, но я не могу поделиться изображением с любым участником, так как он показывает «Формат файла не поддерживается». Я получаю изображения с сервера, используя модификацию, и путь, который я получаю, - «Uploads / xxx.jpg». Я использовал Fileprovider для обмена изображениями. Также добавлено разрешение на манифест (READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STOREGE). Пожалуйста, кто-нибудь поможет в этом, будет очень благодарен.
Ниже приведена часть кнопки «Поделиться»:
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>
provider_paths:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>