2012-09-28 2 views
0

J'ai vu this answer pour le même type de question. quand je suis en utilisant le code de son lancer toujours un Twitter Exception .Je fais appel comme upload_twic_pic(new File("my_image_path"));Comment poster une photo sur Twitter à partir de l'application android en utilisant Twitter4j

et obtenir suivants Exception

W/System.err(2195): Connection reset by peerRelevant discussions can be on the Internet at: 
W/System.err(2195):  http://www.google.co.jp/search?q=ea09dc6d or 
W/System.err(2195):  http://www.google.co.jp/search?q=050d9b43 
W/System.err(2195): TwitterException{exceptionCode=[ea09dc6d-050d9b43 0237e8c8-9ca5c8e4], statusCode=-1, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null, version=2.2.3} 
W/System.err(2195):  at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:204) 
+0

essayez ceci pour twitter4j mis à jour http://stackoverflow.com/questions/17093499/how-to-post-image-to-twitter-in-android/20633178#20633178 – Prachi

Répondre

2

trouvé la réponse here qui fonctionne comme un charme. juste eu à copier et à dépasser le code fourni dans la réponse et utilisait ancien fichier jar je l'ai remplacé avec le dernier comme indiqué dans la réponse.

2
public class MainActivity extends Activity { 
    // Constants 
    /** 
    * Register your here app https://dev.twitter.com/apps/new and get your 
    * consumer key and secret 
    * */ 
    static String TWITTER_CONSUMER_KEY = "uTMokDQHlUP8rjl6LEmgjg"; // place your cosumer key here 
    static String TWITTER_CONSUMER_SECRET = "xrI8yw6QBKa0ny7N4Nru01JiX4sIThsxzGV4MJ3YOUY"; // place your consumer secret here 

    // Preference Constants 
    static String PREFERENCE_NAME = "twitter_oauth"; 
    static final String PREF_KEY_OAUTH_TOKEN = "oauth_token"; 
    static final String PREF_KEY_OAUTH_SECRET = "oauth_token_secret"; 
    static final String PREF_KEY_TWITTER_LOGIN = "isTwitterLogedIn"; 

    static final String TWITTER_CALLBACK_URL = "hello://sample"; 

    // Twitter oauth urls 
    static final String URL_TWITTER_AUTH = "auth_url"; 
    static final String URL_TWITTER_OAUTH_VERIFIER = "oauth_verifier"; 
    static final String URL_TWITTER_OAUTH_TOKEN = "oauth_token"; 

    // Login button 
    Button btnLoginTwitter; 


    // Progress dialog 
    ProgressDialog pDialog; 

    // Twitter 
    private static Twitter twitter; 
    private static RequestToken requestToken; 

    // Shared Preferences 
    private static SharedPreferences mSharedPreferences; 



    // Alert Dialog Manager 
    AlertDialogManager alert = new AlertDialogManager(); 

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

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

     cd = new ConnectionDetector(getApplicationContext()); 




     // All UI elements 
     btnLoginTwitter = (Button) findViewById(R.id.btnLoginTwitter); 


     // Shared Preferences 
     mSharedPreferences = getApplicationContext().getSharedPreferences(
       "MyPref", 0); 

     /** 
     * Twitter login button click event will call loginToTwitter() function 
     * */ 
     btnLoginTwitter.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // Call login twitter function 
       loginToTwitter(); 
      } 
     }); 




     if (!isTwitterLoggedInAlready()) { 
      Uri uri = getIntent().getData(); 
      if (uri != null && uri.toString().startsWith(TWITTER_CALLBACK_URL)) { 
       // oAuth verifier 
       String verifier = uri 
         .getQueryParameter(URL_TWITTER_OAUTH_VERIFIER); 

       try { 
        // Get the access token 
        AccessToken accessToken = twitter.getOAuthAccessToken(
          requestToken, verifier); 

        // Shared Preferences 
        Editor e = mSharedPreferences.edit(); 

        // After getting access token, access token secret 
        // store them in application preferences 
        e.putString(PREF_KEY_OAUTH_TOKEN, accessToken.getToken()); 
        e.putString(PREF_KEY_OAUTH_SECRET, 
          accessToken.getTokenSecret()); 
        // Store login status - true 
        e.putBoolean(PREF_KEY_TWITTER_LOGIN, true); 
        e.commit(); // save changes 

        Log.e("Twitter OAuth Token", "> " + accessToken.getToken()); 



        // Getting user details from twitter 
        // For now i am getting his name only 
        long userID = accessToken.getUserId(); 
        User user = twitter.showUser(userID); 
        String username = user.getName(); 


       } catch (Exception e) { 
        // Check log for login errors 
        Log.e("Twitter Login Error", "> " + e.getMessage()); 
       } 
      } 
     } 

    } 

    /** 
    * Function to login twitter 
    * */ 
    private void loginToTwitter() { 
     // Check if already logged in 
     if (!isTwitterLoggedInAlready()) { 
      ConfigurationBuilder builder = new ConfigurationBuilder(); 
      builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); 
      builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET); 
      Configuration configuration = builder.build(); 

      TwitterFactory factory = new TwitterFactory(configuration); 
      twitter = factory.getInstance(); 

      try { 
       requestToken = twitter 
         .getOAuthRequestToken(TWITTER_CALLBACK_URL); 
       this.startActivity(new Intent(Intent.ACTION_VIEW, Uri 
         .parse(requestToken.getAuthenticationURL()))); 
      } catch (TwitterException e) { 
       e.printStackTrace(); 
      } 
     } else { 

      new updateTwitterStatus().execute("helloooo"); 

     } 
    } 

    /** 
    * Function to update status 
    * */ 
    class updateTwitterStatus extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Updating to twitter..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     /** 
     * getting Places JSON 
     * */ 
     protected String doInBackground(String... args) { 
      //Log.d("Tweet Text", "> " + args[0]); 
      String status = args[0]; 
      try { 
       ConfigurationBuilder builder = new ConfigurationBuilder(); 
       builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); 
       builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET); 

       // Access Token 
       String access_token = mSharedPreferences.getString(PREF_KEY_OAUTH_TOKEN, ""); 
       // Access Token Secret 
       String access_token_secret = mSharedPreferences.getString(PREF_KEY_OAUTH_SECRET, ""); 

       AccessToken accessToken = new AccessToken(access_token, access_token_secret); 

       Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken); 

       // Update status 

       StatusUpdate ad=new StatusUpdate("RaagFm"); 



       // The InputStream opens the resourceId and sends it to the buffer 
       InputStream is = getResources().openRawResource(R.raw.icon); 

       ad.setMedia("RaagFm",is); 

       twitter4j.Status response = twitter.updateStatus(ad); 



       Log.d("Status", "> " + response.getText()); 
      } catch (TwitterException e) { 
       // Error in updating status 
       Log.d("Twitter Update Error", e.getMessage()); 
      } 
      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog and show 
     * the data in UI Always use runOnUiThread(new Runnable()) to update UI 
     * from background thread, otherwise you will get error 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog after getting all products 
      pDialog.dismiss(); 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), 
          "Status tweeted successfully", Toast.LENGTH_SHORT) 
          .show(); 

       } 
      }); 
     } 

    } 




    private boolean isTwitterLoggedInAlready() { 
     // return twitter login status from Shared Preferences 
     return mSharedPreferences.getBoolean(PREF_KEY_TWITTER_LOGIN, false); 
    } 

    protected void onResume() { 
     super.onResume(); 
    } 

} 
Questions connexes