Ich möchte Twitter in meine Android-Anwendung integrieren, so dass ich Nachrichten auf Twitter veröffentlichen kann.Twitter-Integration auf Android-App
Antwort
Neben d solide Auswahl, man kann.
- Verwenden
ACTION_SEND
Intents
mitcreateChooser()
, 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
Ich habe es überprüft, nur um zu sehen, wie Sie die Integration gemacht haben und ich habe es heruntergeladen. Gut gemacht! – SapphireSun
'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
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
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.
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();
}
}
ausgezeichneter Code, aber können Sie mir sagen, wie man Bild mit diesem Code – Dilip
wie kann twitte meine Nachricht (meine Spielpunktzahl) auf Twitter post. –
Wie kann ich Massage auf Twitter nicht posten klicken Sie auf die Schaltfläche –
Gehen Sie immer die neuesten Technologien wie Twitter-Integration leicht getan werden kann, mit Twitter4j, auch die von Twitter bereitgestellten APIs ändern sich von Zeit zu Zeit. Twiter SDK wäre eine gute Option. U can find the details for it here for twitter4j.
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());
Für einige Menschen, die Twitter4J verwenden möchten und DialogFragment unterstützen auch Orientierungswechsel Check out mein Geist https://gist.github.com/zeroarst/10071064adcf171277f9
Sie könnenfür die Integration von Twitter in Ihre Android App verwenden. Es ist sehr einfach.
Dies ist so einfach wie das Essen Ihren Lieblingskuchen .. folgen Sie diesem Tutorial http://tech-papers.org/integrate-twitter-with-android-application/ –