通过Facebook分享意图为android果冻豆

And*_*tic 8 eclipse android android-intent

我想通过Facebook从android jelly bean分享一些图片和文字.除了android jelly bean之外,它适用于所有设备.有人请帮我解决这个问题.

我的代码

  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;
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我想要一些文字.但EXTRA_TEXT无效.如何在此EXTRA_TEXT中传递字符串或图像.

Jox*_*aex 6

你不应该直接针对Facebook.

相反,你应该只使用Share Intent.按照SDK中指定的额外内容传递数据,然后让用户选择要与之共享的内容.不要强迫他们使用Facebook,因为他们不是唯一的社交媒体.Theres还有twitter,4square以及用户使用的许多其他内容.让这些应用程序处理您的意图,不要指定如此严格的限制,因为这不是意图操作的ACTION_SEND工作方式.

至于你对Extra的问题,显然EXTRA_TEXT意图不会起作用,因为它不用于图像或任何像这样的引用.

阅读文档

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

它说:

启动SEND意图时,通常应将其包装在选择器中(通过createChooser(Intent,CharSequence)),这将为用户提供适当的接口,以便选择如何发送数据并允许您指定提示,指示它们是什么是做.

输入:getType()是要发送的数据的MIME类型.get*Extra可以包含EXTRA_TEXT或EXTRA_STREAM字段,包含要发送的数据.如果使用EXTRA_TEXT,则MIME类型应为"text/plain"; 否则它应该是EXTRA_STREAM中数据的MIME类型.如果MIME类型未知,则使用/(这将只允许可以处理通用数据流的发件人).如果使用EXTRA_TEXT,您还可以选择为客户提供EXTRA_HTML_TEXT以使用HTML格式检索文本.

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

可选的标准附加内容(可能由某些收件人酌情解释)为:EXTRA_EMAIL,EXTRA_CC,EXTRA_BCC,EXTRA_SUBJECT.

根据此信息,您还需要在intent类型中为特定数据设置mimetype.