Android Поделиться на Facebook не работает - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь поделиться контентом 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, любая помощь будет принята с благодарностью, так как я не могу понять, что я сделал неправильно.У меня также хранится ключевой хеш.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Итак, я нашел ответ.

В моей работе по созданию я никогда не добавлял следующее при создании

shareDialog = new ShareDialog(this);

Этого нет в руководстве.Для всех остальных, использующих учебник, создайте контент, затем в той же функции создайте контент ниже, где он будет создан, добавьте

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

Чтобы поделиться контентом

0 голосов
/ 05 июня 2018

В вашем файле манифеста:

<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 был обновлен, и некоторые предыдущие функции могут быть устаревшими или не работать, начиная с 5/5/2018.Больше информации здесь .

Надеюсь, это помогло.

...