如何使用Kotlin在Android中分享图像?

我想分享一个位于资产文件夹的图像使用’Kotlin’.How我可以实现类似的代码块在android:

Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/jpeg"); intent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(intent, "Share Image")); 

首先你需要把数据存储在某个地方。 如果您正在编译API 24或更高版本, FileProvider是一个流行的选择:

AndroidManifest.xml声明提供者:

       

接下来,创建一个名为xml的资源目录并创建一个fileprovider.xml 。 假设您希望授予对应用程序的特定外部存储目录的访问权限,该目录不需要额外的权限,则可以声明此行如下:

       

最后,您将使用FileProvider类将File对象转换为内容提供者:

 // getExternalFilesDir() + "/Pictures" should match the declaration in fileprovider.xml paths val file = File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png") // wrap File object into a content provider. NOTE: authority here should match authority in manifest declaration val bmpUri = FileProvider.getUriForFile(MyActivity.this, "com.codepath.fileprovider", file) 

资源

现在你有一个方法来存储和检索单个文件的Uri 。 下一步是简单地创建一个意图,并开始写下面的内容:

 val intent = Intent().apply { this.action = Intent.ACTION_SEND this.putExtra(Intent.EXTRA_STREAM, bmpUri) this.type = "image/jpeg" } startActivity(Intent.createChooser(intent, resources.getText(R.string.send_to))) 

注意bmpUri是你之前检索的值。

资源

如果您正在运行API 23或更高版本,则应该记得考虑运行时权限。 这是一个很好的教程。