package org.aisen.weibo.sina.base;
import android.app.AlarmManager;
import android.app.PendingIntent;
import org.aisen.android.common.context.GlobalContext;
import org.aisen.android.common.setting.SettingUtility;
import org.aisen.android.common.utils.DateUtils;
import org.aisen.android.common.utils.Logger;
import org.aisen.android.component.bitmaploader.BitmapLoader;
import org.aisen.android.network.task.TaskException;
import org.aisen.android.network.task.WorkTask;
import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser;
import org.aisen.weibo.sina.sinasdk.core.SinaErrorMsgUtil;
import org.aisen.weibo.sina.support.bean.AccountBean;
import org.aisen.weibo.sina.support.bean.PublishBean;
import org.aisen.weibo.sina.support.db.AccountDB;
import org.aisen.weibo.sina.support.db.EmotionsDB;
import org.aisen.weibo.sina.support.db.PublishDB;
import org.aisen.weibo.sina.sys.receiver.TimingBroadcastReceiver;
import org.aisen.weibo.sina.sys.receiver.TimingIntent;
import org.aisen.weibo.sina.ui.fragment.account.AccountFragment;
import java.net.URLEncoder;
import java.util.List;
import im.fir.sdk.FIR;
public class MyApplication extends GlobalContext {
@Override
public void onCreate() {
// 初始化
if (AppSettings.isCrashLogUpload()) {
FIR.init(this);
}
super.onCreate();
// 初始化图片加载
BitmapLoader.newInstance(this, getImagePath());
// 配置异常处理类
TaskException.config(new SinaErrorMsgUtil());
// 设置登录账户
AccountBean accountBean = AccountDB.getLogedinAccount();
SettingUtility.addSettings("meizt_actions");
if (accountBean != null)
AppContext.login(accountBean);
// 检查表情
try {
EmotionsDB.checkEmotions();
} catch (Exception e) {
}
// 打开Debug日志
Logger.DEBUG = true;
}
// 刷新定时发布任务
public static void refreshPublishAlarm() {
new WorkTask<Void, Void, Void>() {
@Override
public Void workInBackground(Void... params) throws TaskException {
List<PublishBean> beans = PublishDB.getPublishList(AppContext.getUser());
AlarmManager am = (AlarmManager) GlobalContext.getInstance().getSystemService(ALARM_SERVICE);
for (PublishBean bean : beans) {
// PendingIntent sender = PendingIntent.getService(getInstance(), (int) (bean.getTiming() - System.currentTimeMillis()), intent, PendingIntent.FLAG_CANCEL_CURRENT);
if (bean.getTiming() > System.currentTimeMillis()) {
TimingIntent intent = new TimingIntent(bean.getTiming());
String timingStr = bean.getTiming() / 1000 + "";
int requectCode = Integer.parseInt(timingStr.substring(timingStr.length() - 6, timingStr.length()));
PendingIntent sender = PendingIntent.getBroadcast(GlobalContext.getInstance(), requectCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Logger.d(TimingBroadcastReceiver.TAG, "添加一个定时任务到系统时钟, request = " + requectCode);
Logger.d(TimingBroadcastReceiver.TAG, DateUtils.formatDate(bean.getTiming(), DateUtils.TYPE_01));
Logger.d(AccountFragment.TAG, "添加一个定时任务到系统时钟, request = " + requectCode);
Logger.d(AccountFragment.TAG, DateUtils.formatDate(bean.getTiming(), DateUtils.TYPE_01));
am.set(AlarmManager.RTC_WAKEUP, bean.getTiming(), sender);
}
else {
Logger.d(TimingBroadcastReceiver.TAG, "定时任务已过期");
}
}
return null;
}
}.executeOnSerialExecutor();
}
public static void removeAllPublishAlarm() {
new WorkTask<WeiBoUser, Void, Void>() {
@Override
public Void workInBackground(WeiBoUser... params) throws TaskException {
List<PublishBean> beans = PublishDB.getPublishList(params[0]);
for (PublishBean bean : beans) {
if (bean.getTiming() > System.currentTimeMillis()) {
Logger.d(AccountFragment.TAG, "清理所有定时任务");
Logger.d(TimingBroadcastReceiver.TAG, "清理所有定时任务");
removePublishAlarm(bean);
}
}
return null;
}
}.execute(AppContext.getUser());
}
public static void removePublishAlarm(PublishBean bean) {
TimingIntent intent = new TimingIntent(bean.getTiming());
String timingStr = bean.getTiming() / 1000 + "";
int requectCode = Integer.parseInt(timingStr.substring(timingStr.length() - 6, timingStr.length()));
PendingIntent sender = PendingIntent.getBroadcast(GlobalContext.getInstance(), requectCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Logger.d(AccountFragment.TAG, "从系统时钟移除一个定时任务, request = " + requectCode);
Logger.d(TimingBroadcastReceiver.TAG, "从系统时钟移除一个定时任务, request = " + requectCode);
AlarmManager am = (AlarmManager) GlobalContext.getInstance().getSystemService(ALARM_SERVICE);
am.cancel(sender);
}
public static void setDebugAccount(AccountBean account) {
try {
FIR.addCustomizeValue("uid", account.getUserId());
FIR.addCustomizeValue("screen_name", URLEncoder.encode(account.getUser().getScreen_name(), "utf-8"));
} catch (Throwable e) {
e.printStackTrace();
}
}
}