Обратный вызов при отправке твита с помощью TweetComposer?

Я использую ткань для интеграции Twitter в Android-приложение.

public class MainActivity extends AppCompatActivity {

    private static final String TWITTER_KEY = "";
    private static final String TWITTER_SECRET = "";
    private TwitterLoginButton loginButton;
    private Button btnPostTweet;
    private static final int TWEET_COMPOSER_REQUEST_CODE = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
        Fabric.with(this, new Twitter(authConfig));
        setContentView(R.layout.activity_main);

        loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
        btnPostTweet = (Button) findViewById(R.id.btn_post_tweet);
        btnPostTweet.setOnClickListener(onClickListener);
        loginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
            Twitter.getInstance().core.getSessionManager().getActiveSession()
                TwitterSession session = result.data;
                String msg = "@" + session.getUserName() + " logged in! (#" + session.getUserId() + ")";
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
            }

            @Override
            public void failure(TwitterException exception) {
                Log.d("TwitterKit", "Login with Twitter failure", exception);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // Make sure that the loginButton hears the result from any
        // Activity that it triggered.
        if (requestCode == TWEET_COMPOSER_REQUEST_CODE && resultCode == RESULT_OK)
            Toast.makeText(MainActivity.this, "Updated tweet using composer", Toast.LENGTH_SHORT).show();
        else
            loginButton.onActivityResult(requestCode, resultCode, data);
    }

    private View.OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_post_tweet:
                    postTweet();
//                    postTweetManually();
                    break;
                default:
                    break;
            }
        }
    };

    private void postTweet() {
       /* TweetComposer.Builder builder = new TweetComposer.Builder(this)
                .text("just setting up my Fabric.");
        Intent twitterIntent = builder.createIntent();
        startActivityForResult(twitterIntent, REQUEST_TWEET_POST);*/

        Intent intent = null;
        try {
            intent = new TweetComposer.Builder(this)
                    .text("Tweet from Fabric!")
                    .url(new URL("http://www.twitter.com"))
                    .createIntent();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        startActivityForResult(intent, TWEET_COMPOSER_REQUEST_CODE);
    }

    private void postTweetManually() {
        TwitterSession twitterSession = Twitter.getSessionManager().getActiveSession();
        StatusesService statusesService = Twitter.getApiClient(twitterSession).getStatusesService();
        String username = Twitter.getSessionManager().getActiveSession().getUserName();
        statusesService.update("@" + username + "Manually update on twitter1", 1L, true, 0.0d, 0.0d, "", true, true, new Callback<Tweet>() {
            @Override
            public void success(Result<Tweet> result) {
                Toast.makeText(MainActivity.this, "Tweet Updated", Toast.LENGTH_LONG).show();
                Log.d("Tweet Updated", result.data.user.name);
            }

            @Override
            public void failure(TwitterException e) {
                Log.d("Tweet Update Failed", e.getMessage());
            }
        });
    }
}

На моем устройстве не установлено приложение Twitter.

Итак, TwitterComposer открывает WebBroswer.

После публикации твита я получаю экран, как показано ниже, который не перенаправляется в приложение.

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

Примечание. При входе в систему все работает отлично..

Спасибо.


person AndiGeeky    schedule 04.04.2016    source источник
comment
Можете ли вы поделиться своим решением? что вы имеете в виду, пока вход в систему работает идеально?   -  person 2MuchSmoke    schedule 24.01.2017
comment
вы можете использовать веб-просмотр, чтобы отфильтровать URL-адрес после твита с завершенным ключевым словом и создать свою собственную функцию обратного вызова, если собственное приложение не установлено.   -  person Zahid Ali    schedule 25.04.2017


Ответы (1)


Не уверен, что у вас та же проблема, что и у меня, но в моем случае я получал обратный вызов onActivityResult(), но resulCode не был RESULT_OK, хотя твит был успешно опубликован.

person Paulo Taylor    schedule 09.06.2016
comment
Итак, в вашем случае onActivityResult называется ? - person AndiGeeky; 09.06.2016
comment
Да, действительно, но resultCode не был в порядке - person Paulo Taylor; 18.08.2016