【问题标题】:Android Share to Facebook not workingAndroid 分享到 Facebook 不起作用
【发布时间】:2018-06-04 23:14:16
【问题描述】:

我正在尝试共享内容 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() 的情况下运行代码时,会出现 toast 消息,但 url 不会发送到我的 facebook 墙上。

当我加入 shareDialog.show() 时,应用程序崩溃并且我得到一个空指针异常。

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

com.facebook.share.model.ShareLinkContent@c63dc77

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

【问题讨论】:

标签: java android facebook facebook-sdk-4.0 android-studio-2.3


【解决方案1】:

在您的清单文件中:

<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 已经更新,并且从 2018 年 2 月 5 日开始,一些以前的功能可能已被弃用或无法正常工作。更多信息here

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    所以我找到了答案。

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

    shareDialog = new ShareDialog(this);
    

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

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

    分享内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多