package com.android.nebulasdk; import android.app.TaskInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import com.android.database.DaoManager; import com.android.database.lib.AppConfigBean; import com.android.database.lib.DownLoadTaskBean; import com.android.database.lib.TaskInfoBean; import com.android.download.AppExecutors; import com.android.download.DownLoadManeger; import com.android.util.DateUtil; import com.android.util.DeviceUtil; import com.android.util.FileUtil; import com.android.util.GsonUtil; import com.android.util.LogUtils; import com.android.util.PakageInstallUtil; import com.android.util.SharedPreferencesUtil; import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 任务管理 */ //public class TaskManager implements DownLoadManeger.DownloadListener { // // private List taskInfoList = new ArrayList<>(); // private Context mContext; // private static TaskManager mInstance = null; // private TaskInfo mCurrentTaskInfo = null; // /**launcher 资源更新通知*/ // public static final String NOTIFY_LAUNCHER_UPDATE="com.ik.launcher.res.notify"; // /**Advert 资源更新通知*/ // public static final String NOTIFY_ADVERT_UPDATE="com.ik.Advert.res.notify"; //// List recordDownlaodInfoList = new ArrayList<>(); // /**app禁用标识**/ // private static final int APP_DIAABLE = 1; // /**app未禁用标识**/ // private static final int APP_UNDIAABLE = 0; // // private TaskManager(Context context){ // this.mContext = context; // DownLoadManeger.init(mContext); // DownLoadManeger.getInstance().registerDownloadListener(this); // } // // public static void init(Context context){ // if(mInstance==null){ // mInstance = new TaskManager(context); // } // // } // public static TaskManager getInstance(){ // return mInstance; // } // // // // // // // // // // public void addTaskInfos(List taskInfoList){ // // // // // // // // for (TaskInfo taskInfoItem:taskInfoList){ // // int activiteCount = SharedPreferencesUtil.getSharePrefrencesInteger(mContext,SharedPreferencesUtil.CONFIG_ACTIVATE_COUNT); // if(taskInfoItem.getCountActivate()!=0&&taskInfoItem.getCountActivate()>activiteCount){ // continue; // } // // ResInfo resInfo = taskInfoItem.getTaskData(); // if(resInfo==null){ // continue; // } // // //1.当前app是否已安装 // if(PakageInstallUtil.checkAppInstall(mContext,taskInfoItem.getTaskData().getPackageName(),taskInfoItem.getTaskData().getVersionCode())){ // LogUtils.loge("The app already exists"); // continue; // } // // // // List taskInfoBeanList =DaoManager.getInstance().queryByKeyList(TaskInfoBean.class,"taskId",taskInfoItem.getTaskId()+""); // // List appConfigBeanList =DaoManager.getInstance().queryByKeyList(AppConfigBean.class,"taskId",taskInfoItem.getTaskId()+""); // // TaskInfoBean taskInfoBean =null; // AppConfigBean appConfigBean = null; // // if(taskInfoBeanList.size()>0){ // taskInfoBean =taskInfoBeanList.get(0); // appConfigBean = appConfigBeanList.get(0); // // LogUtils.loge("currentVersionCode|newVersionCode:"+taskInfoBean.getTaskVersionCode()+"|"+taskInfoItem.getTaskVersionCode()); // if(taskInfoBean.getTaskVersionCode() dataMap = new HashMap<>(); //// dataMap.put("package_name",resInfo.getPackageName()); //// dataMap.put("verison_code",resInfo.getVersionCode()+""); //// dataMap.put("verison_name",resInfo.getVersionName()); //// dataMap.put("mac", DeviceUtil.getEthernetMac()); //// EventManager.getInstance().recordEvent(EventManager.EVENT_DOWNLOAD_APP_CODE,dataMap); // } // } // addDownloadTask(resInfo.getFileUrl(),resInfo.getFileName(),resInfo.getMimeType(),taskInfoBean.getTaskType(),resInfo.getFileSize()); // // }catch (Exception e){ // e.printStackTrace(); // } // // } // // // /** // * 开启任务下载 // * */ //// private void downloadTask(TaskInfoBean taskInfoBean){ //// addDownloadTask(taskInfoBean.getFile_url(),taskInfoBean.getFileName(),taskInfoBean.getMimeType(),taskInfoBean.getTaskType()); //// //// } // // // // private void addDownloadTask(String url, String fileName, String minType,int taskType,long fileSize) { // String filePath = FileUtil.getBakPath(mContext,taskType); // LogUtils.loge("filePath===>"+filePath); // DownLoadManeger.getInstance().addDownloadTask(new DownLoadManeger.DownloadBuilder().url(url).fileName(fileName).filePath(filePath).taskType(taskType).fileTotal(fileSize)); // } // // // // // // private boolean checkAppUpdate(String packageName,int appVersionCode){ // // try { // // String tmpPackage = null; // if(packageName.contains("/")){ // String[] pramArray = packageName.split("/"); // tmpPackage = pramArray[0]; // }else { // tmpPackage = packageName; // } // // PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(tmpPackage,0); // if(packageInfo==null){ // return true; // } // // if(packageInfo.versionCode taskInfoBeanList =DaoManager.getInstance().queryByValueList(AppConfigBean.class,new String[]{"disable"},new String[]{APP_DIAABLE+""}); // // // for (AppConfigBean appConfigBean:taskInfoBeanList){ //禁用app // String tmpPackageName = null; // if(appConfigBean.getPackageName().contains("/")){ // String[] pramArray = appConfigBean.getPackageName().split("/"); // tmpPackageName = pramArray[0]; // }else { // tmpPackageName =appConfigBean.getPackageName(); // } // PakageInstallUtil.executeAppUnInstall(mContext,tmpPackageName); // } // }catch (Exception e){ // e.printStackTrace(); // } // // //开机启动的必须是sservice app // List taskInfoBeanList =DaoManager.getInstance().queryByValueList(AppConfigBean.class,new String[]{"autoStart"},new String[]{"1"}); // for (AppConfigBean appConfigBean:taskInfoBeanList){ //启动server app // try { // if(appConfigBean.getDisable()==APP_DIAABLE){ //该任务已禁用 // continue; // } // String packageName = appConfigBean.getPackageName(); // if (packageName != null && packageName.contains("/")) { // 根据包名判断只启动服务app,其他情况不启动app // String[] packageNameArray = packageName.split("/"); // Intent intent = new Intent(); // intent.setComponent(new ComponentName(packageNameArray[0], packageNameArray[1])); // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // mContext.startForegroundService(intent); // } else { // mContext.startService(intent); // } // } // // }catch (Exception e){ // e.printStackTrace(); // } // } // // // // // // // // // // } // }.start(); // } // // // @Override // public void onStart(DownLoadTaskBean bean, long taskId) { // // } // // @Override // public void onError(DownLoadTaskBean bean, long taskId, String erroMsg) { // // } // // @Override // public void onProgress(DownLoadTaskBean bean, long taskId, long progress) { // LogUtils.loge("onProgress:"+taskId+"||"+bean.getFileName()+"||"+progress); // } // // @Override // public void onFinish(DownLoadTaskBean bean, long taskId) { // // AppExecutors.getAppExecutors().diskIO().execute(() -> { // String appInstallPath = bean.getPath()+ File.separator+bean.getFileName(); // LogUtils.loge("filePath==>" + bean.getTaskType()+"||"+appInstallPath); // TaskInfoBean taskInfoBean =null; // AppConfigBean appConfigBean = null; // List taskInfoBeanList = DaoManager.getInstance().queryByKeyList(TaskInfoBean.class,"file_url",bean.getUrl()); // if(taskInfoBeanList.size()>0){ // taskInfoBean = taskInfoBeanList.get(0); // taskInfoBean.setStatus(2);//表示下载完成 // DaoManager.getInstance().update(TaskInfoBean.class,taskInfoBean); // List appConfigBeanList = DaoManager.getInstance().queryByKeyList(AppConfigBean.class,"taskId",taskInfoBean.getTaskId()+""); // appConfigBean = appConfigBeanList.get(0); // // }else { // LogUtils.loge("任务下载完成,未找到对应的任务。"); // return; // } // // switch (bean.getTaskType()){ // case 1: // if(appConfigBean.isSystemPermissions()){ // //执行app系统拷贝安装,该方案不可行,但是可以拷贝推送文件到指定的非系统目录下,暂时保留该方案 // try { // File sourceFileFile = new File(appInstallPath); // File targetFile = new File(appConfigBean.getInstallFilePath()+bean.getFileName()); // FileUtil.copyFilesFromTo(targetFile,sourceFileFile,0); // }catch (Exception e){ // e.printStackTrace(); // } // //// PakageInstallUtil.executeStstemAppInstall(mContext,appInstallPath); // // }else { // // 执行app普通安装 // boolean flag = PakageInstallUtil.silentInstall(mContext,appInstallPath); // if(flag) { //// FileUtil.deleteFile(appInstallPath); //安装成功后删除文件 // LogUtils.loge("executeAppInstall==>" + flag + "||" + appInstallPath); // // Map parm=new HashMap<>(); // parm.put("mac",DeviceUtil.getEthernetMac()); // parm.put("taskId",taskInfoBean.getTaskId()+""); // parm.put("pushTaskTime", DateUtil.format(new Date(),DateUtil.FORMAT_FULL)); // List> parmArry = new ArrayList<>(); // parmArry.add(parm); // LogUtils.loge("executeAppInstall===>"+GsonUtil.GsonString(parmArry)); // EventManager.getInstance().recordEvent(EventManager.EVENT_PUSH_TASK_CODE,parmArry); // // //// List appConfigBeanList = DaoManager.getInstance().queryByKeyList(AppConfigBean.class,"taskId",taskInfoBean.getTaskId()+""); //// for (AppConfigBean appConfigBean:appConfigBeanList){ //// try { //// if (appConfigBean.getAutoStart() == 1 && appConfigBean.getDisable() == 1) { //// String packageName = appConfigBean.getPackageName(); //// if (packageName != null && packageName.contains("/")) { // 根据包名判断只启动服务app,必须是service app //// String[] packageNameArray = packageName.split("/"); //// Intent intent = new Intent(); //// intent.setComponent(new ComponentName(packageNameArray[0], packageNameArray[1])); //// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { //// mContext.startForegroundService(intent); //// } else { //// mContext.startService(intent); //// } //// LogUtils.loge("executeAppInstall==>" + packageName); //// } //// //// } //// }catch (Exception e){ //// e.printStackTrace(); //// } // //// } // // // // // // // } // } // // break; // case 0: // //TODO 广告已zip包的方式存在,下载完后进行解压,并把路径通知出去 //// Intent intent=new Intent(NOTIFY_ADVERT_UPDATE); //// intent.addFlags(0x01000000); //// mContext.sendBroadcast(intent); // break; // } // }); // // // // } //}