java实现的新浪微博分享代码实例
weibo.java
@Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.user_center); //创建微博实例 mWeiboAuth=newWeiboAuth(this,Constants.APP_KEY, Constants.REDIRECT_URL,Constants.SCOPE); //创建微博分享接口实例 mWeiboShareAPI=WeiboShareSDK.createWeiboAPI(this,Constants.APP_KEY); //当Activity被重新初始化时(该Activity处于后台时,可能会由于内存不足被杀掉了), //需要调用{@linkIWeiboShareAPI#handleWeiboResponse}来接收微博客户端返回的数据。 //执行成功,返回true,并调用{@linkIWeiboHandler.Response#onResponse}; //失败返回false,不调用上述回调 if(savedInstanceState!=null){ mWeiboShareAPI.handleWeiboResponse(getIntent(),this); } } /** *检查用户是否安装新浪微博 */ publicvoidisNotInstall(){ try{ //检查微博客户端环境是否正常,如果未安装微博,弹出对话框询问用户下载微博客户端 if(mWeiboShareAPI.checkEnvironment(true)){ //注册第三方应用到微博客户端中,注册成功后该应用将显示在微博的应用列表中。 //但该附件栏集成分享权限需要合作申请,详情请查看Demo提示 mWeiboShareAPI.registerApp(); startSinaShare(); } }catch(WeiboShareExceptione){ e.printStackTrace(); Toast.makeText(UserCenter.this,e.getMessage(),Toast.LENGTH_LONG) .show(); } if(dialog!=null){ dialog.dismiss(); } } /** *微博认证授权回调类。1.SSO授权时,需要在{@link#onActivityResult}中调用 *{@linkSsoHandler#authorizeCallBack}后,该回调才会被执行。2.非SSO *授权时,当授权结束后,该回调就会被执行。当授权成功后,请保存该access_token、expires_in、uid等信息到 *SharedPreferences中。 */ classAuthListenerimplementsWeiboAuthListener{ @Override publicvoidonComplete(Bundlevalues){ //从Bundle中解析Token mAccessToken=Oauth2AccessToken.parseAccessToken(values); if(mAccessToken.isSessionValid()){ //保存Token到SharedPreferences AccessTokenKeeper.writeAccessToken(UserCenter.this, mAccessToken); sendMessage(); } } @Override publicvoidonCancel(){ } @Override publicvoidonWeiboException(WeiboExceptione){ Toast.makeText(UserCenter.this, "Authexception:"+e.getMessage(),Toast.LENGTH_LONG) .show(); } } /** *新浪微博用户授权 */ publicvoidstartSinaShare(){ mSsoHandler=newSsoHandler(UserCenter.this,mWeiboAuth); //从SharedPreferences中读取上次已保存好AccessToken等信息, mAccessToken=AccessTokenKeeper.readAccessToken(this); //如果Token有效,则直接调用发送微博 if(mAccessToken.isSessionValid()){ sendMessage(); }else{ mSsoHandler.authorize(newAuthListener()); } } /** *@See{@linkActivity#onNewIntent} */ @Override protectedvoidonNewIntent(Intentintent){ super.onNewIntent(intent); //从当前应用唤起微博并进行分享后,返回到当前应用时,需要在此处调用该函数 //来接收微博客户端返回的数据;执行成功,返回true,并调用 //{@linkIWeiboHandler.Response#onResponse};失败返回false,不调用上述回调 mWeiboShareAPI.handleWeiboResponse(intent,this); } /** *当SSO授权Activity退出时,该函数被调用。 * *@see{@linkActivity#onActivityResult} */ @Override protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ super.onActivityResult(requestCode,resultCode,data); //SSO授权回调 //重要:发起SSO登陆的Activity必须重写onActivityResult if(mSsoHandler!=null){ mSsoHandler.authorizeCallBack(requestCode,resultCode,data); } } /** *接收微客户端博请求的数据。当微博客户端唤起当前应用并进行分享时,该方法被调用。 * *@parambaseRequest * 微博请求数据对象 *@see{@linkIWeiboShareAPI#handleWeiboRequest} */ @Override publicvoidonResponse(BaseResponsebaseResp){ switch(baseResp.errCode){ caseWBConstants.ErrorCode.ERR_OK: if(PublicFun.shareCondition()){ gainBoBi(); }else{ Toast.makeText(this,R.string.share_success,Toast.LENGTH_LONG) .show(); } break; caseWBConstants.ErrorCode.ERR_CANCEL: break; caseWBConstants.ErrorCode.ERR_FAIL: Toast.makeText(this,R.string.errcode_deny,Toast.LENGTH_LONG) .show(); break; } if(dialog!=null){ dialog.dismiss(); } } /** *第三方应用发送请求消息到微博,唤起微博分享界面。 *@see{@link#sendMultiMessage}或者{@link#sendSingleMessage} */ privatevoidsendMessage(){ if(mWeiboShareAPI.isWeiboAppSupportAPI()){ sendMultiMessage(); }else{ Toast.makeText(this,R.string.sina_share_hint,Toast.LENGTH_SHORT) .show(); } } /** *第三方应用发送请求消息到微博,唤起微博分享界面。注意:当 *{@linkIWeiboShareAPI#getWeiboAppSupportAPI()}>=10351时,支持同时分享多条消息, * *@paramhasText * 分享的内容是否有文本 *@paramhasImage * 分享的内容是否有图片 *@paramhasWebpage * 分享的内容是否有网页 */ privatevoidsendMultiMessage(){ //1.初始化微博的分享消息 WeiboMultiMessageweiboMessage=newWeiboMultiMessage(); weiboMessage.textObject=getTextObj(); //用户可以分享其它媒体资源(网页、音乐、视频、声音中的一种) weiboMessage.mediaObject=getWebpageObj(); //2.初始化从第三方到微博的消息请求 SendMultiMessageToWeiboRequestrequest=newSendMultiMessageToWeiboRequest(); //用transaction唯一标识一个请求 request.transaction=String.valueOf(System.currentTimeMillis()); request.multiMessage=weiboMessage; //3.发送请求消息到微博,唤起微博分享界面 mWeiboShareAPI.sendRequest(request); //记录分享日志 PublicFun.sendShareAppLog(UserCenter.this, getResources().getString(R.string.micro_blog)); if(dialog!=null){ dialog.dismiss(); } } /** *创建文本消息对象。 *@return文本消息对象。 */ privateTextObjectgetTextObj(){ TextObjecttextObject=newTextObject(); textObject.text=getResources().getString(R.string.share_content); returntextObject; } /** *创建多媒体(网页)消息对象。 *@return多媒体(网页)消息对象。 */ privateWebpageObjectgetWebpageObj(){ WebpageObjectmediaObject=newWebpageObject(); mediaObject.actionUrl=getString(R.string.share_url); mediaObject.identify=Utility.generateGUID(); mediaObject.title=getResources().getString(R.string.share_title); mediaObject.description=getString(R.string.share_content); Bitmapbmp=BitmapFactory.decodeResource(getResources(), R.drawable.icon); mediaObject.setThumbImage(bmp); returnmediaObject; } /** *该类定义了微博授权时所需要的参数。 *@authorSINA *@SINCE2013-10-07 */ publicclassAccessTokenKeeper{ privatestaticfinalStringPREFERENCES_NAME="com_weibo_sdk_android"; privatestaticfinalStringKEY_UID ="uid"; privatestaticfinalStringKEY_ACCESS_TOKEN ="access_token"; privatestaticfinalStringKEY_EXPIRES_IN ="expires_in"; /** *保存Token对象到SharedPreferences。 * *@paramcontext应用程序上下文环境 *@paramtoken Token对象 */ publicstaticvoidwriteAccessToken(Contextcontext,Oauth2AccessTokentoken){ if(null==context||null==token){ return; } SharedPreferencespref=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_APPEND); Editoreditor=pref.edit(); editor.putString(KEY_UID,token.getUid()); editor.putString(KEY_ACCESS_TOKEN,token.getToken()); editor.putLong(KEY_EXPIRES_IN,token.getExpiresTime()); editor.commit(); } /** *从SharedPreferences读取Token信息。 * *@paramcontext应用程序上下文环境 * *@return返回Token对象 */ publicstaticOauth2AccessTokenreadAccessToken(Contextcontext){ if(null==context){ returnnull; } Oauth2AccessTokentoken=newOauth2AccessToken(); SharedPreferencespref=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_APPEND); token.setUid(pref.getString(KEY_UID,"")); token.setToken(pref.getString(KEY_ACCESS_TOKEN,"")); token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN,0)); returntoken; } /** *清空SharedPreferences中Token信息。 * *@paramcontext应用程序上下文环境 */ publicstaticvoidclear(Contextcontext){ if(null==context){ return; } SharedPreferencespref=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_APPEND); Editoreditor=pref.edit(); editor.clear(); editor.commit(); } }
以上所述就是本文的全部内容了,希望对大家熟练掌握java有所帮助。