将图片从URL共享到其他应用 [英] share image from URL to other apps
问题描述
请勿重复进行此操作..我已经尝试了每个链接,并且我将按照直到现在为止我尝试过的内容进行展示
Dont make this as duplicate..i have tried every link and i will show following what i have tried till now
我将简要解释我的代码->
i will briefly explain my code-->
从适配器获取图像到活动->
fetching image from adapter to activity-->
val bundle: Bundle = getIntent().getExtras()!!
val imgUrl: String = bundle.getString("image")!!
val imageUri = Uri.parse(imgUrl)
1->>>
完整代码:->引用自-> https://stackoverflow.com/questions/49011212/sharing-image-using-intent-on-whats-app-getting-error-sharing-failed
full code:--> referred from -->https://stackoverflow.com/questions/49011212/sharing-image-using-intent-on-whats-app-getting-error-sharing-failed
val bundle: Bundle = getIntent().getExtras()!!
val imgUrl: String = bundle.getString("image")!!
val imageUri = Uri.parse(imgUrl)
shareiamge.setOnClickListener {
shareImage(imageUri)
}
private fun shareImage(imagePath: Uri) {
val sharingIntent = Intent(Intent.ACTION_SEND)
sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)
sharingIntent.type = "image/*"
sharingIntent.putExtra(Intent.EXTRA_STREAM, imagePath)
//sharingIntent.setPackage("com.whatsapp"); for whatsapp only
startActivity(
Intent.createChooser(
sharingIntent,
"Share Image Using"
)
) // for all generic options
}
清单->
<activity
android:name=".ProductDetails.Product_details"
android:launchMode="singleInstance" >
<intent-filter>
<action android:name="android.intent.action.SEND" /> <!-- Send
action required to display activity in share list -->
<category android:name="android.intent.category.DEFAULT" /> <!--
Make activity default to launch -->
<!-- Mime type i.e. what can be shared with this activity only image and text -->
<data android:mimeType="image/*" />
<data android:mimeType="text/*" />
</intent-filter>
</activity>
以上代码输出:->
与whatsapp或任何应用共享时,不支持文件格式
above code output:-->
when sharing to whatsapp or any app the file format is not supported
2 --->>>>
与whatsapp或任何应用共享时,不支持文件格式
when sharing to whatsapp or any app the file format is not supported 3->>>
与whatsapp或任何应用共享时,不支持文件格式
when sharing to whatsapp or any app the file format is not supported 4->>> https://stackoverflow. com/a/25136183/12553303
与whatsapp或任何应用共享时->共享失败,请稍后重试
when sharing to whatsapp or any app --> sharing failed,please try again later 5-> ,但它仅共享文本而不是图像 5--> but it is only sharing text not image 日志中的值:- 我要分享图片需要帮助,请先感谢 i want to share an image need help thanks in advance 您必须从URL构建内容URI.有几种方法可以做到这一点. You have to build content URI from the url. There are several ways to do this. 一种方法是从URL下载图像并从下载的文件构建URI. One way is to build that is download image from url and build URI from the downloaded file. 如果您正在使用 Glide 从网址加载图片,则可以通过以下方式完成: If you are using Glide to load image from url, then it can be done in following way: 别忘了在清单中添加 和 这篇关于将图片从URL共享到其他应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!以上代码输出:->
above code output:-->
val bundle: Bundle = getIntent().getExtras()!!
val imgUrl: String = bundle.getString("image")!!
val imageUri = Uri.parse(imgUrl)
shareiamge.setOnClickListener {
val whatsappIntent = Intent(Intent.ACTION_SEND)
whatsappIntent.type = "image/*"
whatsappIntent.putExtra(
Intent.EXTRA_STREAM,
Uri.parse(res?.body()!!.data.product_images.get(0).image)
) //direct image from retrofit response
startActivity(Intent.createChooser(whatsappIntent, "Share image using"))
以上代码输出:->
above code output:-->
val bundle: Bundle = getIntent().getExtras()!!
val imgUrl: String = bundle.getString("image")!!
val imageUri = Uri.parse(imgUrl)
shareiamge.setOnClickListener {
val intent = Intent(Intent.ACTION_SEND)
intent.putExtra(Intent.EXTRA_TEXT, "Hey view/download this image")
val path: String =
MediaStore.Images.Media.getContentUri(imgUrl).toString()
val screenshotUri = Uri.parse(path)
intent.putExtra(Intent.EXTRA_STREAM, screenshotUri)
intent.type = "image/*"
startActivity(Intent.createChooser(intent, "Share image via..."))
以上代码输出:->
above code output:-->
val sendIntent = Intent()
sendIntent.action = Intent.ACTION_SEND
sendIntent.putExtra(Intent.EXTRA_TEXT, imgUrl)
sendIntent.type = "text/plain"
startActivity(sendIntent)
Log.e("imgUrl",imgUrl)
Log.e("imageUri", imageUri.toString())
E/imgUrl: http://....../uploads/prod_img/thumb/medium/9dc6234da018916e545011fa1.jpeg
E/imageUri: http://..../uploads/prod_img/thumb/medium/9dc6234da018916e545011fa1.jpeg
推荐答案
Glide.with(context).asBitmap().load(photoUrl)
.into(object: CustomTarget<Bitmap>() {
override fun onLoadCleared(placeholder: Drawable?) {
// do your stuff, you can load placeholder image here
}
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
val cachePath = File(context.cacheDir, "images")
cachePath.mkdirs() // don't forget to make the directory
val stream = FileOutputStream(cachePath.toString() + "/image.png") // overwrites this image every time
resource.compress(Bitmap.CompressFormat.PNG, 100, stream)
stream.close()
val imagePath = File(context.cacheDir, "images")
val newFile = File(imagePath, "image.png")
val contentUri: Uri = FileProvider.getUriForFile(context, "${BuildConfig.APPLICATION_ID}.provider", newFile)
val intent = Intent(Intent.ACTION_SEND)
intent.type = "image/*"
intent.putExtra(Intent.EXTRA_STREAM, contentUri)
context.startActivity(Intent.createChooser(intent, "Choose..."))
}
})
provider
: <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
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="cache" path="/" />
</paths>