通过Facebook的Android的果冻豆共享意图

我想通过Facebook分享一些图像和文字从果冻豆。 它工作在除了果冻豆的所有设备。 任何人请帮助我如何解决这个问题。

我的代码

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share"); PackageManager pm = v.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); System.out.println("package name"+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; 

在这个代码中,我想要一些文字。 但EXTRA_TEXT不工作。如何在这个EXTRA_TEXT中传递string或图像。

Solutions Collecting From Web of "通过Facebook的Android的果冻豆共享意图"

你不仅应该直接针对Facebook。

相反,你应该使用共享意图。 按照SDK中的规定,将您的数据传递给额外用户,然后让用户select他们想要分享的内容。 不要强迫他们使用Facebook,因为他们不是唯一的社交媒体。 Theres也推特,4square,和许多其他用户使用。 让这些应用程序处理您的意图,不要指定这样严格的限制,因为这不是意图行动ACTION_SEND的意图工作。

至于你的附加问题,显然EXTRA_TEXT意图将不起作用,因为它不用于图像或任何这样的引用。

阅读文档

http://developer.android.com/reference/android/content/Intent.html#ACTION_SEND

它说:

当启动SEND意图时,通常应该将其包装在一个select器中(通过createChooser(Intent,CharSequence)),这将为用户提供适当的界面来select如何发送数据,并允许您指定提示是做。

input:getType()是要发送的数据的MIMEtypes。 get * Extra可以有EXTRA_TEXT或EXTRA_STREAM字段,包含要发送的数据。 如果使用EXTRA_TEXT,MIMEtypes应该是“text / plain”; 否则它应该是EXTRA_STREAM中的数据的MIMEtypes。 使用/如果MIMEtypes是未知的(这将只允许可以处理通用数据stream的发件人)。 如果使用EXTRA_TEXT,还可以select为客户端提供EXTRA_HTML_TEXT以使用HTML格式检索文本。

从JELLY_BEAN开始,发送的数据可以通过setClipData(ClipData)提供。 这允许您在共享内容时使用FLAG_GRANT_READ_URI_PERMISSION:URI和ClipData的其他高级function。 如果使用这种方法,则仍然必须通过下面所述的EXTRA_TEXT或EXTRA_STREAM字段提供相同的数据,以便与旧应用程序兼容。 如果你没有设置ClipData,在调用startActivity(Intent)的时候会被复制。

可选的标准附加项(可能由某些收件人根据需要进行解释)为:EXTRA_EMAIL,EXTRA_CC,EXTRA_BCC,EXTRA_SUBJECT。

有了这些信息,您还需要为您的意图types中的特定数据设置mimetype。

尝试下面的代码。 我已经使用这个代码来分享文本和图像从我的应用程序之一,它的伟大工作。

我希望它也能为你工作。

  File pngDir = new File(Environment.getExternalStorageDirectory(),"Android/data/Textures"); if (!pngDir.exists()) { pngDir.mkdirs(); } File pngfile = new File(pngDir,"texture1.png"); Uri pngUri = Uri.fromFile(pngfile); Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("image/png"); shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Text to Share"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Context to share"); shareIntent.putExtra(android.content.Intent.EXTRA_STREAM, pngUri); //Share the image on Facebook PackageManager pm = getApplicationContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities( shareIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { 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); startActivity(shareIntent); break; } } 

在这个我已经使用存储在设备中的特定位置的图像。 您可以根据您的图像位置进行更改。

请参阅FaceBook页面了解更多详情

它看起来像我们不能通过一个文本分享在Facebook应用程序。

Facebook分享意图的详细信息