2009-11-23 3 views
34

Ich möchte Twitter in meine Android-Anwendung integrieren, so dass ich Nachrichten auf Twitter veröffentlichen kann.Twitter-Integration auf Android-App

+0

Dies ist so einfach wie das Essen Ihren Lieblingskuchen .. folgen Sie diesem Tutorial http://tech-papers.org/integrate-twitter-with-android-application/ –

Antwort

15

Neben d solide Auswahl, man kann.

  • Verwenden ACTION_SENDIntents mit createChooser(), und wenn der Benutzer über eine Twitter-Anwendung installiert (Twidroid) sie können es verwenden, um ihren Status zu aktualisieren
  • eine vorhandene Twitter Java API verwenden, wie JTwitter
+0

Ich habe es überprüft, nur um zu sehen, wie Sie die Integration gemacht haben und ich habe es heruntergeladen. Gut gemacht! – SapphireSun

+5

'ACTION_SEND' ist zu vage. Gmail und Dropbox sind berechtigt. [Ich schlage vor, Sie filtern] (http://regis.decamps.info/blog/2011/06/intent-to-open-twitter-client-on-android/) die Liste basierend auf bekannten Paketnamen. – rds

+0

Gelöscht ein Kommentar, aktualisierte Details: Ich benutze JTwitter nicht mehr in meiner Android App (und die Twitter API und AGB hat sich seitdem komplett geändert, was die direkte Integration schwieriger macht). Der Quellcode für die App, die ich gemacht habe, Congress, ist auch umgezogen: github.com/sunlightlabs/congress-android - aber es hat keine direkte Twitter-Integration mehr. – Konklone

4

Alles, was Sie über die Kommunikation mit Twitter wissen müssen, ist here.

Zum Senden von HTTP-Anfragen von Ihrer Anwendung, überprüfen Sie this guide.

20

Dies ist, wie ich es tun

Zuerst habe ich einen Dialog zur Webansicht 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(); 
    } 

} 
} 

// Und dann in die 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

ausgezeichneter Code, aber können Sie mir sagen, wie man Bild mit diesem Code – Dilip

+0

wie kann twitte meine Nachricht (meine Spielpunktzahl) auf Twitter post. –

+0

Wie kann ich Massage auf Twitter nicht posten klicken Sie auf die Schaltfläche –

1

Versuchen mit diesem einfachen Client TwitterEasyClient

Nur Berechtigungen in Ihrem Manifest

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

hinzufügen und es auf diese Weise verwenden:

//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

Sie könnenfür die Integration von Twitter in Ihre Android App verwenden. Es ist sehr einfach.