Weibo.java
A cópia do código é a seguinte:
@Override
OnCreate de vazio protegido (pacote salva -seancestado) {
super.oCreate (savedInstancestate);
setContentView (r.layout.user_center);
// Crie uma instância do Weibo
mweiboauth = novo weiboauth (isto, constantes.app_key,
Constants.redirect_url, constantes.scope);
// Crie um exemplo de interface de compartilhamento do Weibo
mweiboshareapi = weibosharesdk.createweiboapi (this, constants.app_key);
// Quando a atividade é reinicializada (a atividade está em segundo plano, ela pode ser morta devido à memória insuficiente),
// Você precisa ligar para {@link iweiboshareapi#handleweibor -resposta} para receber os dados retornados pelo cliente Weibo.
// A execução é bem -sucedida, retorne true e ligue para {@link iweiBoHandler.Response#OnResponse};
// Falha em retornar falsa, nenhum retorno de chamada acima é chamado
if (savedInstancestate! = null) {
mweiboshareapi.HandleweiborSponse (getIntent (), isto);
}
}
/**
* Verifique se o usuário instalou Sina Weibo
*/
public void isNotInstall () {
tentar {
// Verifique se o ambiente do cliente Weibo é normal.
if (mweiboshareapi.checkenvironment (true)) {
// Registre um aplicativo de terceiros no Weibo Client.
// No entanto, as permissões de integração e compartilhamento desta coluna de anexo exigem um aplicativo de cooperação.
mweiboshareapi.registerApp ();
startinashare ();
}
} catch (weiboshareexception e) {
E.PrintStackTrace ();
Toast.MakeText (UserCenter.This, E.GetMessage (), Toast.Length_Long)
.mostrar();
}
if (diálogo! = null) {
dialog.dismiss ();
}
}
/**
* Categoria de retorno de chamada de autenticação e autorização do Weibo. 1. Ao autorizar o SSO, você precisa chamá -lo em {@link #onactivityResult}
* {@link SSOHandler#Autorizecallback}, o retorno de chamada será executado. 2. Não-Sso
* Quando a autorização for concedida, o retorno de chamada será executado após a conclusão da autorização. Quando a autorização for bem -sucedida, salve o access_token, expire_in, uid e outras informações para
* SharedPreferências em.
*/
classe authlistener implementa WeiboAuthListener {
@Override
public void oncomplete (valores de pacote) {
// analisa o token do pacote
MacCessToken = OAuth2AccessToken.ParseAccessToken (valores);
if (MacCessToken.ISSessionValid ()) {
// Salvar token para SharedPreferences
AccessTokenkeeper.WriteAccessToken (UserCenter.This,
MacCessToken);
sendMessage ();
}
}
@Override
public void oncancel () {
}
@Override
public void onWeiboException (WeiboException e) {
Toast.MakeText (UserCenter.This,
"Exceção de autenticação:" + e.getMessage (), Toast.Length_Long)
.mostrar();
}
}
/**
* Autorização do usuário de Sina Weibo
*/
public void startinashare () {
mSSOHandler = new SsoHandler (UserCenter.This, Mweiboauth);
// Leia informações como o AccessToken que foram salvas da última vez em SharedPreferências.
MacCessToken = AccessTokenkeeper.ReadAccessToken (isto);
// Se o token for válido, ligue e envie o Weibo diretamente
if (MacCessToken.ISSessionValid ()) {
sendMessage ();
} outro {
mSSOHandler.Authorize (new AuthListener ());
}
}
/**
* @See {@link Atividade#onNewIntent}
*/
@Override
vazio protegido onNewIntent (intenção intenção) {
super.onnewIntent (intenção);
// Depois de ligar para o Weibo do aplicativo atual e compartilhá -lo, ao retornar ao aplicativo atual, você precisa chamar essa função aqui
// Para receber os dados retornados pelo cliente Weibo;
// {@link iweiboHandler.Response#OnResponse};
mweiboshareapi.HandleweiborSponse (intenção, isso);
}
/**
* Quando a atividade de autorização do SSO sai, a função é chamada.
*
* @See {@link Atividade#OnactivityResult}
*/
@Override
Void protegido ONACTIVITYRESULT (INT requestCode, int ResultCode, Intent Data) {
super.onactivityResult (requestCode, resultadocode, dados);
// Retorno de chamada de autorização SSO
// IMPORTANTE: A atividade que inicia o login do SSO deve ser reescrever o OnactivityResult
if (msSoHandler! = null) {
MSSOHANDLER.ATHORIZECALLBACK (requestCode, resultadocode, dados);
}
}
/**
* Receba dados solicitados pelo Micro-Client. Quando o cliente do Weibo chama o aplicativo atual e o compartilha, o método é chamado.
*
* @param baserequest
* Weibo solicitar objeto de dados
* @see {@link iweiboshareapi#handleweiborequest}
*/
@Override
public void onResponse (BaseSponse BaseSP) {
switch (baseresp.errcode) {
case wbconstants.errorcode.err_ok:
if (publicfun.sharecondition ()) {
GainBobi ();
} outro {
Toast.MakeText (this, R.String.Share_Success, Toast.Length_Long)
.mostrar();
}
quebrar;
case wbconstants.errorcode.err_cancel:
quebrar;
case wbconstants.errorcode.err_fail:
Toast.MakeText (this, R.String.errcode_deny, Toast.Length_Long)
.mostrar();
quebrar;
}
if (diálogo! = null) {
dialog.dismiss ();
}
}
/**
* Um aplicativo de terceiros envia uma mensagem de solicitação para o Weibo e chama a interface de compartilhamento do Weibo.
* @see {@link #sendMultimessage} ou {@link #sendingleMessage}
*/
private void sendMessage () {
if (mweiboshareapi.isweiboappsupportpi ()) {
sendmultimessage ();
} outro {
Toast.MakeText (this, r.string.sina_share_hint, Toast.length_short)
.mostrar();
}
}
/**
* Um aplicativo de terceiros envia uma mensagem de solicitação para o Weibo e chama a interface de compartilhamento do Weibo. Nota: Quando
* {@link iweiboshareapi#getweiboappsupportpi ()}> = 10351, ele suporta compartilhar várias mensagens ao mesmo tempo.
*
* @param hastext
* Existe algum texto para o conteúdo compartilhado
* @param hasimage
* Existe algum conteúdo compartilhado de fotos
* @param haswebpage
* Existe uma página da web para o conteúdo compartilhado?
*/
private void sendmultimessage () {
// 1. Inicialize a mensagem de compartilhamento no Weibo
Weibomultimessage weibomessage = new weibomultimessage ();
weibomessage.TexTObject = getTexTOBJ ();
// Os usuários podem compartilhar outros recursos de mídia (uma das páginas da web, músicas, vídeos e sons)
weibomessage.mediaObject = getWebPageObj ();
// 2. Inicialize solicitações de mensagens de terceiros para o Weibo
SendmultimessageToweiboreQuest solicitação = new SendMultimessageToweiboreQuest ();
// Use a transação para identificar exclusivamente uma solicitação
request.Transaction = string.valueof (system.currenttimemillis ());
request.multimessage = weibomessage;
// 3. Envie uma mensagem de solicitação para o Weibo e ligue para a interface de compartilhamento do Weibo
mweiboshareapi.sendRequest (solicitação);
// Log de compartilhamento de registros
Publicfun.sendshareplog (userCenter.This,
getResources (). getString (r.string.micro_blog));
if (diálogo! = null) {
dialog.dismiss ();
}
}
/**
* Crie um objeto de mensagem de texto.
* @return text mensagem objeto.
*/
private textObject getTextObj () {
TextObject textObject = new textObject ();
textObject.Text = getResources (). getString (r.string.share_content);
retornar textObject;
}
/**
* Crie um objeto de mensagem multimídia (página da web).
* @return Multimedia (página da web) Objeto de mensagem.
*/
private webpageObject getwebpageObj () {
WebPageObject MediaBject = new WebPageObject ();
meiosObject.actionUrl = getString (r.string.share_url);
me mediObject.Identify = utility.geReReGUID ();
me mediObject.title = getResources (). getString (r.string.share_title);
meiosObject.Description = getString (r.string.share_content);
Bitmap bmp = bitmapFactory.DecODeResource (getResources (),
R.Drawable.iCon);
me mediObject.setThumbimage (BMP);
return meiosObject;
}
/**
* Esta classe define os parâmetros necessários para a autorização do WEIBO.
* @Author Sina
* @Sence 2013-10-07
*/
classe pública AccessTokenkeeper {
String final estática privada Preferences_name = "com_weibo_sdk_android";
String final estática privada key_uid = "uid";
String final estática privada key_access_token = "access_token";
String final estática privada key_expires_in = "expires_in";
/**
* Salve o objeto de token em SharedPreferências.
*
* Contexto do aplicativo de contexto @param
* @param token token objeto
*/
public static void writeaccesstoken (contexto de contexto, oauth2acccesstoken squen) {
if (null == context || null == token) {
retornar;
}
SharedPreferências pref = context.getsharedPreferences (preferências_name, context.mode_append);
Editor editor = pref.edit ();
editor.putString (key_uid, token.getuid ());
editor.putString (key_access_token, token.gettoken ());
editor.putlong (key_expires_in, token.getexpirestime ());
editor.Commit ();
}
/**
* Leia as informações do token da SharedPreferences.
*
* Contexto do aplicativo de contexto @param
*
* @return retornar ao objeto Token
*/
public static outh2accessToken readaccessToken (contexto de contexto) {
if (null == context) {
retornar nulo;
}
OAuth2AccessToken Token = new Oauth2AccessToken ();
SharedPreferências pref = context.getsharedPreferences (preferências_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));
Token de retorno;
}
/**
* Limpe as informações do token em SharedPreferências.
*
* Contexto do aplicativo de contexto @param
*/
public static void claro (contexto de contexto) {
if (null == context) {
retornar;
}
SharedPreferências pref = context.getsharedPreferences (preferências_name, context.mode_append);
Editor editor = pref.edit ();
editor.clear ();
editor.Commit ();
}
}
O exposto acima é tudo sobre este artigo, e espero que seja útil que todos dominem o Java.