Weibo.java
코드 사본은 다음과 같습니다.
@보수
보호 된 void onCreate (번들 SavedInstancestate) {
Super.oncreate (SavedInstancestate);
setContentView (r.layout.user_center);
// weibo 인스턴스를 만듭니다
mweiboauth = New Weiboauth (this, constants.app_key,
constants.redirect_url, constants.scope);
// Weibo 공유 인터페이스 예제를 만듭니다
mweiboshareapi = weibosharesdk.createweiboapi (this, constants.app_key);
// 활동이 재건 될 때 (활동이 백그라운드에 있고 메모리가 충분하지 않아서 죽일 수 있음),
// Weibo 클라이언트가 반환 한 데이터를 받으려면 {@link iweiboshareapi#handleweiboresponse} 호출해야합니다.
// 실행이 성공하고, true를 반환하고, {@link iweibohandler.response#onresponse};
// false를 반환하지 않으면 위의 콜백이 없습니다.
if (savedinstancestate! = null) {
mweiboshareapi.handleweiboresponse (getintent (), this);
}
}
/**
* 사용자가 Sina Weibo를 설치했는지 확인하십시오
*/
public void is nontinstall () {
노력하다 {
// Weibo 클라이언트 환경이 정상인지 확인하십시오. Weibo가 설치되지 않으면 Weibo 클라이언트를 다운로드하도록 대화 상자가 나타납니다.
if (mweiboshareapi.checkenvironment (true)) {
// Weibo 클라이언트에 타사 응용 프로그램을 등록하면 신청서가 Weibo 응용 프로그램 목록에 표시됩니다.
// 그러나이 첨부 칼럼의 통합 및 공유 권한에는 협력 응용 프로그램이 필요합니다.
mweiboshareapi.registerApp ();
StartInashare ();
}
} catch (weiboshareexception e) {
e.printstacktrace ();
Toast.maketext (userCenter.this, e.getMessage (), 토스트 .length_long)
.보여주다();
}
if (대화! = null) {
dialog.dismiss ();
}
}
/**
* Weibo 인증 및 인증 콜백 범주. 1. SSO를 승인 할 때 {@link #onactivityResult}에서 호출해야합니다.
* {@Link SSOHANDLER#AGORIZECALLBACK}, 콜백이 실행됩니다. 2. 비 SSO
* 승인이 부여되면 승인이 완료된 후 콜백이 실행됩니다. 승인이 성공하면 access_token, expires_in, uid 및 기타 정보를 저장하십시오.
* 공유 차가.
*/
클래스 authlistener 구현 Weiboauthlistener {
@보수
public void oncomplete (번들 값) {
// 묶음에서 토큰을 구문 분석합니다
maccesstoken = Oauth2accesstoken.parseaccesstoken (값);
if (maccesstoken.issessionvalid ()) {
// 토큰을 SharedPreferences에 저장합니다
AccessTokenKeeper.writeAccessToken (userCenter.this,
maccesstoken);
sendMessage ();
}
}
@보수
공개 void oncancel () {
}
@보수
공개 void onweiboexception (weiboexception e) {
토스트 .maketext (userCenter.this,
"인증 예외 :" + e.getMessage (), 토스트 .length_long)
.보여주다();
}
}
/**
* Sina Weibo 사용자 승인
*/
Public Void StartInashare () {
MSSOHANDLER = NEW SSOHANDLER (userCenter.this, Mweiboauth);
// 주식 공유에서 지난 시간에 저장된 AccessToken과 같은 정보를 읽습니다.
maccesstoken = accessTokenKeeper.ReadAccessToken (this);
// 토큰이 유효한 경우 전화하여 Weibo를 직접 보내십시오.
if (maccesstoken.issessionvalid ()) {
sendMessage ();
} 또 다른 {
mssohandler.authorize (New AuthListener ());
}
}
/**
* @see {@link activity#onnewintent}
*/
@보수
보호 된 void onnewintent (의도 의도) {
super.onnewintent (의도);
// 현재 응용 프로그램에서 Weibo를 호출하여 공유 한 후 현재 응용 프로그램으로 돌아올 때이 기능을 호출해야합니다.
// Weibo 클라이언트가 반환 한 데이터를 성공적으로 실행하려면 True 및 Call을 반환하십시오
// {@link iweibohandler.response#onresponse}; 위의 콜백은 호출되지 않습니다.
mweiboshareapi. handleweiboresponse (의도, 이것);
}
/**
* SSO 인증 활동이 종료되면 기능이 호출됩니다.
*
* @see {@link 활동#OnactivityResult}
*/
@보수
Protected void onactivityResult (int requestCode, int resultCode, 의도 데이터) {
super.onactivityResult (requestCode, resultCode, Data);
// SSO 인증 콜백
// 중요 : SSO 로그인을 시작하는 활동은 onactivityResult를 다시 작성해야합니다.
if (mssohandler! = null) {
mssoHandler.authorizeCallback (requestCode, resultCode, Data);
}
}
/**
* Micro-Client에서 요청한 데이터를받습니다. Weibo 클라이언트가 현재 응용 프로그램을 호출하여 공유하면 메소드가 호출됩니다.
*
* @param baserequest
* Weibo 요청 데이터 객체
* @see {@link iweiboshareapi#handleweiborequest}
*/
@보수
공개 void onresponse (BaseResponse Baseresp) {
스위치 (BaseResp.errcode) {
CASE WBCONSTANTS.errorCode.err_ok :
if (publicfun.sharecondition ()) {
gainbobi ();
} 또 다른 {
토스트 .maketext (this, r.string.share_success, toast.length_long)
.보여주다();
}
부서지다;
case wbconstants.errorcode.err_cancel :
부서지다;
case wbconstants.errorcode.err_fail :
토스트 .maketext (this, r.string.errcode_deny, 토스트 .length_long)
.보여주다();
부서지다;
}
if (대화! = null) {
dialog.dismiss ();
}
}
/**
* 타사 응용 프로그램은 요청 메시지를 Weibo에 보내고 Weibo 공유 인터페이스를 불러냅니다.
* @see {@link #sendmultimessage} 또는 {@link #sendsinglemessage}
*/
private void sendmessage () {
if (mweiboshareapi.isweiboappsupportapi ()) {
sendmultimessage ();
} 또 다른 {
Toast.maketext (this, r.string.sina_share_hint, 토스트 .length_short)
.보여주다();
}
}
/**
* 타사 응용 프로그램은 요청 메시지를 Weibo에 보내고 Weibo 공유 인터페이스를 불러냅니다. 참고 : 언제
* {@link iweiboshareapi#getweiboappsupportapi ()}> = 10351, 동시에 여러 메시지 공유를 지원합니다.
*
* @param hastext
* 공유 콘텐츠에 대한 텍스트가 있습니까?
* @param hasimage
* 공유 콘텐츠가 있습니까?
* @Param HaswebPage
* 공유 콘텐츠에 대한 웹 페이지가 있습니까?
*/
개인 void sendmultimessage () {
// 1. Weibo에서 공유 메시지를 초기화합니다
weibomultimessage weibomessage = 새로운 weibomultimessage ();
weibomessage.textObject = getTextObj ();
// 사용자는 다른 미디어 리소스 (웹 페이지, 음악, 비디오 및 사운드 중 하나)를 공유 할 수 있습니다.
weibomessage.mediaObject = getWebPageObj ();
// 2. 제 3 자의 Weibo로 메시지 요청 초기화
sendmultimessagetoweiborequest 요청 = 새로운 sendmultimessagetoweiborequest ();
// 트랜잭션을 사용하여 요청을 고유하게 식별합니다
request.transaction = string.valueof (System.CurrentTimeMillis ());
request.multimessage = weibomessage;
// 3. 요청 메시지를 Weibo에 보내고 Weibo 공유 인터페이스를 호출하십시오.
mweiboshareapi.sendRequest (요청);
// 공유 로그 기록
publicfun.sendshareapplog (userCenter.this,
getResources (). getString (r.string.micro_blog));
if (대화! = null) {
dialog.dismiss ();
}
}
/**
* 문자 메시지 객체를 만듭니다.
* @return 문자 메시지 객체.
*/
private textObject getTextObj () {
textObject textObject = new TextObject ();
textObject.text = getResources (). getString (r.string.share_content);
텍스트를 반환합니다.
}
/**
* 멀티미디어 (웹 페이지) 메시지 객체를 만듭니다.
* @return multimedia (웹 페이지) 메시지 객체.
*/
private webpageobject getWebPageObj () {
WebPageObject MediaObject = 새로운 WebPageObject ();
mediaobject.actionurl = getstring (r.string.share_url);
MediaObject.Inderify = utility.generateguid ();
mediaObject.title = getResources (). getString (r.string.share_title);
mediaObject.Description = getString (r.string.share_content);
비트 맵 bmp = bitmapfactory.decoderesource (getResources (),
R.Drawable.icon);
mediaobject.setthumbimage (bmp);
리턴 MediaObject;
}
/**
*이 클래스는 Weibo 승인에 필요한 매개 변수를 정의합니다.
* @Author Sina
* @Since 2013-10-07
*/
공개 클래스 AccessTokenKeeper {
개인 정적 최종 문자열 preverences_name = "com_weibo_sdk_android";
개인 정적 최종 문자열 key_uid = "uid";
개인 정적 최종 문자열 key_access_token = "access_token";
개인 정적 최종 문자열 key_expires_in = "expires_in";
/**
* 토큰 객체를 공유 차량에 저장하십시오.
*
* @param 컨텍스트 응용 프로그램 컨텍스트
* @param 토큰 토큰 개체
*/
public static void writeAccesstoken (컨텍스트 컨텍스트, OAuth2accesstoken token) {
if (null == context || null == 토큰) {
반품;
}
sharedpreferences pref = context.getsharedpreferences (preferences_name, context.mode_append);
편집기 편집기 = pref.edit ();
editor.putString (key_uid, token.getUid ());
editor.putString (key_access_token, token.getToken ());
editor.putlong (key_expires_in, token.getexpirestime ());
editor.commit ();
}
/**
* 공유 예약에서 토큰 정보를 읽으십시오.
*
* @param 컨텍스트 응용 프로그램 컨텍스트
*
* @return 토큰 개체로 돌아갑니다
*/
공개 정적 OAuth2accesstoken readaccesstoken (컨텍스트 컨텍스트) {
if (null == Context) {
널 리턴;
}
Oauth2accesstoken token = new Oauth2accesstoken ();
sharedpreferences pref = 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));
복귀 토큰;
}
/**
* 공유 예약으로 토큰 정보를 지우십시오.
*
* @param 컨텍스트 응용 프로그램 컨텍스트
*/
public static void clear (컨텍스트 컨텍스트) {
if (null == Context) {
반품;
}
sharedpreferences pref = context.getsharedpreferences (preferences_name, context.mode_append);
편집기 편집기 = pref.edit ();
editor.clear ();
editor.commit ();
}
}
위의 내용은이 기사에 관한 모든 것이며, 모든 사람들이 Java를 마스터하는 것이 도움이되기를 바랍니다.