From ecdbb788f5443f777258b5c2a81b3db652deefa7 Mon Sep 17 00:00:00 2001 From: kangshulong <1095887643@qq.com> Date: Fri, 21 Nov 2025 19:29:53 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=B9=BF=E5=91=8A=E4=BD=8D=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=92=8C=E5=AF=B9=E5=B7=B2=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E8=BF=9B=E8=A1=8CSharedference=E5=AD=98=E5=82=A8=202.=E5=AF=B9?= =?UTF-8?q?=E5=B9=BF=E5=91=8A=E4=BD=8D=E6=9B=B4=E6=96=B0=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=AF=B9Sharedference=E8=BF=9B=E8=A1=8C=E6=B8=85=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ik/mboxlauncher/ui/Launcher.java | 44 ++++++++ .../com/ik/mboxlauncher/ui/MyApplication.java | 3 +- .../main/java/com/android/SharePreUtils.java | 102 ++++++++++++++++++ .../main/java/com/android/api/ServerApi.java | 4 + .../java/com/android/api/ServerInterface.java | 2 + .../main/java/com/android/api/biz/Biz.java | 5 +- .../com/android/api/biz/bizimpl/BizImpl.java | 34 ++++++ .../com/android/download/DownLoadManeger.java | 5 + .../java/com/android/nebulasdk/ADManager.java | 60 +++++++++++ .../android/nebulasdk/bean/UploadADBean.java | 76 +++++++++++++ .../presenter/DownLoadAdPresenter.java | 69 ++++++++++++ .../com/android/util/PakageInstallUtil.java | 2 +- 12 files changed, 402 insertions(+), 4 deletions(-) create mode 100644 mylibrary/src/main/java/com/android/SharePreUtils.java create mode 100644 mylibrary/src/main/java/com/android/nebulasdk/bean/UploadADBean.java create mode 100644 mylibrary/src/main/java/com/android/nebulasdk/presenter/DownLoadAdPresenter.java diff --git a/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java b/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java index 93c72bc..88c3e95 100644 --- a/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java +++ b/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java @@ -30,6 +30,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; import com.android.MXQConfig; +import com.android.SharePreUtils; import com.android.api.encrytion.UtilEncrypt; import com.android.database.lib.AdsInfoBean; import com.android.database.lib.AppBean; @@ -41,6 +42,9 @@ import com.android.monitor.DataBeeObserver; import com.android.nebulasdk.ADManager; import com.android.nebulasdk.AppManager; import com.android.nebulasdk.bean.FavNaviBean; +import com.android.nebulasdk.bean.UploadADBean; +import com.android.nebulasdk.presenter.DownLoadAdPresenter; +import com.android.nebulasdk.presenter.callback.AppnetCallback; import com.android.util.GsonUtil; import com.android.util.IntentUtil; import com.android.util.LogUtils; @@ -102,6 +106,7 @@ public class Launcher extends FragmentActivity implements SplashView.SplashAdLi /**闪屏界面是否结束*/ private boolean isSplashEnd=false; private SplashView mSplashView; + private DownLoadAdPresenter downLoadAdPresenter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -637,6 +642,45 @@ public boolean onGenericMotionEvent(MotionEvent event) { LogUtils.loge("onMessageEvent===>"+event.action); if(MessageEvent.ACTION_UPADATE_DATA_SOURCE.equals(event.action)) { ADManager.getInstance().updateDownloadTaskBeanTable(); + if(isNetworkAvailable()&&ADManager.getInstance().checkTaskQueueClear()){ + ArrayList uploadAds = ADManager.getInstance().getUploadAds(); + if(uploadAds.size()>1){ + if(downLoadAdPresenter==null){ + downLoadAdPresenter = new DownLoadAdPresenter(new AppnetCallback() { + @Override + public void onResult(Object data) { + LogUtils.loge("DownLoadAdPresenter result="+String.valueOf(data)); + SharePreUtils.savePreference(); + } + + @Override + public void onViewFailureString(int code, String message) { + LogUtils.loge("DownLoadAdPresenter onViewFailureString="+message); + SharePreUtils.resetDataList(); + } + + @Override + public void onExceptionFailure(String message) { + LogUtils.loge("DownLoadAdPresenter onExceptionFailure="+message); + SharePreUtils.resetDataList(); + } + + @Override + public void onServerFailure(int code, String message) { + LogUtils.loge("DownLoadAdPresenter onServerFailure="+message+"code="+code); + SharePreUtils.resetDataList(); + } + }); + } + try { + downLoadAdPresenter.postDownLoadAds(Launcher.this,uploadAds); + } catch (Exception e) { + LogUtils.loge("downLoadAdPresenter net request error"+e.getMessage()); + SharePreUtils.resetDataList(); + //throw new RuntimeException(e); + } + } + } handler.removeCallbacks(runnable); handler.postDelayed(runnable,1000*5); diff --git a/app/src/main/java/com/ik/mboxlauncher/ui/MyApplication.java b/app/src/main/java/com/ik/mboxlauncher/ui/MyApplication.java index 1dee3a5..3a78b01 100644 --- a/app/src/main/java/com/ik/mboxlauncher/ui/MyApplication.java +++ b/app/src/main/java/com/ik/mboxlauncher/ui/MyApplication.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.util.Log; +import com.android.SharePreUtils; import com.android.monitor.DataBeeObserver; import com.android.nebulasdk.ADManager; import com.android.nebulasdk.AppManager; @@ -27,7 +28,7 @@ public class MyApplication extends Application { DataBeeObserver.init(getApplicationContext()); AppManager.init(getApplicationContext()); ADManager.init(getApplicationContext()); - + SharePreUtils.getInstance(getApplicationContext()); AdConfig config = new AdConfig.Builder() .isDebug(false)//是否开始 debug 模式,开启会打印更多log,供开发调试 .productName("aike")//正式发版时使用正式的PN diff --git a/mylibrary/src/main/java/com/android/SharePreUtils.java b/mylibrary/src/main/java/com/android/SharePreUtils.java new file mode 100644 index 0000000..d87cfa7 --- /dev/null +++ b/mylibrary/src/main/java/com/android/SharePreUtils.java @@ -0,0 +1,102 @@ +package com.android; + +import android.content.Context; +import android.content.SharedPreferences; +import android.text.TextUtils; + +import com.android.util.GsonUtil; +import com.android.util.LogUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SharePreUtils { + public static final String SHARERE_NAME="upload_ads_droid"; + private static SharePreUtils mInstance; + private static List> dataList;//处理一对多的关系 key为AdSourceId value 为任务类型值 + private static SharedPreferences.Editor editor; + + private static SharedPreferences sharedPreferences; + public SharePreUtils(Context context) { + sharedPreferences=context.getSharedPreferences(SHARERE_NAME,Context.MODE_PRIVATE); + editor=sharedPreferences.edit(); + dataList=getDataList(); + } + + public synchronized static SharePreUtils getInstance(Context context){ + if(mInstance==null){ + mInstance=new SharePreUtils(context); + } + return mInstance; + } + public synchronized static List> getDataList(){ + if(dataList==null){ + String adsHasUpload = sharedPreferences.getString("ads_has_upload", ""); + if(!TextUtils.isEmpty(adsHasUpload)){ + List> mapList = GsonUtil.GsonToListMaps(adsHasUpload); + dataList=mapList; + }else{ + dataList=new ArrayList<>(); + } + } + return dataList; + } + + public synchronized static void addRelation(String key, Object value) { + if(dataList!=null){ + Map record = new HashMap<>(); + record.put("relation_key", key); + record.put("relation_value", value); + dataList.add(record); + } + } + + public static boolean filterByKeyValue(String key, Object value) { + List> filtered = new ArrayList<>(); + if(dataList!=null){ + for (Map record : dataList) { + if (key.equals(record.get("relation_key")) &&(value == null ? record.get("relation_value") == null :value.equals(record.get("relation_value")))) { + filtered.add(record); + } + } + } + LogUtils.loge("filterByKeyValue() size"+filtered.size()+"dataList() size"+dataList.size()); + return filtered.size()==1; + } + + public synchronized static void savePreference(){ + if(dataList!=null&&dataList.size()>0){ + String commitJson = GsonUtil.GsonString(dataList); + editor.putString("ads_has_upload",commitJson).apply(); + } + } + + public static void removeKeyFromAllMaps(String keyToRemove) { + if (dataList == null || keyToRemove == null) { + return; + } + List> current=new ArrayList<>(); + // 遍历列表中的每个Map + for (Map map : dataList) { + if (map != null) { + // 使用remove方法删除指定键 + if(!map.containsKey(keyToRemove)){ + current.add(map); + } + } + } + dataList=current; + } + + public static void resetDataList(){ + String adsHasUpload = sharedPreferences.getString("ads_has_upload", ""); + if(!TextUtils.isEmpty(adsHasUpload)&& GsonUtil.isJson(adsHasUpload)){ + List> mapList = GsonUtil.GsonToListMaps(adsHasUpload); + dataList=mapList; + }else{ + dataList=new ArrayList<>(); + } + } +} diff --git a/mylibrary/src/main/java/com/android/api/ServerApi.java b/mylibrary/src/main/java/com/android/api/ServerApi.java index 0dd25ed..1b5478e 100644 --- a/mylibrary/src/main/java/com/android/api/ServerApi.java +++ b/mylibrary/src/main/java/com/android/api/ServerApi.java @@ -27,4 +27,8 @@ public interface ServerApi { @POST(ServerInterface.POST_LAUNCHER_ADS) Call postLauncherAds(@Body RequestBody requestBody); + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST(ServerInterface.POST_DOWNLOAD_ADS) + Call postDownLoadAds(@Body RequestBody requestBody); + } diff --git a/mylibrary/src/main/java/com/android/api/ServerInterface.java b/mylibrary/src/main/java/com/android/api/ServerInterface.java index 549213c..a6522ec 100644 --- a/mylibrary/src/main/java/com/android/api/ServerInterface.java +++ b/mylibrary/src/main/java/com/android/api/ServerInterface.java @@ -21,6 +21,8 @@ public class ServerInterface { /**上传事件信息*/ public static final String POST_EVENTINFO_DEVICE="/app-api/third/launcher/ad/play/callback"; + public static final String POST_DOWNLOAD_ADS="/app-api/launcher/ad/cb"; + private static final boolean USER_DEBUG=false; diff --git a/mylibrary/src/main/java/com/android/api/biz/Biz.java b/mylibrary/src/main/java/com/android/api/biz/Biz.java index 8daef26..a20f249 100644 --- a/mylibrary/src/main/java/com/android/api/biz/Biz.java +++ b/mylibrary/src/main/java/com/android/api/biz/Biz.java @@ -4,6 +4,7 @@ package com.android.api.biz; import com.android.api.biz.OnBaseListener; import com.android.database.lib.RecordEventBean; import com.android.nebulasdk.bean.EventDataInfo; +import com.android.nebulasdk.bean.UploadADBean; import java.util.List; import java.util.Map; @@ -19,8 +20,8 @@ public interface Biz { void postLauncherAds(Map map, OnBaseListener listener); //记录设备事件的接口 void postEventData(List recordEventBeans, OnBaseListener listener); - - + //上传各个广告位下载状态 + void postDownloadAd(UploadADBean uploadADBean, OnBaseListener listener); diff --git a/mylibrary/src/main/java/com/android/api/biz/bizimpl/BizImpl.java b/mylibrary/src/main/java/com/android/api/biz/bizimpl/BizImpl.java index a6a907f..acaff3b 100644 --- a/mylibrary/src/main/java/com/android/api/biz/bizimpl/BizImpl.java +++ b/mylibrary/src/main/java/com/android/api/biz/bizimpl/BizImpl.java @@ -2,6 +2,7 @@ package com.android.api.biz.bizimpl; import com.android.api.biz.Biz; import com.android.nebulasdk.bean.EventDataInfo; +import com.android.nebulasdk.bean.UploadADBean; import com.google.gson.JsonObject; import com.android.api.ServerApi; import com.android.api.biz.BaseBiz; @@ -110,5 +111,38 @@ public class BizImpl extends BaseBiz implements Biz { }); } + @Override + public void postDownloadAd(UploadADBean uploadADBean, OnBaseListener listener) { + RequestBody requestBody = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), GsonUtil.GsonString(uploadADBean)); + getStringRetrofit().create(ServerApi.class).postDownLoadAds(requestBody).enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if(call != null){ + if (response.body() != null) { + LogUtils.loge("postLauncherAds response==>" + GsonUtil.GsonString(response.body())); + if (response.isSuccessful()) { + listener.onResponse(response.body()); + } else { + listener.onFailure(response.message(), response.raw().code()); + } + } else { + listener.onFailure("The server is busy, please try again later", response.raw().code()); + } + }else { + LogUtils.loge("postDownloadAd Biz>>>>>>>>>>>>>>>>>>call == null<<<<<<<<<<<<<<<<<<"); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + if (call.isExecuted()) { + call.cancel(); + } + LogUtils.loge("recoedDeviceEvent Biz服务器未响应请求失败==>" + GsonUtil.GsonString(t.getMessage())); + listener.onFailure("The server is busy, please try again later", 0); + } + }); + } + } diff --git a/mylibrary/src/main/java/com/android/download/DownLoadManeger.java b/mylibrary/src/main/java/com/android/download/DownLoadManeger.java index 292a8ef..925e50e 100644 --- a/mylibrary/src/main/java/com/android/download/DownLoadManeger.java +++ b/mylibrary/src/main/java/com/android/download/DownLoadManeger.java @@ -289,4 +289,9 @@ public class DownLoadManeger { } } }; + + public boolean checkTaskQueueClear(){ + LogUtils.loge("checkTaskQueueClear() size="+TaskQueue.getInstance().getAllTask().size()); + return TaskQueue.getInstance().size()==0; + } } diff --git a/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java b/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java index 5de1e9a..7435973 100644 --- a/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java +++ b/mylibrary/src/main/java/com/android/nebulasdk/ADManager.java @@ -4,6 +4,7 @@ import android.content.Context; import android.os.Handler; import android.text.TextUtils; +import com.android.SharePreUtils; import com.android.database.AdsInfoBeanDao; import com.android.database.DaoManager; import com.android.database.lib.AdsInfoBean; @@ -14,6 +15,7 @@ import com.android.download.DownLoadManeger; import com.android.eventbaus.EventBusUtils; import com.android.eventbaus.MessageEvent; import com.android.nebulasdk.bean.ADInfo; +import com.android.nebulasdk.bean.UploadADBean; import com.android.util.FileUtil; import com.android.util.GsonUtil; import com.android.util.LogUtils; @@ -115,6 +117,7 @@ public class ADManager implements DownLoadManeger.DownloadListener { // if(adsInfoBean.getAdId()==aDInfo.getAdId()){ //是同一个任务,根据版本号更新新资源 LogUtils.loge("aDInfo.getAdVersion()|adsInfoBean.getAdVersion():"+aDInfo.getAdVersion()+"|"+adsInfoBean.getAdVersion()); if(Long.valueOf(aDInfo.getAdVersion())!=adsInfoBean.getAdVersion()){ //更新新资源 + SharePreUtils.removeKeyFromAllMaps(String.valueOf(adsInfoBean.getAdResourceId())); LogUtils.loge("广告位"+adsInfoBean.getId()+"已存在,是同一个任务同步资源,需要删除缓存文件:"+GsonUtil.GsonString(adsInfoBean));//先删除旧任务的缓存文件,再更新数据 String dbLocalFilePath=adsInfoBean.getLocalFilePath(); if(!TextUtils.isEmpty(dbLocalFilePath)) { @@ -493,5 +496,62 @@ public class ADManager implements DownLoadManeger.DownloadListener { } } + public boolean checkTaskQueueClear(){ + return DownLoadManeger.getInstance().checkTaskQueueClear(); + } + public ArrayList getUploadAds(){ + List adsInfoBeanList = DaoManager.getInstance().queryByKeyList(AdsInfoBean.class, "state", "1"); + ArrayList uploadAdList=new ArrayList<>(); + for (int i = 0; i < adsInfoBeanList.size(); i++) { + AdsInfoBean adsInfoBean = adsInfoBeanList.get(i); + String appUrl=adsInfoBean.getAppUrl(); + if(!TextUtils.isEmpty(adsInfoBean.getAppUrl())){ + int lastIndex = appUrl.lastIndexOf("/"); + String fileName=lastIndex==-1?appUrl:appUrl.substring(lastIndex+1); + String filePath = FileUtil.getBakPath(mContext,1)+"/"+fileName; + String tmpFilePath = FileUtil.getBakPath(mContext, 1) + "/" + fileName + "-tmp"; + File tmpFile=new File(tmpFilePath); + File file =new File(filePath); + if((PakageInstallUtil.checkAppInstall(mContext,adsInfoBean.getInfo()))&& !PakageInstallUtil.checkAppUpdate(mContext,adsInfoBean.getInfo(),(int) adsInfoBean.getAppVersion())){ + if(!SharePreUtils.filterByKeyValue(String.valueOf(adsInfoBean.getAdResourceId()),String.valueOf(2))){ + LogUtils.loge("===================="+i); + SharePreUtils.addRelation(String.valueOf(adsInfoBean.getAdResourceId()),String.valueOf(2)); + UploadADBean.RecordsBean recordsBean = new UploadADBean.RecordsBean(); + recordsBean.setAdResourceId(adsInfoBean.getAdResourceId()); + recordsBean.setType(2); + uploadAdList.add(recordsBean); + } + LogUtils.loge("==============resid"+adsInfoBean.getAdResourceId()); + }else if(file.exists()||(tmpFile.exists()&&tmpFile.length()==adsInfoBean.getAppSize())){ + if(!SharePreUtils.filterByKeyValue(String.valueOf(adsInfoBean.getAdResourceId()),String.valueOf(1))){ + SharePreUtils.addRelation(String.valueOf(adsInfoBean.getAdResourceId()),String.valueOf(1)); + UploadADBean.RecordsBean recordsBean = new UploadADBean.RecordsBean(); + recordsBean.setAdResourceId(adsInfoBean.getAdResourceId()); + recordsBean.setType(1); + uploadAdList.add(recordsBean); + } + } + } + if(!TextUtils.isEmpty(adsInfoBean.getLocalFilePath())){ + File file = new File(adsInfoBean.getLocalFilePath()); + File tmpFile=new File(adsInfoBean.getLocalFilePath()+"-tmp"); + if(file.exists()||(tmpFile.exists()&&tmpFile.length()==adsInfoBean.getAdSize())){ + if(!SharePreUtils.filterByKeyValue(String.valueOf(adsInfoBean.getAdResourceId()),String.valueOf(0))){ + LogUtils.loge("===================="+i); + SharePreUtils.addRelation(String.valueOf(adsInfoBean.getAdResourceId()),String.valueOf(0)); + UploadADBean.RecordsBean recordsBean = new UploadADBean.RecordsBean(); + recordsBean.setAdResourceId(adsInfoBean.getAdResourceId()); + recordsBean.setType(0); + uploadAdList.add(recordsBean); + } + LogUtils.loge("==============resid"+adsInfoBean.getAdResourceId()); + } + } + } + if(uploadAdList.size()>0){ + LogUtils.loge(GsonUtil.GsonString(uploadAdList)); + } + return uploadAdList; + } } diff --git a/mylibrary/src/main/java/com/android/nebulasdk/bean/UploadADBean.java b/mylibrary/src/main/java/com/android/nebulasdk/bean/UploadADBean.java new file mode 100644 index 0000000..557d4aa --- /dev/null +++ b/mylibrary/src/main/java/com/android/nebulasdk/bean/UploadADBean.java @@ -0,0 +1,76 @@ +package com.android.nebulasdk.bean; + +import java.util.List; + +public class UploadADBean { + + /** + * mac : 9C:00:D3:86:31:DF + * cpu : 1747248796593488611d7d3114575b9 + * records : [{"adId":494,"type":0,"ts":1763450525769},{"adId":494,"type":2,"ts":1763450525769},{"adId":494,"type":0,"ts":1763450925769},{"adId":396,"type":0,"ts":1763450525769}] + */ + + private String mac; + private String cpu; + private List records; + + public String getMac() { + return mac; + } + + public void setMac(String mac) { + this.mac = mac; + } + + public String getCpu() { + return cpu; + } + + public void setCpu(String cpu) { + this.cpu = cpu; + } + + public List getRecords() { + return records; + } + + public void setRecords(List records) { + this.records = records; + } + + public static class RecordsBean { + /** + * adId : 494 + * type : 0 + * ts : 1763450525769 + */ + + private long adResourceId; + private int type; + //private long ts; + + public long getAdResourceId() { + return adResourceId; + } + + public void setAdResourceId(long adId) { + this.adResourceId = adId; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + +// public long getTs() { +// return ts; +// } +// +// public void setTs(long ts) { +// this.ts = ts; +// } + } +} diff --git a/mylibrary/src/main/java/com/android/nebulasdk/presenter/DownLoadAdPresenter.java b/mylibrary/src/main/java/com/android/nebulasdk/presenter/DownLoadAdPresenter.java new file mode 100644 index 0000000..0223f9a --- /dev/null +++ b/mylibrary/src/main/java/com/android/nebulasdk/presenter/DownLoadAdPresenter.java @@ -0,0 +1,69 @@ +package com.android.nebulasdk.presenter; + +import android.content.Context; +import android.util.Log; + +import com.android.MXQConfig; +import com.android.api.ServerInterface; +import com.android.api.biz.Biz; +import com.android.api.biz.OnBaseListener; +import com.android.api.biz.bizimpl.BizImpl; +import com.android.api.response.EventResponse; +import com.android.nebulasdk.bean.ADInfoResponse; +import com.android.nebulasdk.bean.UploadADBean; +import com.android.nebulasdk.presenter.callback.AppnetCallback; +import com.android.util.DeviceUtil; +import com.android.util.GsonUtil; +import com.android.util.LogUtils; +import com.android.util.RKDeviceUtil; + +import java.util.ArrayList; + +public class DownLoadAdPresenter { + private Biz biz; + private AppnetCallback mAppnetCallback; + + public DownLoadAdPresenter(AppnetCallback mAppnetCallback) { + this.mAppnetCallback = mAppnetCallback; + biz = new BizImpl(ServerInterface.createHttpUrl()); + } + + public void postDownLoadAds(Context context,ArrayList recordsBeans){ + UploadADBean uploadADBean=new UploadADBean(); + String cpuId =""; + if(MXQConfig.ALLWINNER_PLATFORM.equalsIgnoreCase(MXQConfig.getManufacturer())) { + cpuId = DeviceUtil.getCpu(); + }else if(MXQConfig.RK_PLATFORM.equalsIgnoreCase(MXQConfig.getManufacturer())){ + cpuId = RKDeviceUtil.getCpu(); + } + uploadADBean.setCpu(cpuId); + uploadADBean.setMac(DeviceUtil.getEthernetMac()); + uploadADBean.setRecords(recordsBeans); + biz.postDownloadAd(uploadADBean, new OnBaseListener() { + @Override + public void onResponse(String result) { + LogUtils.loge(GsonUtil.GsonString(result)); + if(GsonUtil.isJson(result)){ + try { + EventResponse eventResponse = GsonUtil.GsonToBean(result, EventResponse.class); + if (eventResponse.getCode() == ServerInterface.SUCCESS) { + mAppnetCallback.onResult(eventResponse.getData()); + } else { + mAppnetCallback.onViewFailureString(eventResponse.getCode(), eventResponse.getMsg()); + } + } catch (Exception e) { + e.printStackTrace(); + mAppnetCallback.onExceptionFailure("json 解析异常:"+e.getMessage()); + } + }else { + mAppnetCallback.onServerFailure(0,"获取签到信息,服务器繁忙··"); + } + } + + @Override + public void onFailure(String e, int code) { + mAppnetCallback.onServerFailure(code,e); + } + }); + } +} diff --git a/mylibrary/src/main/java/com/android/util/PakageInstallUtil.java b/mylibrary/src/main/java/com/android/util/PakageInstallUtil.java index a59abc0..970613d 100644 --- a/mylibrary/src/main/java/com/android/util/PakageInstallUtil.java +++ b/mylibrary/src/main/java/com/android/util/PakageInstallUtil.java @@ -34,7 +34,7 @@ public class PakageInstallUtil { private static final String TAG= "INSTALL"; /**检测app是否安装*/ - public static boolean checkAppUpdate(Context context,String packageName,int versionCode){ + public static boolean checkAppUpdate(Context context,String packageName,int versionCode){ try { PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName,0);