twitter integration on android app twitter integration on android app android android

twitter integration on android app


This is how I do it

First i made a Dialog for the 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;}@Overrideprotected 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();    }}}

//And then into your 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();    }}


In addition to d.'s solid choices, you could:

  • Use ACTION_SEND Intents with createChooser(), and if the user has a Twitter application installed (Twidroid) they can use it to update their status
  • Use an existing Twitter Java API, like JTwitter


Everything you need to know about communicating with Twitter is here.

For sending HTTP requests from your application, check out this guide.