• android 新浪微博分享功能实现


    新浪微博分享功能  



    注册帐号后,创建应用后,会得到一个唯一的key和secret,如下图 







    我在工程中使用的是Oauth2.0隐式授权方式,所以需要在新浪微博开发者平台重定义地址,如下图 







    需要在工程中加入新浪微博demo中com.weibo.net里面的内容,如下图 







    需要修改Weibo.java里面的代码 

        private static String APP_KEY = ""; 

    private static String APP_SECRET = ""; 

    将里面的内容替换成你创建项目时候生成的key和secret 

    public staticfinal String DEFAULT_REDIRECT_URI = ""; 

    这里也要重新设置成你之前重定义的地址 



    具体可参考新浪微博的例子 



    自己封装了一个调用新浪微博的类  SinaWeiboUtil 



    public class SinaWeiboUtil { 



        private SinaWeiboRequestListener mWeiboRequestListener; 



        private TestActivity mActivity; 



        private static SinaWeiboUtil instance; 

       

        public static SinaWeiboUtil getInstance() { 

           return instance; 

        } 

       

        public static void createInstance(TestActivity activity) { 

           instance = new SinaWeiboUtil(activity); 

        } 

       

        private SinaWeiboUtil(TestActivity activity) { 

           mActivity = activity; 

        } 

       

        public void sendSinaWeibo() { 

           Weibo weibo = Weibo.getInstance(); 

           if (AppConst.WACCESSTOKEN != null) { 

               weibo.setRedirectUrl(Weibo.DEFAULT_REDIRECT_URI);// 此处回调页内容应该替换为与appkey对应的应用回调页 

               AccessToken accessToken = new AccessToken(AppConst.WACCESSTOKEN, 

                      Weibo.getAppSecret()); 

               weibo.setAccessToken(accessToken); 

               accessToken.setExpiresIn("86400"); 

               try { 

                  Log.v("tag==========", "secret =" + Weibo.getAppSecret() 

                         + " token =" + Weibo.getAppKey()); 

                  update(weibo, Weibo.getAppKey(), mActivity 

                         .getResources().getString(R.string.smscontent), "", ""); 

               } catch (MalformedURLException e) { 

                  // TODO Auto-generatedcatch block 

                  e.printStackTrace(); 

               } catch (NotFoundException e) { 

                  // TODO Auto-generatedcatch block 

                  e.printStackTrace(); 

               } catch (IOException e) { 

                  // TODO Auto-generatedcatch block 

                  e.printStackTrace(); 

               } catch (WeiboException e) { 

                  // TODO Auto-generatedcatch block 

                  e.printStackTrace(); 

               } 

           } else { 

              

               // Oauth2.0 

               // 隐式授权认证方式 

               weibo.setRedirectUrl(Weibo.DEFAULT_REDIRECT_URI);// 此处回调页内容应该替换为与appkey对应的应用回调页 

               // 对应的应用回调页可在开发者登陆新浪微博开发平台之后, 

               // 进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看, 

               // 应用回调页不可为空 

               weibo.authorize(mActivity, 

                      new SinaAuthDialogListener(mActivity)); 

           } 

        } 



        public void update(Weibo weibo, String source, String status, 

               String lon, String lat) throws MalformedURLException,IOException, 

               WeiboException { 

           WeiboParameters bundle = new WeiboParameters(); 

           bundle.add("source", source); 

           bundle.add("status", status); 

           if (!TextUtils.isEmpty(lon)) { 

               bundle.add("lon", lon); 

           } 

           if (!TextUtils.isEmpty(lat)) { 

               bundle.add("lat", lat); 

           } 

           String url = Weibo.SERVER + "statuses/update.json"; 

           AsyncWeiboRunner weiboRunner = new AsyncWeiboRunner(weibo); 

           if (mWeiboRequestListener == null) { 

               mWeiboRequestListener = new SinaWeiboRequestListener(mActivity); 

           } 

           weiboRunner.request(mActivity, url, bundle, Utility.HTTPMETHOD_POST, 

                  mWeiboRequestListener); 

        } 





    新浪微博认证对话框接口 

    SinaAuthDialogListener 

    public class SinaAuthDialogListenerimplements WeiboDialogListener { 



        TestActivity mActivity; 

       

        public SinaAuthDialogListener(TestActivity activity) { 

           mActivity = activity; 

        } 

       

        @Override 

        public void onComplete(Bundle values) { 

           String token = values.getString("access_token"); 

           String expires_in = values.getString("expires_in"); 

           mActivity.setWAccessToken(token); 

           Weibo.getInstance(); 

           AccessToken accessToken = new AccessToken(token, 

                  Weibo.getAppSecret()); 

           accessToken.setExpiresIn(expires_in); 

           Weibo.getInstance().setAccessToken(accessToken); 

           try { 

               SinaWeiboUtil.getInstance().update(Weibo.getInstance(),Weibo.getAppKey(), mActivity 

                      .getResources().getString(R.string.smscontent), "", ""); 

           } catch (MalformedURLException e) { 

               // TODO Auto-generatedcatch block 

               e.printStackTrace(); 

           } catch (NotFoundException e) { 

               // TODO Auto-generatedcatch block 

               e.printStackTrace(); 

           } catch (IOException e) { 

               // TODO Auto-generatedcatch block 

               e.printStackTrace(); 

           } catch (WeiboException e) { 

               // TODO Auto-generatedcatch block 

               e.printStackTrace(); 

           } 

        } 



        @Override 

        public void onError(DialogError e) { 

           Toast.makeText(mActivity, "Autherror : " + e.getMessage(), 

                  Toast.LENGTH_LONG).show(); 

        } 



        @Override 

        public void onCancel() { 

           Toast.makeText(mActivity, "Authcancel", Toast.LENGTH_LONG).show(); 

        } 



        @Override 

        public void onWeiboException(WeiboException e) { 

           Toast.makeText(mActivity, "Authexception : " + e.getMessage(), 

                  Toast.LENGTH_LONG).show(); 

        } 







    新浪微博请求接口 SinaWeiboRequestListener 

    public class SinaWeiboRequestListenerimplements RequestListener { 



        private TestActivity mActivity; 

       

        public SinaWeiboRequestListener(TestActivity activity) { 

           mActivity = activity; 

        } 

       

        @Override 

        public void onComplete(String response) { 

           mActivity.runOnUiThread(new Runnable() { 



               @Override 

               public void run() { 

                  Toast.makeText(mActivity, R.string.send_sucess, 

                         Toast.LENGTH_LONG).show(); 

               } 

           }); 

        } 



        @Override 

        public void onIOException(IOException e) { 

           // TODO Auto-generatedmethod stub 



        } 



        @Override 

        public void onError(final WeiboException e) { 

           mActivity.runOnUiThread(new Runnable() { 



               @Override 

               public void run() { 

                  Toast.makeText( 

                         mActivity, 

                         String.format( 

                                mActivity.getString(R.string.send_failed) 

                                       + ":%s", e.getMessage()), 

                         Toast.LENGTH_LONG).show(); 

               } 

           }); 



        } 







    需要在MainFest中加入以下权限 

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

        </uses-permission> 

        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"> 

        </uses-permission> 

        <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"> 

        </uses-permission> 

        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"> 

        </uses-permission> 

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

  • 相关阅读:
    Epplus
    常用的android弹出对话框
    android 获取当前位置
    android:inputType参数类型说明
    PageRank算法
    XGBoost算法
    FP-growth算法
    卡方分布与卡方检验
    Apriori算法
    关联规则
  • 原文地址:https://www.cnblogs.com/firecode/p/2682325.html
Copyright © 2020-2023  润新知