weibo.java
コードコピーは次のとおりです。
@オーバーライド
保護されたvoid oncreate(bundle 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);
//アクティビティが再活性化されている場合(アクティビティはバックグラウンドにあり、記憶が不十分であるために殺される可能性があります)、
// {@link iweiboshareapi#handleweiboresponse}を呼び出す必要があります。
//実行が成功し、trueを返し、{@link iweibohandler.response#onresponse}を呼び出します;
// falseを返すことができない、上記のコールバックは呼び出されません
if(savedinstancestate!= null){
mweiboshareapi.handleweiboresponse(getintent()、this);
}
}
/**
*ユーザーがSina Weiboをインストールしたかどうかを確認します
*/
public void isnotinstall(){
試す {
// weiboクライアント環境が正常かどうかを確認します。
if(mweiboshareapi.checkenvironment(true)){
//登録が成功した後、サードパーティのアプリケーションをWeiboクライアントに登録します。
//ただし、この添付ファイルの統合許可は、詳細については、デモのプロンプトを確認してください。
mweiboshareapi.registerapp();
startsinashare();
}
} catch(weiboshareexception e){
e.printstacktrace();
toast.maketext(usercenter.this、e.getmessage()、toast.length_long)
。見せる();
}
if(ダイアログ!= null){
dialog.dismiss();
}
}
/**
* Weibo認証と認証コールバックカテゴリ。 1。SSOを承認する場合、{@link #OnactivityResult}で呼び出す必要があります。
* {@link ssohandler#authorizecallback}、コールバックが実行されます。 2。非sso
*許可が付与されると、承認が完了した後にコールバックが実行されます。 承認が成功したら、Access_Tokenを保存し、expires_in、uid、およびその他の情報を保存してください
* SharedPreferences in。
*/
クラスAuthListenerはWeiboauthListenerを実装します{
@オーバーライド
public void oncomplete(バンドル値){
//バンドルからトークンを解析します
maccessToken = oauth2accestoken.parseaccesstoken(values);
if(maccesstoken.issessionValid()){
//トークンをSharedPreferencesに保存します
AccessTokenKeeper.WriteAccessToken(usercenter.this、
MaccessToken);
sendmessage();
}
}
@オーバーライド
public void oncancel(){
}
@オーバーライド
public void onweiboexception(weiboexception e){
toast.maketext(usercenter.this、
「AUTH例外: " + e.getMessage()、toast.length_long)
。見せる();
}
}
/**
* Sina Weiboユーザー認可
*/
public void startsinashare(){
mssohandler = new ssohandler(usercenter.this、mweiboauth);
// SharedPreferencesから前回保存されたAccessTokenなどの情報を読む。
maccessToken = accessTokenKeeper.readAccessToken(this);
//トークンが有効な場合は、Weiboを直接呼び出して送信します
if(maccesstoken.issessionValid()){
sendmessage();
} それ以外 {
mssohandler.authorize(new authlistener());
}
}
/**
* @see {@link Activity#onnewintent}
*/
@オーバーライド
保護されたボイドonewintent(意図意図){
super.onnewintent(意図);
//現在のアプリケーションからWeiboを呼び出して共有した後、現在のアプリケーションに戻るときは、この関数をここで呼び出す必要があります
// weiboクライアントによって返されたデータを受信するには、trueを返して電話をかけます
// {@link iweibohandler.response#onresponse};上記のコールバックは呼び出されません
mweiboshareapi.handleweiboresponse(Intent、this);
}
/**
* SSO認証アクティビティが終了すると、関数が呼び出されます。
*
* @see {@link Activity#onactivityResult}
*/
@オーバーライド
保護されたvoid onactivityResult(int requestCode、int resultCode、Intent Data){
super.OnactivityResult(requestCode、resultCode、data);
// SSO認証コールバック
//重要:SSOログインを開始するアクティビティは、onactivityResultを書き直す必要があります
if(mssohandler!= null){
mssohandler.authorizecallback(requestCode、resultCode、data);
}
}
/**
*マイクロクライアントによって要求されたデータを受信します。 Weiboクライアントが現在のアプリケーションを呼び出して共有すると、メソッドが呼び出されます。
*
* @Param BasereQuest
* weiboはデータオブジェクトを要求します
* @see {@link iweiboshareapi#handleweiborequest}
*/
@オーバーライド
public void onResponse(baseresponse baseresp){
switch(baseresp.errcode){
ケースwbconstants.errorcode.err_ok:
if(publicfun.sharecondition()){
gainbobi();
} それ以外 {
toast.maketext(this、r.string.share_success、toast.length_long)
。見せる();
}
壊す;
ケースwbconstants.errorcode.err_cancel:
壊す;
ケースwbconstants.errorcode.err_fail:
toast.maketext(this、r.string.errcode_deny、toast.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、toast.length_short)
。見せる();
}
}
/**
*サードパーティのアプリケーションは、Weiboにリクエストメッセージを送信し、Weibo共有インターフェイスを呼び出します。 注:いつ
* {@link iweiboshareapi#getweiboappsupportapi()}> = 10351、複数のメッセージの共有を同時にサポートします。
*
* @param hastext
*共有コンテンツのテキストはありますか
* @param hasimage
*コンテンツを共有する写真はありますか
* @param haswebpage
*共有コンテンツのWebページはありますか?
*/
private void sendmultimessage(){
// 1。weiboの共有メッセージを初期化します
weibomultimessage weibomessage = new weibomultimessage();
weibomessage.textObject = getTextObj();
//ユーザーは他のメディアリソース(Webページ、音楽、ビデオ、サウンドの1つ)を共有できます
weibomessage.mediaobject = getWebPageObj();
// 2。第三者からWeiboへのメッセージ要求を初期化する
sendMultimessagetoweiborequest request = new sendMultimessagetoweiborequest();
//トランザクションを使用して、リクエストを一意に識別します
request.transaction = string.valueof(system.currenttimemillis());
request.multimessage = weibomessage;
//3。Weiboにリクエストメッセージを送信し、Weibo共有インターフェイスを呼び出します
mweiboshareapi.sendrequest(request);
//共有ログを記録します
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);
textObjectを返します。
}
/**
*マルチメディア(Webページ)メッセージオブジェクトを作成します。
* @return Multimedia(Webページ)メッセージオブジェクト。
*/
private webpageObject getWebPageObj(){
WebPageObject MediaObject = new webpageObject();
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);
bitmap bmp = bitmapfactory.decoderesource(getResources()、
R.Drawable.icon);
MediaObject.setThumbimage(BMP);
MediaObjectを返します。
}
/**
*このクラスでは、Weibo認可に必要なパラメーターを定義します。
* @author sina
* @Since 2013-10-07
*/
パブリッククラスAccessTokenKeeper {
private static final string fearences_name = "com_weibo_sdk_android";
プライベート静的最終文字列key_uid = "uid";
private static final string key_access_token = "access_token";
private static final string key_expires_in = "expires_in";
/**
*トークンオブジェクトをSharedPreferencesに保存します。
*
* @paramコンテキストアプリケーションコンテキスト
* @paramトークントークンオブジェクト
*/
public static void writeaccesstoken(コンテキストコンテキスト、oauth2accesstokenトークン){
if(null == context || null == token){
戻る;
}
sharedpreferences pref = context.getSharedPreferences(freedences_name、context.mode_append);
編集者編集者= pref.edit();
editor.putstring(key_uid、token.getuid());
editor.putstring(key_access_token、token.getoken());
editor.putlong(key_expires_in、token.getExpirestime());
editor.commit();
}
/**
* SharedPreferencesからトークン情報をお読みください。
*
* @paramコンテキストアプリケーションコンテキスト
*
* @returnトークンオブジェクトに戻ります
*/
public static oauth2accesstoken readaccestoken(コンテキストコンテキスト){
if(null == context){
nullを返します。
}
oauth2accestoken token = new oauth2accestoken();
sharedpreferences pref = context.getSharedPreferences(freedences_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));
トークンを返します。
}
/**
*トークン情報をSharedPreferencesでクリアします。
*
* @paramコンテキストアプリケーションコンテキスト
*/
public static void clear(コンテキストコンテキスト){
if(null == context){
戻る;
}
sharedpreferences pref = context.getSharedPreferences(freedences_name、context.mode_append);
編集者編集者= pref.edit();
editor.clear();
editor.commit();
}
}
上記はすべてこの記事に関するものであり、誰もがJavaを習得するのに役立つことを願っています。