2016-08-16 6 views
3

画像を共有するためにandroid ACTION_SENDインテントを使用する共有ボタンを作成したいと思います。これは、この行shareIntent.putExtra(Intent.EXTRA_STREAM, uri)でこのエラーjnius.jnius.JavaException: Invalid instance of u'android/net/Uri' passed for a u'java/lang/String'がスローされます)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) 

しかし、それは動作しません:それは私のコードです。どうすればこの問題を解決できますか?

答えて

2

解決策が見つかりました。あなたはパーセル可能にするためにuriをキャストし、それを意図に渡す必要があります:

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