Android 安卓应用程序上的推特集成

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1782743/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 03:38:06  来源:igfitidea点击:

twitter integration on android app

androidtwitter

提问by mudit

I would like to integrate Twitter into my Android application so that I can post messages to Twitter.

我想将 Twitter 集成到我的 Android 应用程序中,以便我可以向 Twitter 发布消息。

采纳答案by CommonsWare

In addition to d.'s solid choices, you could:

除了 d. 的可靠选择之外,您还可以:

  • Use ACTION_SENDIntentswith createChooser(), and if the user has a Twitter application installed (Twidroid) they can use it to update their status
  • Use an existing Twitter Java API, like JTwitter
  • 使用ACTION_SENDIntentswith createChooser(),如果用户安装了 Twitter 应用程序 (Twidroid),他们可以使用它来更新他们的状态
  • 使用现有的 Twitter Java API,例如 JTwitter

回答by Cjames

This is how I do it

这就是我的做法

First i made a Dialog for the webview Twitter_Dialog.java

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

}
}

//And then into your Main.java

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

}

回答by dxh

Everything you need to know about communicating with Twitter is here.

关于与 Twitter 交流你需要知道的一切都在这里

For sending HTTP requests from your application, check out this guide.

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

回答by Sheraz Ahmad Khilji

You can use Twitter Helperfor integrating Twitter into your Android app. Its very simple.

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

回答by Sarpe

Try with this simple client TwitterEasyClient

试试这个简单的客户端TwitterEasyClient

Just add permissions in your manifest

只需在清单中添加权限

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

And use it in this way:

并以这种方式使用它:

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

回答by Arst

For some people who want to use twitter4j and DialogFragment also support orientation changing check out my gist https://gist.github.com/zeroarst/10071064adcf171277f9

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

回答by Kailas

Always go for the latest technologies as twitter integration can be done easily using Twitter4j, also the APIs provided by twitter does change from time to time. Twiter sdk would a good option. U can find the details for it here for twitter4j.

始终采用最新技术,因为使用 Twitter4j 可以轻松完成 twitter 集成,twitter 提供的 API 也会不时更改。Twiter sdk 是一个不错的选择。你可以在 twitter4j 上找到它的详细信息。