在Facebook上通过Intent分享文本而不使用Facebook sdk

由于Facebook不允许通过Intent共享文本,除非我们使用Facebook sdk,我正在寻找实现这一目标的方法。

我可以想到我可以使用的3个黑客:

1)由于Facebook允许图像共享,我可以生成一个Bitmap其中共享文本绘制在其上并使用Intent共享图像。

2)Facebook允许共享URL,在共享时它还显示页面的Head 。 我可以在我的服务器上托管一个专用页面,并将值作为parameter passing到url中,并使用它生成Head 。(我没有使用php的经验,但我想这是可能的)

3)将文本复制到剪贴板并通知用户。

要么

使用所有3的组合。

任何人都可以建议我更好的方式在Facebook上分享我的内容,而不使用Facebook sdk?

提前致谢。

  • SERVER_ERROR: 1675030 :执行查询时出错
  • Android FaceBook newMyFriendsRequest返回空的朋友列表
  • 设置从Facebooklogin获取用户电子邮件ID的权限
  • Android Facebook SDK:“(#404)Keyhash XXXXXX与任何存储的密钥哈希值不匹配”
  • 在requestNewReadPermissions然后requestNewPublishPermissions之后不调用StatusCallback
  • Facebook Android SDK 3.0在登录时始终返回OPENING
  • 使用parsingTwitter / Facebook身份validation注销或切换帐户
  • Facebook SDK 4.7.0记录AppEventsLogger的ClassNotFoundException
  • 你无法使用android shareIntent在Facebook上单独分享文本。

    只有通过Facebook SDK才能使用共享链接function。

    如果有图像,Facebook只会忽略意图中的额外文本。 您可以共享图像,但不允许您共享文本内容。

    不幸的是,Facebook共享意图只能使用带有前缀http://的单个URL,而不会添加其他文本消息。 实际上facebook删除了文本内容,只允许URL / Link。 它是由设计,我们无法控制它。

    这会奏效

     Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(Intent.EXTRA_TEXT, "http://www.google.com"); startActivity(Intent.createChooser(sharingIntent, "Share via")); 

    这不行。

     Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(Intent.EXTRA_TEXT, "Share Text from App"); startActivity(Intent.createChooser(sharingIntent, "Share via")); 

    只有你可以在Facebook上分享文字的方法是使用Facebook SDK。

    参考链接

    Android共享文本和链接的Android共享意图

    无法通过Android Share Intent与链接共享文本

    Android和Facebook分享意图

    首先,为了在FB上共享文本,你必须使用FB SDK。

    没有FB SDK更好的选择是去一个带有“OG”数据的专用网站,它将自动解决。 这样,您可以在需要更改时更改OG数据。

    我建议你去找你的黑客号码2.但是,通过这种方法,FB允许用户点击链接并重定向到网站,你可以尝试根据你的要求处理。

    我希望你能澄清一下。

    有关OG的详细信息,请查看此Open Graph详细信息

    使用此function,我希望它会有所帮助

     public static void share(Context context, String text, String subject, String title, String dialogHeaderText) { Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); intent.putExtra(android.content.Intent.EXTRA_TEXT, text); intent.putExtra(Intent.EXTRA_TITLE, title); context.startActivity(Intent.createChooser(intent, dialogHeaderText)); } 

    此代码允许您仅在Facebook上粘贴您的内容。 id做的是获取手机中存在的所有应用程序的列表,然后find打开然后打开的Facebook应用程序(如果已经存在)

      Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text to be shared"); PackageManager pm = getPackageManager(); List 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; } } 

    检查一下:

     Intent share=new Intent(Intent.ACTION_SEND); share.setType("text/plain"); share.putExtra(Intent.EXTRA_TEXT, "Some text you would like to share..."); share.setPackage("com.facebook.katana"); //Facebook App package startActivity(Intent.createChooser(share, "Title of the dialog the system will open")); 

    您不需要使用此代码的facebook SDK ……

    为了增强您的用户体验,您可以检查是否安装了Facebook App(或FacebookLite App)软件…

    当您使用本机意图时,如果用户使用意图中的数据,则由用户共享的应用程序决定。

    这是一个已知的错误,Facebook已将此错误列入愿望清单。 也许他们并没有试图修复它。 这是故意让人们使用我认为的FB SDK。 请参阅此链接http://forum.developers.facebook.net/viewtopic.php?id=93900和这篇文章

    http://forum.developers.facebook.net/viewtopic.php?id=93900

    如果您不介意呈现其他共享选项,您可以使用常规共享意图与选择器,因为如果启用Facebook,Facebook将成为共享选项之一。

     Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); shareIntent.setType("text/plain"); startActivity(Intent.createChooser(shareIntent, "Choose sharing method"));