2016-08-16 6 views
3

Я хочу создать кнопку совместного доступа, которая будет использовать намерение Android для ACTION_SEND для совместного использования изображения. Это мой код:kivy android share image

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) 

Но это не работает) Он выдает эту ошибку jnius.jnius.JavaException: Invalid instance of u'android/net/Uri' passed for a u'java/lang/String' в этой строке shareIntent.putExtra(Intent.EXTRA_STREAM, uri). Как я могу это исправить?

ответ

2

Я нашел решение. Вы должны наложить ури дословно, а затем передать его на намерение:

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