我实现了一个分享按钮(代码用Kotlin
编写),它已经可以将文本发送到whatsapp / email等。
现在我也想发送一个图片,但在尝试了几个教程之后,它仍然显示相同的错误:
而不是图片" image27.png",只有未定义的损坏文件" 2131099738"发送。
这是我的代码:
package com.example.myapp
...
share_button.setOnClickListener {
val shareIntent = Intent(Intent.ACTION_SEND)
shareIntent.type = "image/png"
val shareImageURI = Uri.parse("android.resource://com.example.myapp/drawable/"+R.drawable.image27)
val shareSub = "This is for you"
val shareBody = message
shareIntent.putExtra(Intent.EXTRA_STREAM, shareImageURI)
shareIntent.putExtra(Intent.EXTRA_SUBJECT, shareSub)
shareIntent.putExtra(Intent.EXTRA_TEXT, shareBody)
startActivity(Intent.createChooser(shareIntent, "Share this"))
}
图片保存在此处:C:\Users\Bine\AndroidStudioProjects\MyApp\app\src\main\res\drawable\image27.png
我该如何解决这个问题?
答案 0 :(得分:0)
这种行为是有意的。你现在要做的是从你的应用程序中分享一个drawable,但我认为这不会起作用,因为每个Android app runs in a Sanbox。
Android应用程序沙箱,它将您的应用程序数据和代码执行与其他应用程序隔离开来。
但是,为了更好地了解您的问题,您必须了解R class
。简而言之,它是由系统生成的类,它包含对资源目录中找到的所有内容的引用,包括您正在使用的drawables
。这里的重要部分是每次对资源的引用都会保存为int
变量,因此当您尝试使用2131099738
时,R.drawable.image27.png
会出现在那里(请注意,如果您进行了任何更改对于资源来说,这个数字很可能会发生变化)。
要解决此问题,您有两种方法:
ContentProvider
访问该文件。