Image of user kivy android

I want to create a sharing button that will use the Android intent for ACTION_SEND to share the image. This is my code:

from kivy.setupconfig import USE_SDL2 def share(path): if platform == 'android': from jnius import cast from jnius import autoclass if USE_SDL2: PythonActivity = autoclass('org.kivy.android.PythonActivity') else: PythonActivity = autoclass('org.renpy.android.PythonActivity') Intent = autoclass('android.content.Intent') String = autoclass('java.lang.String') Uri = autoclass('android.net.Uri') File = autoclass('java.io.File') shareIntent = Intent(Intent.ACTION_SEND) shareIntent.setType('"image/*"') imageFile = File(path) uri = Uri.fromFile(imageFile) shareIntent.putExtra(Intent.EXTRA_STREAM, uri) currentActivity = cast('android.app.Activity', PythonActivity.mActivity) currentActivity.startActivity(shareIntent) 

But that will not work). On this line, shareIntent.putExtra(Intent.EXTRA_STREAM, uri) it throws this error jnius.jnius.JavaException: Invalid instance of u'android/net/Uri' passed for a u'java/lang/String' . How can i fix this?

+3
source share
1 answer

I have found a solution. You should throw the uri verbatim and then pass it on to your intentions:

 parcelable = cast('android.os.Parcelable', uri) shareIntent.putExtra(Intent.EXTRA_STREAM, parcelable) 
+2
source

Source: https://habr.com/ru/post/1206220/


All Articles