2016-05-07 17 views
0

facebookを含むすべての可能なアプリでキャプションとともに画像を共有したいと思います。 私はこのコードを試しましたが、facebook以外の他のすべてのアプリで動作しています。誰も画像と一緒にキャプションを共有する方法を教えてください。facebookはfacebookの画像と一緒に説明を共有します

Intent shareIntent = new Intent(); 
    shareIntent.setAction(Intent.ACTION_SEND); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, caption); 
    shareIntent.setType("image/*"); 
    mcontext.startActivity(Intent.createChooser(shareIntent, "Share Image")); 
+0

アプリ – Moorthy

答えて

0

これを試してください。

ストア外部ストレージディレクトリにあなたのイメージと、そのイメージのパスを取得し、テキストのandroid.content.Intent.EXTRA_TEXTを使用して、静的なテキストを渡します。

String fileName = "imagename.jpg";//Name of an image 
String externalStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
String myDir = externalStorageDirectory + "/saved_images/"; // the file will be in saved_images 
Uri uri = Uri.parse("file:///" + myDir + fileName); 
Intent intentShare = new Intent(android.content.Intent.ACTION_SEND); 
intentShare.setType("text/plain"); 
intentShare.putExtra(android.content.Intent.EXTRA_SUBJECT, "Testing Subject"); 
intentShare.putExtra(android.content.Intent.EXTRA_TEXT, "Testing Texts"); 
intentShare.putExtra(Intent.EXTRA_STREAM, uri); 


PackageManager pm = v.getContext().getPackageManager(); 
    List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); 
    for (final ResolveInfo app : activityList) 
    { 
     if ((app.activityInfo.name).startsWith("com.facebook.katana")) 
     { 
      final ActivityInfo activity = app.activityInfo; 
      final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); 
      shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
      shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
      shareIntent.setComponent(name); 
      v.getContext().startActivity(shareIntent); 
      break; 
     } 
     } 

あなたのマニフェストにこの権限を含めます。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

にFacebookのSDKを統合する必要があり、画像とテキストを共有するために私はそれを試してみましたが、それはFacebookのために働いていません。 –

+0

私の答えを編集したことを確認してください。それは私が追加したパッケージマネージャクラスを使用して行います。 –

+0

"com.facebook.katana"を使用すると、他のアプリ用ではなく、facebookアプリのみの共有が可能になります。 –

0
public void onShareClick(View v){ 
    List<Intent> targetShareIntents=new ArrayList<Intent>(); 
    Intent shareIntent=new Intent(); 
    shareIntent.setAction(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    List<ResolveInfo> resInfos=getPackageManager().queryIntentActivities(shareIntent, 0); 
    if(!resInfos.isEmpty()){ 
     for(ResolveInfo resInfo : resInfos){ 
      String packageName=resInfo.activityInfo.packageName; 
      Log.i("Package Name", packageName); 
      if(packageName.contains("com.twitter.android") || packageName.contains("com.facebook.katana")){ 
       Intent intent=new Intent(); 
       intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name)); 
       intent.setAction(Intent.ACTION_SEND); 
       intent.setType("text/plain"); 
       intent.putExtra(Intent.EXTRA_TEXT, "Text"); 
       intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
       intent.setPackage(packageName); 
       targetShareIntents.add(intent); 
      } 
     } 
     if(!targetShareIntents.isEmpty()){ 
      Intent chooserIntent=Intent.createChooser(targetShareIntents.remove(0), "Choose app to share"); 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{})); 
      startActivity(chooserIntent); 
     }else{ 
      showDialaog(this); 
     } 
    } 
} 
+0

あなたは解決策にいくつかの説明を提供できますか? – timiTao

関連する問題