package org.aisen.weibo.sina.support.utils; import java.io.File; import java.util.Calendar; import java.util.List; import org.aisen.weibo.sina.support.bean.AccountBean; import org.aisen.weibo.sina.support.biz.BizLogic; import org.aisen.weibo.sina.support.db.AccountDB; import org.aisen.weibo.sina.support.http.GithubResourceDownloadHttpUtility; import org.sina.android.SinaSDK; import org.sina.android.bean.Groups; import org.sina.android.bean.Token; import org.sina.android.bean.TokenInfo; import org.sina.android.bean.WeiBoUser; import android.os.AsyncTask; import com.m.common.context.GlobalContext; import com.m.common.utils.ActivityHelper; import com.m.common.utils.DateUtils; import com.m.common.utils.Logger; import com.m.common.utils.SystemUtility; import com.m.common.utils.SystemUtility.NetWorkType; import com.m.support.bizlogic.ABaseBizlogic; import com.m.support.task.TaskException; import com.m.support.task.WorkTask; public class CheckChangedUtils { public static void check(WeiBoUser user, Token token) { checkLogedInUserInfo(user, token); checkAccountTokenInfo(); } /** * 检查分组信息、用户信息 */ public static void checkLogedInUserInfo(final WeiBoUser user, final Token token) { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { WeiBoUser userInfo = SinaSDK.getInstance(token).userShow(user.getIdstr(), null); if (AppContext.isLogedin() && AppContext.getUser().getIdstr().equals(userInfo.getIdstr())) { Groups groups = SinaSDK.getInstance(token).friendshipGroups(); // 未登录或者登录用户切换了 if (!AppContext.isLogedin() || !AppContext.getUser().getId().equals(user.getIdstr())) return null; try { // 刷新首页 if (AppContext.getGroups() == null || AppContext.getGroups().getLists().size() != groups.getLists().size()) { ActivityHelper.getInstance().putBooleanShareData("offlineChanneChanged", true); } } catch (Exception e) { } // 更新上下文 AppContext.refresh(userInfo, groups); // 更新DB AccountBean bean = new AccountBean(); bean.setUserId(user.getIdstr()); bean.setGroups(groups); bean.setUser(userInfo); AccountDB.newAccount(bean); } } catch (Exception e) { } return null; } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } static void checkAccountTokenInfo() { new GetTokenInfoTask().execute(); } static class GetTokenInfoTask extends WorkTask<Void, Void, TokenInfo> { @Override public TokenInfo workInBackground(Void... params) throws TaskException { List<AccountBean> accountList = AccountDB.query(); for (AccountBean account : accountList) { TokenInfo tokenInfo = null; try { tokenInfo = SinaSDK.getInstance(account.getToken()).getTokenInfo(account.get_token()); } catch (TaskException e) { e.printStackTrace(); if ("21327".equals(e.getErrorCode()) || "21317".equals(e.getErrorCode())) { tokenInfo = new TokenInfo(); tokenInfo.setCreate_at("0"); tokenInfo.setExpire_in("0"); } } if (tokenInfo != null) { account.setTokenInfo(tokenInfo); long validSecond = Long.parseLong(tokenInfo.getCreate_at()) + Long.parseLong(tokenInfo.getExpire_in()); if (validSecond == 0) { Logger.w(ABaseBizlogic.TAG, account.getUser().getScreen_name() + "授权已失效"); } else { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(validSecond * 1000); Logger.w(ABaseBizlogic.TAG, account.getUser().getScreen_name() + DateUtils.formatDate(cal.getTimeInMillis(), DateUtils.TYPE_01)); } AccountDB.newAccount(account); } } return null; } } private static CheckWallpaperTask checkWallpaperTask; public static void checkWallpaper() { if (ActivityHelper.getInstance().getBooleanShareData("DownloadWallpaper", true) && checkWallpaperTask == null && SystemUtility.getNetworkType() != NetWorkType.none) new CheckWallpaperTask().execute(); else Logger.d(GithubResourceDownloadHttpUtility.TAG, "壁纸都存在了"); } static class CheckWallpaperTask extends WorkTask<Void, Void, Void> { CheckWallpaperTask() { checkWallpaperTask = this; } @Override public Void workInBackground(Void... params) throws TaskException { final String TAG = GithubResourceDownloadHttpUtility.TAG; String dirFile = GlobalContext.getInstance().getFilesDir().getAbsolutePath(); int downloadCount = 0; for (String fileName : AisenUtil.wallpaperNames) { File file = new File(dirFile + File.separator + fileName); if (file.exists()) { Logger.d(TAG, String.format("壁纸 %s 已存在", file.getName())); downloadCount++; } else { if (BizLogic.newInstance().githubResDownload(fileName, dirFile)) { downloadCount++; Logger.d(TAG, "下载了壁纸 file = " + fileName); } } } Logger.d(TAG, "downloaded wallpaper count = " + downloadCount); if (downloadCount == 8) { ActivityHelper.getInstance().putBooleanShareData("DownloadWallpaper", false); Logger.d(TAG, "所有壁纸下载完成了"); } else { Logger.d(TAG, "所有壁纸下载完成了一部分,还有一部分下次启动程序时检测下载"); } return null; } @Override protected void onFinished() { super.onFinished(); checkWallpaperTask = null; } } }