Integración de Twitter en la aplicación de Android

Me gustaría integrar Twitter en mi aplicación Android para poder publicar mensajes en Twitter.

Además de las opciones sólidas de d., Usted podría:

  • Use ACTION_SEND Intents con createChooser() , y si el usuario tiene una aplicación de Twitter instalada (Twidroid) puede usarla para actualizar su estado
  • Utilice una API Java de Twitter existente, como JTwitter

Así es como lo hago

Primero hice un cuadro de diálogo para la vista web 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(); } } } 

// Y luego en tu 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(); } } 

Todo lo que necesitas saber sobre la comunicación con Twitter está aquí .

Para enviar solicitudes HTTP desde su aplicación, consulte esta guía .

Puede usar Twitter Helper para integrar Twitter en su aplicación de Android. Es muy sencillo.

Prueba con este simple cliente TwitterEasyClient

Solo agrega permisos en tu manifiesto

    

Y úsalo de esta manera:

  //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()); 

Siempre busque las últimas tecnologías, ya que la integración de Twitter se puede hacer fácilmente usando Twitter4j, también las API provistas por Twitter cambian de vez en cuando. Twiter SDK sería una buena opción. U puede encontrar los detalles aquí para twitter4j.

Para algunas personas que quieran usar twitter4j y DialogFragment también son compatibles con el cambio de orientación echa un vistazo a mi idea principal https://gist.github.com/zeroarst/10071064adcf171277f9