Twitter-Integration in der Android-App

Lesezeit: 4 Minuten

Twitter Integration in der Android App
Schlamm

Ich möchte Twitter in meine Android-Anwendung integrieren, damit ich Nachrichten auf Twitter posten kann.

1644075844 636 Twitter Integration in der Android App
Cjames

So mache ich es

Zuerst habe ich einen Dialog für die Webansicht Twitter_Dialog.java erstellt

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 deine 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();
    }

}

  • ausgezeichneter Code, aber können Sie mir sagen, wie ich mit diesem Code ein Bild posten kann?

    – Dilip

    6. Oktober 12 um 9:43 Uhr

  • Wie kann ich meine Nachricht (meinen Spielstand) auf Twitter twittern?

    – Amol Dale

    12. April 14 um 12:12 Uhr

  • Wie ich keine Massage auf Twitter posten kann, klicken Sie auf die Schaltfläche

    – Amol Dale

    12. April 14 um 12:26 Uhr

Zusätzlich zu den soliden Entscheidungen von d. könnten Sie:

  • Benutzen ACTION_SEND Intents mit createChooser()und wenn der Benutzer eine Twitter-Anwendung installiert hat (Twidroid), kann er damit seinen Status aktualisieren
  • Verwenden Sie eine vorhandene Twitter-Java-API wie JTwitter

  • Ich habe es mir angesehen, nur um zu sehen, wie Sie die Integration durchgeführt haben, und ich habe es schließlich heruntergeladen. Gut gemacht!

    – SaphirSo

    9. Januar 11 um 9:38 Uhr

  • ACTION_SEND ist zu vage. Gmail und Dropbox sind berechtigt. Ich schlage vor, Sie filtern die Liste basiert auf bekannten Paketnamen.

    – rts

    2. Juni 11 um 10:05 Uhr

  • Kommentar gelöscht, Details aktualisiert: Ich verwende JTwitter nicht mehr in meiner Android-App (und die Twitter-API und -Bedingungen haben sich seitdem vollständig geändert, was die direkte Integration schwieriger macht). Der Quellcode für die App Congress, die ich dafür erstellt habe, wurde ebenfalls verschoben nach: github.com/sunlightlabs/congress-android – aber es gibt keine direkte Twitter-Integration mehr.

    – Eric Mill

    7. Januar 14 um 18:56 Uhr

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

Informationen zum Senden von HTTP-Anforderungen von Ihrer Anwendung finden Sie unter diese Anleitung.

Sie können verwenden Twitter-Helfer für die Integration von Twitter in Ihre Android-App. Es ist sehr einfach.

Versuchen Sie es mit diesem einfachen Client TwitterEasyClient

Fügen Sie einfach Berechtigungen in Ihrem Manifest hinzu

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

Und verwenden Sie es auf diese Weise:

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

1644075845 587 Twitter Integration in der Android App
Gemeinschaft

Entscheiden Sie sich immer für die neuesten Technologien, da die Twitter-Integration einfach mit Twitter4j erfolgen kann, auch die von Twitter bereitgestellten APIs ändern sich von Zeit zu Zeit. Twitter SDK wäre eine gute Option. Die Details dazu finden Sie hier für twitter4j.

Twitter Integration in der Android App
Arst

Für einige Leute, die twitter4j und DialogFragment verwenden möchten, die auch Orientierungsänderungen unterstützen, sehen Sie sich meine Zusammenfassung an
https://gist.github.com/zeroarst/10071064adcf171277f9

.

784960cookie-checkTwitter-Integration in der Android-App

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy