2013-12-16 46 views
1

我想知道我的代碼波紋管有什麼問題?爲什麼資產中的圖像未加載到Facebook共享頁面?如何通過意圖分享圖像到Facebook

Intent share = new Intent(Intent.ACTION_SEND); 
share.setType("image/jpeg"); 
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///android_asset/images/end_level_10.png")); 
share.putExtra(Intent.EXTRA_SUBJECT, "Congratulation! You get A+ with Kid IQ Game."); 
share.putExtra(Intent.EXTRA_TEXT, "https://play.google.com/store/apps/details?id=kids.iq.kidsiqpicturesquestion"); 
startActivity(Intent.createChooser(share, "Congratulation!")); 

感謝您的幫助!

回答

1

它可以共享文件(包括圖片)的資產通過定製ContentProvider

您需要extend ContentProvider文件夾,在您的清單中註冊並實現openAssetFile方法。然後您可以通過Uris評估資產。

這上面的代碼添加到您的清單

<provider android:name="yourclass.that.extendsContentProvider" 
     android:authorities="com.yourdomain.whatever"/> 

例如類,

@Override 
    public AssetFileDescriptor openAssetFile(Uri uri, String mode) throws FileNotFoundException { 
     AssetManager am = getContext().getAssets(); 
     String file_name = uri.getLastPathSegment(); 

     if(file_name == null) 
      throw new FileNotFoundException(); 
     AssetFileDescriptor afd = null; 
     try { 
      afd = am.openFd(file_name); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

return afd; 
} 

做參考, too-easy-using-contentprovider-to-send

+0

注意,支持庫還包括[FileProvider](http://developer.android.com/reference/android/support/v4/content/FileProvider.html),這是特別構建用於在應用程序之間輕鬆共享文件(包括資產文件夾中的圖像)。 – ianhanniballake

0
share.setType("image/jpeg"); 
share.putExtra(Intent.EXTRA_STREAM,Uri.parse("file:///android_asset/images/end_level_10.png")); 

變化

share.setType("image/png"); 

share.setType("image/*");