2009-11-23 71 views
34

我想將Twitter集成到我的Android應用程序中,以便我可以將消息發佈到Twitter。在Android應用程序上的twitter集成

+0

這就像吃你最喜歡的蛋糕一樣簡單..按照這個教程http://tech-papers.org/integrate-twitter-with-android-application/ – 2014-10-25 16:40:18

回答

15

除了d的堅實的選擇,你可以:

  • 使用ACTION_SENDIntentscreateChooser(),如果用戶安裝了Twitter應用程序(Twidroid),他們可以用它來更新自己的狀態
  • 使用現有的Twitter Java API中,像JTwitter
+0

我檢查了一下,看看你是如何做的一體化我最終下載了。做得好! – SapphireSun 2011-01-09 09:38:12

+5

'ACTION_SEND'太含糊。 Gmail和Dropbox都符合條件。 [我建議你過濾](http://regis.decamps.info/blog/2011/06/intent-to-open-twitter-client-on-android/)基於已知軟件包名稱的列表。 – rds 2011-06-02 10:05:46

+0

刪除了評論,更新了詳細信息:我不再在我的Android應用中使用JTwitter(並且此後Twitter API和條款已完全更改,使直接集成更具挑戰性)。 我曾經做過的應用程序的源代碼,Congress,也轉移到:github.com/sunlightlabs/congress-android - 但它不再有直接的Twitter集成。 – Konklone 2014-01-07 18:56:39

4

您需要了解的與Twitter通信的所有內容是here

要從您的應用程序發送HTTP請求,請查看this guide

20

這是我要做的事

首先我做了一個對話的的WebView Twitter_Dialog.java

public class Twitter_Dialog extends Dialog 
{ 

static final int      BLUE     = 0xFF6D84B4; 
static final float[]     DIMENSIONS_DIFF_LANDSCAPE = 
                   { 20, 60 }; 
static final float[]     DIMENSIONS_DIFF_PORTRAIT = 
                   { 40, 60 }; 
static final FrameLayout.LayoutParams FILL     = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); 
static final int      MARGIN     = 4; 
static final int      PADDING     = 2; 
static final String     DISPLAY_STRING   = "touch"; 

private String      mUrl; 
private ProgressDialog    mSpinner; 
private WebView      mWebView; 
private LinearLayout     mContent; 
private TextView      mTitle; 

public Twitter_Dialog(Context context, String url) 
{ 
    super(context); 
    mUrl = url; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    mSpinner = new ProgressDialog(getContext()); 
    mSpinner.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    mSpinner.setMessage("Loading..."); 

    mContent = new LinearLayout(getContext()); 
    mContent.setOrientation(LinearLayout.VERTICAL); 
    setUpTitle(); 
    setUpWebView(); 
    Display display = getWindow().getWindowManager().getDefaultDisplay(); 
    final float scale = getContext().getResources().getDisplayMetrics().density; 
    int orientation = getContext().getResources().getConfiguration().orientation; 
    float[] dimensions = (orientation == Configuration.ORIENTATION_LANDSCAPE) ? DIMENSIONS_DIFF_LANDSCAPE : DIMENSIONS_DIFF_PORTRAIT; 
    addContentView(mContent, new LinearLayout.LayoutParams(display.getWidth() - ((int) (dimensions[0] * scale + 0.5f)), display.getHeight() - ((int) (dimensions[1] * scale + 0.5f)))); 
} 

private void setUpTitle() 
{ 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    Drawable icon = getContext().getResources().getDrawable(R.drawable.twitter_icon); 
    mTitle = new TextView(getContext()); 
    mTitle.setText("Website"); 
    mTitle.setTextColor(Color.WHITE); 
    mTitle.setTypeface(Typeface.DEFAULT_BOLD); 
    mTitle.setBackgroundColor(BLUE); 
    mTitle.setPadding(MARGIN + PADDING, MARGIN, MARGIN, MARGIN); 
    mTitle.setCompoundDrawablePadding(MARGIN + PADDING); 
    mTitle.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); 
    mContent.addView(mTitle); 
} 

private void setUpWebView() 
{ 
    mWebView = new WebView(getContext()); 
    mWebView.setVerticalScrollBarEnabled(false); 
    mWebView.setHorizontalScrollBarEnabled(false); 
    mWebView.setWebViewClient(new Twitter_Dialog.DialogWebViewClient()); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    System.out.println(" mURL = "+mUrl); 

    mWebView.loadUrl(mUrl); 
    mWebView.setLayoutParams(FILL); 
    mContent.addView(mWebView); 
} 

private class DialogWebViewClient extends WebViewClient 
{ 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     view.loadUrl(url); 
     return true; 
    } 
    @Override 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) 
    { 
     super.onReceivedError(view, errorCode, description, failingUrl); 
     Twitter_Dialog.this.dismiss(); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) 
    { 
     super.onPageStarted(view, url, favicon); 
     mSpinner.show(); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) 
    { 
     super.onPageFinished(view, url); 
     String title = mWebView.getTitle(); 
     if (title != null && title.length() > 0){ 
      mTitle.setText(title); 
      if(title.equals("Twitter")){ 
       //This will close the Dialog after tweeting 
       Twitter_Dialog.this.dismiss(); 

      } 
     } 
     mSpinner.dismiss(); 
    } 

} 
} 

//然後進入你的Main.java

public class Main extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      new Twitter_Dialog(Main.this,"http://twitter.com/?status="+Uri.encode("Twitter Post")).show(); 
    } 

} 
+0

優秀的代碼,但你可以告訴我如何使用此代碼發佈圖片 – Dilip 2012-10-06 09:43:18

+0

如何在Twitter上推送我的消息(我的遊戲得分)。 – 2014-04-12 12:12:30

+0

如何我不能在twitter上點擊按鈕進行按摩 – 2014-04-12 12:26:00

1

嘗試用這種簡單的客戶端TwitterEasyClient

就在您的清單

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

添加權限,並以這種方式使用它:

//setup 
    TwitterDialogFragment twitterDialog = new TwitterDialogFragment.Builder("message","url.com") // 
    .callbackUrl("http://www.website.com") // 
    .consumerKey("XXXXXXXXXXXXXXXXXXXXXX") // 
    .consumerSecret("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") // 
    .urlOAuth("oauth_verifier") // 
    .build(); 

    //show the dialog 
    twitterDialog.show(getSupportFragmentManager(), TwitterDialogFragment.class.getSimpleName()); 
2

您可以使用Twitter Helper將Twitter整合到您的Android應用程序中。它非常簡單。

相關問題