Android分享到新浪微博

来源:互联网 发布:nba今日数据统计 编辑:程序博客网 时间:2024/04/25 20:00

废话不说,开始正题。

  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 stubif(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 stubif(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 blocke.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);

    到此,大功告成!




       

       


原创粉丝点击