Godot Version
4.6.1
Question
When running a game on Android, is it possible to share an image from user:// using Intent?
Text sharing works perfectly:
var share = IntentClass.Intent()
share.setAction(IntentClass.ACTION_SEND)
share.setType("text/plain")
share.putExtra(IntentClass.EXTRA_TEXT, "Neque porro quisquam est qui dolorem")
So I adapted the code to share images, but the Intent isn’t showing up (No errors are reported):
var runtime = Engine.get_singleton("AndroidRuntime")
var activity = runtime.getActivity()
# Access the necessary classes
var IntentClass: JavaClass = JavaClassWrapper.wrap("android.content.Intent")
var UriClass: JavaClass = JavaClassWrapper.wrap("android.net.Uri")
var ClipDataClass: JavaClass = JavaClassWrapper.wrap("android.content.ClipData")
var FileClass: JavaClass = JavaClassWrapper.wrap("java.io.File")
# Get image path
var path: String = "user://my_image.png"
path = ProjectSettings.globalize_path(path)
var file = FileClass.File(path)
var fileUri = UriClass.fromFile(file)
# Share
var share = IntentClass.Intent()
share.setAction(IntentClass.ACTION_SEND)
# CRITICAL: grant the receiving app permission to read this URI
share.addFlags(IntentClass.FLAG_GRANT_READ_URI_PERMISSION)
share.setType("image/png")
share.setClipData(ClipDataClass.newRawUri(null, fileUri))
share.putExtra(IntentClass.EXTRA_STREAM, fileUri)
activity.startActivity(IntentClass.createChooser(share, "Sample"))
OS.alert(fileUri)