34 votes

intégration de Twitter sur l'application Android

J'aimerais intégrer Twitter à mon application Android pour pouvoir poster des messages sur Twitter.

20voto

Cjames Points 610

Voici comment je le fais

D'abord j'ai créé un dialogue pour la 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();
    }

}
 

} // Et ensuite dans votre 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();
    }

}
 

15voto

CommonsWare Points 402670

En plus des choix solides de D., vous pouvez:

  • Utilisez ACTION_SEND %% Intents avec createChooser() et si l'utilisateur a une application Twitter installée (Twidroid), il peut l'utiliser pour mettre à jour son statut.
  • Utiliser une API Java Twitter existante, telle que JTwitter

4voto

David Hedlund Points 66192

Tout ce que vous devez savoir sur la communication avec Twitter est ici .

Pour envoyer des requêtes HTTP à partir de votre application, consultez ce guide .

1voto

Sarpe Points 341

Essayez avec ce client simple TwitterEasyClient

Il suffit d'ajouter des autorisations dans votre manifeste

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

Et utilisez-le de cette façon:

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

0voto

Kailas Points 672

Optez toujours pour les technologies les plus récentes, car l’intégration de twitter peut être réalisée facilement à l’aide de Twitter4j. Les API fournies par twitter changent de temps en temps. Twiter SDK serait une bonne option. Vous pouvez trouver les détails ici pour twitter4j.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X