2016-08-16 104 views
3

我想要創建共享按鈕,將使用android ACTION_SEND intent共享圖像。這是我的代碼:kivy android分享圖像

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

我找到了解決辦法。您必須投uri才能將其添加到本地,然後將其傳遞給目標:

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