package com.ztspeech.simutalk2.weibo; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.Window; import com.ztspeech.simutalk2.R; import com.ztspeech.simutalk2.dictionary.util.LogInfo; import com.ztspeech.simutalk2.dictionary.util.Util; import com.ztspeech.weibo.sdk.renren.AsyncRenren; import com.ztspeech.weibo.sdk.renren.Renren; import com.ztspeech.weibo.sdk.renren.common.AbstractRequestListener; import com.ztspeech.weibo.sdk.renren.exception.RenrenAuthError; import com.ztspeech.weibo.sdk.renren.exception.RenrenError; import com.ztspeech.weibo.sdk.renren.feed.FeedPublishRequestParam; import com.ztspeech.weibo.sdk.renren.feed.FeedPublishResponseBean; import com.ztspeech.weibo.sdk.renren.status.StatusSetResponseBean; import com.ztspeech.weibo.sdk.renren.view.RenrenAuthListener; public class IRenren { // private Context context; private static final String API_KEY = "978e1e68cbe74d81aa178a8aa487ffdf"; private static final String SECRET_KEY = "2eb96ee32f0147159a117ca7c86e96be "; private static final String APP_ID = "222082 "; private static final String[] DEFAULT_PERMISSIONS = { "publish_feed", "status_update" }; private static Renren renren; private ProgressDialog progress; private static IRenren iRenren = null; private Handler handler; private Context mContext; private Handler mHandler; private String contentStr = null; public IRenren(Context context) { mContext = context; setHandler(mContext); } private void setHandler(Context context) { Looper mainLooper = context.getMainLooper(); handler = new Handler(mainLooper) { @Override public void handleMessage(Message msg) { switch (msg.what) { case 200: Util.showToast(mContext, "��Ȩ�ɹ�"); break; case 201: Util.showToast(mContext, (String) msg.obj); break; case 202: if(contentStr==null){ Util.showToast(mContext, (String) msg.obj); }else{ sendWeibo(contentStr, mContext); } break; case 400: Util.showToast(mContext, "��Ȩʧ��"); break; case 401: Util.showToast(mContext, (String) msg.obj); break; default: break; } } }; } public void setClass() { iRenren = null; } public synchronized static IRenren getInstance(Context context) { if (iRenren == null) { iRenren = new IRenren(context); } return iRenren; } public void init(Context context) { renren = new Renren(API_KEY, SECRET_KEY, APP_ID, context); } public boolean isBinder() { return renren.isAccessTokenValid(); } public boolean unBinderRenren(Context context) { if (renren.isAccessTokenValid()) { renren.logout(context); } return true; } // ��Ȩ public void bindRenren(Context context, Handler _mHandler) { mContext = context; setHandler(mContext); mHandler = _mHandler; if (renren.isAccessTokenValid()) { renren.logout(context); } renren.authorize((Activity) context, DEFAULT_PERMISSIONS, rrAuthListener); } // ��״̬ public void sendWeibo(String contentStr, Context context) { mContext = context; setHandler(mContext); if (renren != null) { if (renren.isAccessTokenValid()) { progress = new ProgressDialog(mContext, R.style.mydialog); progress.requestWindowFeature(Window.FEATURE_NO_TITLE); progress.setMessage("���ڷ��������Ժ�"); progress.setCanceledOnTouchOutside(false); progress.show(); // StatusSetRequestParam param = new // StatusSetRequestParam(contentStr); // StatusSetListener listener = new StatusSetListener(mContext); RenrenInfo mRenrenInfo = new RenrenInfo(); mRenrenInfo.description = contentStr; FeedPublishRequestParam param = new FeedPublishRequestParam(mRenrenInfo.name, mRenrenInfo.description, mRenrenInfo.url, mRenrenInfo.imageUrl, mRenrenInfo.caption, mRenrenInfo.actionName, mRenrenInfo.actionLink, mRenrenInfo.description); LogInfo.LogOutE("haitian", mRenrenInfo.description); FeedPublishListener listener = new FeedPublishListener(mContext); try { AsyncRenren aRenren = new AsyncRenren(renren); // aRenren.publishStatus(param, listener, // �Խ�����м��� // true); // ������140�ַ������Զ��ض� aRenren.publishFeed(param, listener, // �Խ�����м��� true); // ������140�ַ������Զ��ض� } catch (Throwable e) { String errorMsg = e.getMessage(); handler.sendMessage(Message.obtain(handler, 401, errorMsg)); } } else { renren.authorize((Activity) mContext, DEFAULT_PERMISSIONS, rrSendAuthListener); } } } // ��token public void saveStatus(int requestCode, int resultCode, Intent data) { if (renren != null) { renren.authorizeCallback(requestCode, resultCode, data); } } private RenrenAuthListener rrAuthListener = new RenrenAuthListener() { @Override public void onRenrenAuthError(RenrenAuthError renrenAuthError) { // ��Ȩʧ�� handler.sendEmptyMessage(400); if (mHandler != null) { mHandler.sendEmptyMessage(201); mHandler = null; } } @Override public void onComplete(Bundle values) { // ��Ȩ�ɹ���Ӧ���� handler.sendEmptyMessage(200); if (mHandler != null) { mHandler.sendEmptyMessage(201); mHandler = null; } } @Override public void onCancelLogin() { // TODO Auto-generated method stub } @Override public void onCancelAuth(Bundle values) { // TODO Auto-generated method stub } }; private RenrenAuthListener rrSendAuthListener = new RenrenAuthListener() { @Override public void onRenrenAuthError(RenrenAuthError renrenAuthError) { // ��Ȩʧ�� handler.sendEmptyMessage(400); if (mHandler != null) { mHandler.sendEmptyMessage(201); mHandler = null; } } @Override public void onComplete(Bundle values) { // ��Ȩ�ɹ���Ӧ���� handler.sendEmptyMessage(202); if (mHandler != null) { mHandler.sendEmptyMessage(201); mHandler = null; } } @Override public void onCancelLogin() { // TODO Auto-generated method stub } @Override public void onCancelAuth(Bundle values) { // TODO Auto-generated method stub } }; private class StatusSetListener extends AbstractRequestListener<StatusSetResponseBean> { private Context context; private Handler handler; public StatusSetListener(Context context) { this.context = context; Looper mainLooper = context.getMainLooper(); this.handler = new Handler(mainLooper) { @Override public void handleMessage(Message msg) { switch (msg.what) { case 200: Util.showToast(mContext, "��Ȩ�ɹ�"); break; case 201: Util.showToast(mContext, (String) msg.obj); break; case 400: Util.showToast(mContext, "��Ȩʧ��"); break; case 401: Util.showToast(mContext, (String) msg.obj); break; default: break; } } }; } @Override public void onRenrenError(RenrenError renrenError) { final int errorCode = renrenError.getErrorCode(); final String errorMsg = renrenError.getMessage(); handler.post(new Runnable() { @Override public void run() { if (context != null) { if (progress != null) { progress.dismiss(); } } } }); if (errorCode == RenrenError.ERROR_CODE_OPERATION_CANCELLED) { handler.sendMessage(Message.obtain(handler, 201, "���ͱ�ȡ��")); } else { handler.sendMessage(Message.obtain(handler, 401, "����ʧ��")); } } @Override public void onFault(Throwable fault) { final String errorMsg = fault.toString(); handler.post(new Runnable() { @Override public void run() { if (context != null) { if (progress != null) { progress.dismiss(); } } } }); handler.sendMessage(Message.obtain(handler, 401, "����ʧ��")); } @Override public void onComplete(StatusSetResponseBean bean) { final String responseStr = bean.toString(); handler.post(new Runnable() { @Override public void run() { if (context != null) { if (progress != null) { progress.dismiss(); } } } }); handler.sendMessage(Message.obtain(handler, 201, "���ͳɹ�")); } } private class FeedPublishListener extends AbstractRequestListener<FeedPublishResponseBean> { private Context context; private Handler handler; public FeedPublishListener(Context context) { this.context = context; Looper mainLooper = context.getMainLooper(); this.handler = new Handler(mainLooper) { @Override public void handleMessage(Message msg) { switch (msg.what) { case 200: Util.showToast(mContext, "��Ȩ�ɹ�"); break; case 201: Util.showToast(mContext, (String) msg.obj); contentStr = null; break; case 400: Util.showToast(mContext, "��Ȩʧ��"); break; case 401: Util.showToast(mContext, (String) msg.obj); break; default: break; } } }; } @Override public void onRenrenError(RenrenError renrenError) { final int errorCode = renrenError.getErrorCode(); final String errorMsg = renrenError.getMessage(); LogInfo.LogOutE("haitian", "onRenrenError = " + errorMsg); handler.post(new Runnable() { @Override public void run() { if (context != null) { if (progress != null) { progress.dismiss(); } } } }); if (errorCode == RenrenError.ERROR_CODE_OPERATION_CANCELLED) { handler.sendMessage(Message.obtain(handler, 201, "���ͱ�ȡ��")); } else { handler.sendMessage(Message.obtain(handler, 401, "����ʧ��")); } } @Override public void onFault(Throwable fault) { final String errorMsg = fault.toString(); LogInfo.LogOutE("haitian", "onFault = " + errorMsg); handler.post(new Runnable() { @Override public void run() { if (context != null) { if (progress != null) { progress.dismiss(); } } } }); handler.sendMessage(Message.obtain(handler, 401, "����ʧ��")); } @Override public void onComplete(FeedPublishResponseBean bean) { LogInfo.LogOutE("haitian", "onComplete = " + bean.toString()); handler.post(new Runnable() { @Override public void run() { if (context != null) { if (progress != null) { progress.dismiss(); } } } }); handler.sendMessage(Message.obtain(handler, 201, "���ͳɹ�")); } } class RenrenInfo { /** * �����±��⣬���30���ַ���Ϊ������� */ public String name = "�϶�����"; /** * �������������ݣ����200���ַ���Ϊ������� */ public String description; /** * �����±����ͼƬָ������ӣ�Ϊ������� */ public String url = "http://www.ztspeech.com"; /** * ������ͼƬ��ַ��Ϊ��ѡ���� */ public String imageUrl = ""; /** * �����¸����⣬���20���ַ���Ϊ��ѡ���� */ public String caption = ""; /** * �����¶���ģ���İ������20���ַ���Ϊ��ѡ���� */ public String actionName = ""; /** * �����¶���ģ�����ӣ�Ϊ��ѡ���� */ public String actionLink = ""; /** * �û�������Զ������ݣ����200���ַ���Ϊ��ѡ���� */ public String message = "�϶�����,�����ĵ�������������"; } }