微博整合在Android应用程序

我想将Twitter整合到我的Android应用程序中,以便我可以发送消息给Twitter。

除了d。坚实的select,你可以:

  • 使用ACTION_SEND Intents with createChooser() ,如果用户安装了Twitter应用程序(Twidroid),则可以使用它来更新其状态
  • 使用现有的Twitter Java API,如JTwitter

这是我如何做到的

首先,我为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(); } } } 

//然后进入你的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(); } } 

你需要知道的关于与Twitter通信的一切都在这里 。

要从您的应用程序发送HTTP请求,请查看本指南 。

您可以使用Twitter Helper将Twitter整合到您的Android应用程序中。 它非常简单。

试试这个简单的客户端TwitterEasyClient

只需在清单中添加权限即可

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

并以这种方式使用它:

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

总是去寻找最新的技术,因为twitter整合可以使用Twitter4j轻松完成,而Twitter提供的API也会不时变化。 Twiter sdk会是一个不错的select。 你可以在这里findtwitter4j的细节。

对于一些想要使用twitter4j和DialogFragment的人也支持方向改变检查我的要点https://gist.github.com/zeroarst/10071064adcf171277f9