2016-07-28 78 views
0

我在我的Android应用程序中第一次集成微博,我可以发布鸣叫,我想分享图像从应用程序,我有图像的URL(这是存储在AmazonS3服务器)。我想从我的Android应用程序共享此图像..please任何人都可以提供的步骤来实现这一Android的twitter鸣叫与图像

public class TwitterIntegration extends GlobalActivity { 
    TwitterAuthClient mTwitterAuthClient; 
    TwitterApiClient twitterApiClient; 
    Preferences preferences; 
    UserHistory userHistory; 
    StatusesService statusesService; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     preferences=HWUtil.getPreferences(this); 
     userHistory=preferences.getUserHistory(); 
     mTwitterAuthClient=new TwitterAuthClient(); 
     mTwitterAuthClient.authorize(this, new Callback<TwitterSession>() { 
      @Override 
      public void success(Result<TwitterSession> result) { 
       TwitterSession session = result.data; 
       Log.d("user", session.getUserName()); 
       Log.d("user", session.toString()); 
       HWUtil.showToast(TwitterIntegration.this, session.getUserName()); 
       twitterApiClient = TwitterCore.getInstance().getApiClient(session); 
       statusesService = twitterApiClient.getStatusesService(); 
       statusesService.update("Hii from android", null, null, null, null, 
         null, null, null, new Callback<Tweet>() { 
          @Override 
          public void success(Result<Tweet> result) { 
           HWUtil.showToast(TwitterIntegration.this, "Posted SucessFully"); 
           if(Validator.isNotNull(userHistory.getHistoryPictures())&& userHistory.getHistoryPictures().length>0){ 
            shareImage(); 
           } 



          } 

          public void failure(TwitterException exception) { 
           HWUtil.showToast(TwitterIntegration.this, "Failed to post"); 
          } 
         }); 
      } 

      @Override 
      public void failure(TwitterException exception) { 
       HWUtil.showToast(TwitterIntegration.this, exception.getMessage()); 
      } 
     }); 


    } 

    private void shareImage() { 
     if(Validator.isNotNull(twitterApiClient)){ 
      MediaService mediaService=twitterApiClient.getMediaService(); 

     } 
    } 


    @Override 
    protected void onActivityResult(int requestCode, int responseCode, Intent intent) { 
     // Pass the activity result to the login button. 
     super.onActivityResult(requestCode,responseCode,intent); 
     mTwitterAuthClient.onActivityResult(requestCode, responseCode, intent); 
    } 

} 
+1

首先下载图片,然后在twitter上分享图片 –

+0

使用Rest Api?你可以提供任何示例,它会更有帮助@amit –

+0

显示你的鸣叫文本的代码 – Vickyexpert

回答

1

首先我们要下载所有的图像由@amit说我使用的AsyncTask

public class DownLoadImageAsyncTask extends AsyncTask{ 

     @Override 
     protected void onPreExecute() { 
      progressDialog=new ProgressDialog(TwitterIntegration.this); 
      progressDialog.setCancelable(false); 
      progressDialog.setMessage(getString(R.string.please_wait)); 
      progressDialog.setIndeterminate(true); 
      if(Validator.isNotNull(preferences.getImagePath())&& !preferences.getImagePath().isEmpty()){ 
       preferences.getImagePath().clear(); 
      } 
      filePath=preferences.getImagePath(); 
     } 

     @Override 
     protected Object doInBackground(Object[] params) { 

      File file=new File(Environment.getExternalStorageDirectory(),"/HealthWel"); 
      if(file.exists()==true){ 
       file.delete(); 
      } 
      file.mkdir(); 
      for (int i=0;i<mURLs.size();i++){ 
       File f=new File(file+"/"+i+".jpg"); 
       if(f.exists()==true){ 
        f.delete(); 
       } 
       if(f.exists()==false){ 
        HttpClient httpClient=new DefaultHttpClient(); 
        HttpGet httpGet=new HttpGet(mURLs.get(i)); 
        try { 
         HttpResponse httpResponse=httpClient.execute(httpGet); 
         if(httpResponse.getStatusLine().getStatusCode()==200){ 
          HttpEntity httpEntity=httpResponse.getEntity(); 
          InputStream is=httpEntity.getContent(); 
          Boolean status=f.createNewFile(); 
          FileOutputStream fileOutputStream=new FileOutputStream(f); 
          byte[]buffer=new byte[1024]; 
          long total=0; 
          int count; 
          while ((count=is.read(buffer))!=-1){ 
           total+=count; 
           fileOutputStream.write(buffer,0,count); 
          } 
          if(!downLoad) { 
           if (Validator.isNotNull(preferences.getImagePath()) && !preferences.getImagePath().isEmpty()) { 
            preferences.getImagePath().clear(); 
           } 
          } 

          filePath.add(f.getPath()); 
          fileOutputStream.close(); 
          is.close(); 
          runOnUiThread(new Runnable() { 
           public void run() { 
            // runs on UI thread 
            progressDialog.show(); 
           } 
          }); 

         } 
         else { 
          finish(); 
         } 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Object o) { 
      preferences.setImagePath(filePath); 
      dismissProgressDialog(); 
      shareImage(); 
     } 
    } 

    private void showProgressDialog() { 
     if(!isFinishing() && progressDialog==null) { 
      progressDialog = new ProgressDialog(this); 
      progressDialog.setCancelable(false); 
      progressDialog.show(); 

     } 

    } 

    /** 
    * dismiss Progress Dialog. 
    */ 
    private void dismissProgressDialog() { 
     if (!isFinishing() &&progressDialog!=null && progressDialog.isShowing()) { 
      progressDialog.dismiss(); 
      progressDialog=null; 
     } 
    } 

那么我们必须使用rest api将其上传到twitter,以使用状态服务获取媒体ID,之后我们必须p将其与所有媒体ID的状态一起作为后置。这完全适合我。