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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值