如何使用Android应用程序发布消息到Twitter?

时间:2012-06-01 05:07:18

标签: android twitter

我开发了一个推特应用程序。我需要在输入文本到编辑框后,我点击按钮然后点击发布到twitter。

任何人都可以发布代码。

我试过但是我在setStatus()方法中遇到错误。

这是我的代码,请帮忙。

public void onCreate(Bundle savedInstanceState) {
        System.setProperty("http.keepAlive", "false");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_oauth);

        //check for saved log in details..
        checkForSavedLogin();

        //set consumer and provider on teh Application service
        getConsumerProvider();

        //Define login button and listener
        buttonLogin = (Button)findViewById(R.id.ButtonLogin);
        buttonLogin.setOnClickListener(new OnClickListener() {  
            public void onClick(View v) {
                askOAuth();
            }
        });

        postText = (EditText)findViewById(R.id.editText1);
        postbtn = (Button)findViewById(R.id.button1);

        postbtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                postTwitter();
            }
        });

    }

    protected void postTwitter() {
        String message = postText.getText().toString();
        System.out.println("Post Twitter.."+message);

        Thread t = new Thread() {
            public void run() {

                 twitter = new Twitter();

                 try
                 {
                 //Status to post in Twitter
                 **twitter.setStatus(postText.getText().toString());**
                 Toast.makeText(AuthActivity.this, "Article Posted to Twitter Successfully!!", Toast.LENGTH_SHORT).show();
                 }
                  catch(Exception e)
                 {
                 Toast.makeText(AuthActivity.this, "Network Host not responding",Toast.LENGTH_SHORT).show();
                 }
            }

        };
        t.start();
        }  

2 个答案:

答案 0 :(得分:9)

从Android发布到Twitter是Android开发人员最早的阶段之一。为了完全控制发布过程,我们将首选使用纯粹的OAuth帖子而不是处理Intent,因此我们可以保持完全控制。因此,作为一个用户,我们可以思考和总结:最典型的身份验证方法是弹出一个窗口,我们可以通过该窗口识别我们的用户和密码,以便应用程序访问我们的帐户(不是完整的帐户,只是为了从应用程序发布!)并忘记剩下的过程。对于Android中的新手来说,这可能是一个棘手的过程。当然,Twitter最终将改变他们的API或注册方法,因此我们有时会发现我们的旧实现不再起作用

我们首先需要注册Twitter应用程序。为此,我们将访问Twitter的开发者网站。登录后,我们将添加一个新的应用程序。没有特别的设置需要记住,但是自从Twitter发布了他们的API以来,回调URL的部分经常发生了变化。目前,如果我们正在开发一个应用程序,我们只需要提供任何随机URL。(More for this article

这里有一个示例Android项目,展示如何连接到Twitter,在共享首选项上保存它的令牌和用户名,以便以后可以使用它将状态发布到Twitter。 How to Post Twitter Status from Android

其他人介绍了如何发送消息suing androd API。这里有一些链接供你帮助;

http://www.android10.org/index.php/articleslibraries/291-twitter-integration-in-your-android-application

Build Android applications with Twitter

http://kenai.com/projects/twitterapime/pages/Home

不要忘记也看到这一点; http://abhinavasblog.blogspot.com/2010/09/using-twitter-with-oauth-on-andorid.html

答案 1 :(得分:3)

首先,你需要在twitter上创建一个应用程序

这是在twitter上发布消息的代码

 ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
            configurationBuilder.setOAuthConsumerKey(context.getResources().getString(R.string.twitter_consumer_key));
            configurationBuilder.setOAuthConsumerSecret(context.getResources().getString(R.string.twitter_consumer_secret));
            configurationBuilder.setOAuthAccessToken(LoginActivity.getAccessToken((context)));
            configurationBuilder.setOAuthAccessTokenSecret(LoginActivity.getAccessTokenSecret(context));
            Configuration configuration = configurationBuilder.build();
            final Twitter twitter = new TwitterFactory(configuration).getInstance();

            new Thread(new Runnable() {

                    private double x;

                    @Override
                    public void run() {
                            boolean success = true;
                            try {
                                    x = Math.random();
                                    twitter.updateStatus(message +" "+x);
                            } catch (TwitterException e) {
                                    e.printStackTrace();
                                    success = false;
                            }

                            final boolean finalSuccess = success;

                            callingActivity.runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                            postResponse.onFinsihed(finalSuccess);
                                    }
                            });

                    }
            }).start(); 

查看此tutorial了解详情。