Android Share — Facebook SDK — ShareActionProvider

Я пытаюсь реализовать обмен простой строкой внутри своего приложения. Очевидно, все, кроме Facebook, работает. Насколько я знаю, теперь мне приходится использовать их Facebook SDK для размещения статусов на стене.

Однако, если я реализую его с помощью их SDK, есть ли способ включить его в средство выбора (по умолчанию или ShareActionProvider) и каким-то образом переопределить его и вставить реализацию Facebook SDK?

Или мне нужно создать специальную кнопку?

//РЕДАКТИРОВАТЬ

package com.example.shareactionproviderdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent sharingIntent = new Intent(Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Test message");
        startActivity(Intent.createChooser(sharingIntent, "Share using"));
    }

}

введите здесь описание изображения


person urSus    schedule 14.11.2012    source источник


Ответы (1)


Ответ заключается в том, что вы не можете поделиться строкой на собственной стене пользователя, используя намерения. Для этого вам понадобится SDK. Причина в том, что Facebook не разрешает предварительное заполнение обновления статуса пользователя, как показано на платформе . Политика IV.2.

Однако, если вы используете SDK, мы предоставили диалоговое окно канала, которое предлагает пользователю поделиться статусом и позволяет разработчику предварительно заполнить части обновления статуса. Однако он не включен в собственный селектор Android.

Внешний отчет об ошибке, который отслеживает эту проблему, находится здесь.

person Jesse Chen    schedule 14.11.2012
comment
Это не работает для меня, когда появляется окно выбора, я выбираю Facebook, и все, что я вижу, это пустой текст редактирования, как будто строка EXTRA_TEXT не была получена. Любая идея, что я делаю неправильно? Я вижу, ты разветвляешься на фейсбуке. //Я обновил вопрос фрагментом и скриншотом - person urSus; 14.11.2012
comment
Вы можете попробовать использовать EXTRA_SUBJECT вместо EXTRA_TEXT и сообщить, работает ли это для вас? - person Jesse Chen; 15.11.2012
comment
Это тоже не работает, это работает для вас? Потому что это никогда не работало для меня в прошлом, и я нашел множество тем по этой проблеме (stackoverflow.com/questions/3515198/). P.S. совместное использование URL-адреса работает точно так же, как указано в теме. - person urSus; 15.11.2012
comment
Да, это исходный код моего приложения для Android, и он отлично работает с Facebook и т. д. - person Jesse Chen; 15.11.2012
comment
какая у тебя версия андроида? - person urSus; 16.11.2012
comment
работает на всех моих устройствах, на которых установлено приложение facebook, от 2.3 до 4.2 - person Jesse Chen; 16.11.2012
comment
Ну, тогда я понятия не имею, между прочим, совместное использование работает в альтернативных клиентских приложениях, таких как Friendcaster или любых других, таких как Google+, Gmail и т. д. ... не могли бы вы прислать мне helloworld.apk только с тем кодом, который работает для вас? Начинает терять надежду. - person urSus; 16.11.2012
comment
Обновите приложение Facebook на устройстве, и вам не понадобится SDK facebook при использовании намерений. Я помню, что в более раннем приложении facebook была ошибка, которая не распознавала EXTRA_TEXT. - person PravinCG; 25.11.2012
comment
Вау, я полностью отключился, не думал и сделал большую ошибку. Без SDK вы не можете поделиться строкой с Facebook. Я обновил свой ответ, чтобы правильно ответить на ваш вопрос. Дайте мне знать, если у вас все еще есть вопросы, и я прошу прощения за первоначальный неправильный ответ. - person Jesse Chen; 29.11.2012
comment
Эта ссылка на Platform Policy IV.2 великолепна... как и любая другая ссылка двух-трехмесячной давности на документацию Facebook. - person nikib3ro; 02.03.2013