Android分享到新浪微博

废话不说,开始正题。

  1. 进入新浪微博提供的开放平台http://open.weibo.com/ 注册新浪账号。
  2. 点击’我是开发者‘,创建一个应用,如果有账号,当然就省事了大笑,得到CONSUMER_KEY和CONSUMER_SECRET,保存这两个值。
  3. 下载新浪提供的Android SDK,地址:http://code.google.com/p/weibo-android-sdk/downloads/list
  4. 解压下载的压缩包,解压完后,大家可以看到,它其实是Android SDK分享新浪微博的简单项目文件,将该项目导入到eclipse即可
  5. 然后,在复制到项目中的com.weibo.net包下找到Weibo.java文件,修改CONSUMER_KEY和CONSUMER_SECRET的值,与第二点是提到的值对应,
  6. 在com.weibo.android包下的AuthorizeActivity.java文件中,还可以采用另外一种方式,如:
        public void onClick(View v) {  
                        // TODO Auto-generated method stub  
                        if(v == mLogin){  
                            //将CONSUMER_KEY、CONSUMER_KEY的值在此文件中定义,初始时为Weibo对象设置该值  
                            Weibo weibo = Weibo.getInstance();  
                            weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_KEY);  
                            try {  
                                  
                                //直接在Weibo.java中定义为static,需要调用的地方直接调用  
                                /*AccessToken at = weibo.getXauthAccessToken(TextActivity.this, Weibo.APP_KEY, Weibo.APP_SECRET,  
                                        "", ""); 
                                mToken.setText(at.getToken());*/  
                                  
                                RequestToken requestToken = weibo.getRequestToken(AuthorizeActivity.this, Weibo.APP_KEY,   
                                        Weibo.APP_SECRET, AuthorizeActivity.URL_ACTIVITY_CALLBACK);  
                                mToken.setText(requestToken.getToken());  
                                Uri uri = Uri.parse(Weibo.URL_AUTHENTICATION + "?display=wap2.0&oauth_token=" +   
                                        requestToken.getToken() + "&from=" + AuthorizeActivity.FROM);  
                                startActivity(new Intent(Intent.ACTION_VIEW, uri));  
                            }catch (WeiboException e){  
                                e.printStackTrace();  
                            }  
                        }  
                    }  
  7. AuthorizeActivity和TestActivity代码所对应的java文件都需要在AndroidManifest.xml中注册。 如下:
        <activity android:configChanges="keyboardHidden|orientation" android:name=".TestActivity">  
                    <intent-filter>  
                        <action android:name="android.intent.action.VIEW" />  
                        <category android:name="android.intent.category.DEFAULT" />  
                        <category android:name="android.intent.category.BROWSABLE" />  
                        <data android:scheme="weiboandroid" android:host="TestActivity" /> //这里scheme host 在AndroidExample对应文件跳转时会用到,scheme写项目名称即可,host写授权后要跳转到的Activity名字  
                    </intent-filter>  
                </activity>  

    在文件AuthorizeActivity.java中有回调地址,和上面代码中的scheme、host对应即可:
        private static final String URL_ACTIVITY_CALLBACK = "weiboandroid://TestActivity"  
  8. 到此,项目基本可以运行起来了,但是当你选择用非系统浏览器(如QQ、UC等)打开新浪授权页面时,填写完信息,点击授权,问题出现了,找不到页面。所以我们需要修改下,将其于系统浏览器绑定,此修改在AuthorizeActivity.java文件中,如下:
        public void onClick(View v) {  
                        // TODO Auto-generated method stub  
                        if(v == mLogin){  
                            Weibo weibo = Weibo.getInstance();  
                            weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_SECRET);  
                            try {  
                                /*AccessToken at = weibo.getXauthAccessToken(TextActivity.this, Weibo.APP_KEY, Weibo.APP_SECRET,  
                                        "", ""); 
                                mToken.setText(at.getToken());*/  
                                  
                                RequestToken requestToken = weibo.getRequestToken(AuthorizeActivity.this, Weibo.APP_KEY, Weibo.APP_SECRET, AuthorizeActivity.URL_ACTIVITY_CALLBACK);  
                                mToken.setText(requestToken.getToken());  
                                Uri uri = Uri.parse(Weibo.URL_AUTHENTICATION + "?display=wap2.0&oauth_token=" + requestToken.getToken() + "&from=" + AuthorizeActivity.FROM);  
                                Intent intent = new Intent(Intent.ACTION_VIEW, uri);  
                                  
                                //与系统浏览器绑定,用系统浏览器打开授权页面  
                                intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");  
                                startActivity(intent);  
                            }catch (WeiboException e){  
                                e.printStackTrace();  
                            }  
                        }  
  9. 修改发布的图片的地址,在TestActivity.java文件中,如下:
        public void onClick(View v) {  
                        File file = Environment.getExternalStorageDirectory();  
                        String sdPath = file.getAbsolutePath();  
          
                        /********************修改地址,因为你的存储卡中可能没有这张图片,改为有的图片即可***************************/  
                        String picPath = sdPath + "/" + "abc.jpg";  
                        try {  
                            share2weibo("abc", picPath);  
                            Intent i = new Intent(TestActivity.this, ShareActivity.class);  
                            TestActivity.this.startActivity(i);   
                              
                        }catch (WeiboException e) {  
                            // TODO Auto-generated catch block  
                            e.printStackTrace();  
                        }finally{  
                              
                        }  
                          
                    }  


  10. 到此,基本搞定,可是还是美中不足,不能发网络图片,大家不急,在com.weibo.net包下的Utility.java文件中做如下修改即可实现网络图片的使用:
    在该文件中,添加如下方法:
        public static Bitmap returnBitMap(String url) {  
                URL myFileUrl = null;    
                Bitmap bitmap = null;    
                try {    
                    myFileUrl = new URL(url);    
                } catch (MalformedURLException e) {    
                    e.printStackTrace();    
                } try {    
                    HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();    
                    conn.setDoInput(true);    
                    conn.connect();    
                    InputStream is = conn.getInputStream();    
                    bitmap = BitmapFactory.decodeStream(is);    
                    is.close();    
                } catch (IOException e) {    
                    e.printStackTrace();    
                }    
                return bitmap;    
            }  

    在该文件的288行左右,做如下修改,将第一行注释后改为第三行代码:
    /Bitmap bf = BitmapFactory.decodeFile(file);  
    //将原来的注释,改为利用网络图片  
    Bitmap bf = returnBitMap(file);  

    到此,大功告成!


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值