2016-04-04 12 views
2

Ich verwende Stoff, um Twitter in Android-Anwendung zu integrieren.Rückruf beim Senden Tweet 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()); 
      } 
     }); 
    } 
} 

Ich habe Twitter-Anwendung in meinem Gerät nicht installiert.

Also Twitter Composer öffnet WebBroswer.

Nach geposteten Tweet bekomme ich Bildschirm wie unten, die nicht auf App umleiten.

enter image description here

Hinweis: Während Login es perfekt funktioniert ..

Dank.

+0

geschrieben worden Können Sie Ihre Lösung teilen? was meinst du mit login funktioniert es perfekt? – 2MuchSmoke

+0

Sie können Webview verwenden, um die URL nach dem Twittern mit dem Schlüsselwort "complete" zu filtern und Ihre eigene Callback-Funktion zu erstellen, wenn die native App nicht installiert ist. –

Antwort

2

Nicht sicher, ob Sie das gleiche Problem haben, hatte ich aber in meinem Fall war ich die onActivityResult() Rückruf erhalten, aber die resulCode wurde nicht RESULT_OK obwohl die Tweet erfolgreich

+0

Also in Ihrem Fall wird 'onActivityResult' aufgerufen? – AndiGeeky

+0

Ja, in der Tat, aber resultCode war nicht OK –