2016-04-04 4 views
2

Я использую ткань для интеграции Twitter в приложение Android.Обратный звонок во время отправки Tweet using TweetComposer?

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.

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

enter image description here

Примечание: В то время как это работает Войти идеально ..

Спасибо.

+0

Можете ли вы поделиться своим решением? что вы имеете в виду, когда он работает отлично? – 2MuchSmoke

+0

вы можете использовать веб-просмотр, чтобы фильтровать URL-адрес после твитов с ключевым словом «полный» и создать собственную функцию обратного вызова, если родное приложение не установлено. –

ответ

2

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

+0

Итак, в вашем случае вызывается 'onActivityResult'? – AndiGeeky

+0

Да действительно, но resultCode не был ОК –

 Смежные вопросы

  • Нет связанных вопросов^_^