微博整合在Android应用程序
我想将Twitter整合到我的Android应用程序中,以便我可以发送消息给Twitter。
除了d。坚实的select,你可以:
- 使用
ACTION_SEND
Intents
withcreateChooser()
,如果用户安装了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
- Android 4.3虚拟设备CPU / ABI – 没有安装系统映像(eclipse)
- Android的RelativeLayout以编程方式设置centerInParent
- 通过Gradle和Android Studio构build和运行应用程序比通过Eclipse慢
- 错误:执行任务':app:packageRelease'失败。 >无法计算/../AndroidStudioProjects/../classes.jar的散列
- 如果我的TextView的大于1行,我怎么能显示省略号?
- “android.intent.category.DEFAULT”的目的是什么?
- 在Android中对base64string中的位图对象进行编码和解码
- Android相对布局alignment中心
- 我应该怎样使用Android AccountManager?