gpt4 book ai didi

Android 和 Facebook 共享 Intent

转载 作者:IT老高 更新时间:2023-10-28 13:09:24 24 4
gpt4 key购买 nike

我正在开发一款 Android 应用,并且很想知道如何使用 Android 的分享 Intent 在应用内更新应用用户的状态。

查看了 Facebook 的 SDK,这似乎很容易做到,但是我希望允许用户通过常规的共享 Intent 弹出窗口来做到这一点?在这里看到:

pop up

我已经尝试了通常的分享 Intent 代码,但这似乎不再适用于 Facebook。

public void invokeShare(Activity activity, String quote, String credit) {
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, activity.getString(R.string.share_subject));
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Example text");

activity.startActivity(Intent.createChooser(shareIntent, activity.getString(R.string.share_title)));
}

更新:进行了更多挖掘后,它看起来好像是 Facebook 应用程序的一个尚未解决的错误! (facebook bug) 与此同时,我似乎只能忍受负面的“分享不起作用!!!”评论。干杯 Facebook :*(

最佳答案

显然 Facebook 不再(截至 2014 年)允许您自定义共享屏幕,无论您是否只是打开 sharer.php URL或以更专业的方式使用 Android Intent。例如,请参阅以下答案:

无论如何,使用普通 Intent,可以仍然共享一个 URL,但不能共享任何默认文本,如 billynomates commented . (此外,如果您没有要分享的 URL,只需使用空白的“Write Post”(即状态更新)对话框启动 Facebook 应用程序同样容易;使用下面的代码,但省略 EXTRA_TEXT。)

这是我发现涉及使用任何 Facebook SDK 的最佳解决方案。

如果已安装,此代码直接打开官方 Facebook 应用,否则返回在浏览器中打开 sharer.php。 (这个问题中的大多数其他解决方案都会提出 a huge "Complete action using…" dialog 这根本不是最优的!)

String urlToShare = "https://stackoverflow.com/questions/7545254";
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
// intent.putExtra(Intent.EXTRA_SUBJECT, "Foo bar"); // NB: has no effect!
intent.putExtra(Intent.EXTRA_TEXT, urlToShare);

// See if official Facebook app is found
boolean facebookAppFound = false;
List<ResolveInfo> matches = getPackageManager().queryIntentActivities(intent, 0);
for (ResolveInfo info : matches) {
if (info.activityInfo.packageName.toLowerCase().startsWith("com.facebook.katana")) {
intent.setPackage(info.activityInfo.packageName);
facebookAppFound = true;
break;
}
}

// As fallback, launch sharer.php in a browser
if (!facebookAppFound) {
String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + urlToShare;
intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
}

startActivity(intent);

(关于 com.facebook.katana 包名,请参见 MatheusJardimB's comment。)

在我安装了 Facebook 应用的 Nexus 7 (Android 4.4) 上的结果如下所示:

enter image description here

关于Android 和 Facebook 共享 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com