Android 无法分享到 Facebook

Android Share to Facebook not working

我正在尝试分享内容 URL 并将其发送到 Facebook。我一直在关注官方文档我在等级上有依赖关系并且我的清单文件中有以下内容

        <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />

  <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />

  <provider android:authorities="com.facebook.app.FacebookContentProvider247315745828416"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true"/>
</application>

我可以正常使用 Facebook 登录我的应用程序。在我的代码中,我通过执行以下操作来调用共享内容

private void uploadToFacebook(){

    ShareLinkContent content = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("https://developers.facebook.com"))
            .build();
    shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);
    toastMessage("Done");

}

当我 运行 没有 shareDialog.show() 的代码出现吐司消息但 url 没有发送到我的 facebook 墙上。

当我包含 shareDialog.show() 时,应用程序崩溃,并且出现空指针异常。

内容绝对是一个对象,因为当我将它转换为字符串时得到一个值

com.facebook.share.model.ShareLinkContent@c63dc77

我正在使用 android 版本 2.3.3 任何帮助将不胜感激,因为我似乎无法理解我做错了什么。我也存储了一个密钥哈希。

在您的清单文件中:

<meta-data android:name="com.facebook.sdk.ApplicationName"
        android:value="@string/app_name" />
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges=
            "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />

    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>

我想你的清单上已经有互联网许可了。

然后试试这个:

import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.widget.LikeView;
import com.facebook.share.widget.ShareButton;

//在创建时

private ShareButton shareButton;
private ShareLinkContent content;

FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);

shareButton = (ShareButton) findViewById(R.id.sharing_button);
            content = new ShareLinkContent.Builder()
                    .setContentUrl(Uri.parse("your-url"))
                    .build();

            shareButton.setShareContent(content);

应该这样做。 考虑到 facebook sdk 已经更新,一些以前的功能可能会被弃用或从 2/5/2018 开始无法使用。更多信息 here.

希望对您有所帮助。

所以我找到了答案。

在我的 on create 中,我从未将以下内容添加到 on create

shareDialog = new ShareDialog(this);

这不在教程中。对于使用本教程的所有其他人,请创建内容,然后在相同的函数中,在创建内容的位置下方创建内容 add

shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);

分享内容