Переглянути джерело

修复各种bug;添加各种测试数据

zengjiebin 7 роки тому
батько
коміт
e2f071cd5f

+ 8 - 5
app/src/main/java/com/kfzs/duanduan/ActGameDetails.java

@@ -381,7 +381,7 @@ public class ActGameDetails extends BaseCompatActivity {
 //                scanner.addListener();
 
 
-                if (TextUtils.isEmpty(respGame.getDownloadUrl())) {
+                if (respGame == null || TextUtils.isEmpty(respGame.getDownloadUrl())) {
                     mBtnDown.setEnabled(false);
                     mBtnDown.setText(getString(R.string.please_wait));
                     mBtnDown.setVisibility(View.VISIBLE);
@@ -481,25 +481,28 @@ public class ActGameDetails extends BaseCompatActivity {
     }
 
     @Download.onTaskStop void stopDownload(DownloadTask task){
-        if(task.getKey().equals(respGame.getDownloadUrl())){
+        if(isThisGame(task)){
             mBtnDown.setText("暂停");
         }
     }
     @Download.onTaskStart void startDownload(DownloadTask task){
-        if(task.getKey().equals(respGame.getDownloadUrl())){
+        if(isThisGame(task)){
             mBtnDown.setText("下载");
         }
     }
 
     @Download.onTaskComplete void completeDownload(DownloadTask task){
-        if(task.getKey().equals(respGame.getDownloadUrl())){
+        if(isThisGame(task)){
             mBtnDown.setText("安装");
         }
     }
 
     @Download.onTaskRunning void runDownload(DownloadTask task){
-        if(task.getKey().equals(respGame.getDownloadUrl())){
+        if(isThisGame(task)){
             mBtnDown.setText("下载中");
         }
     }
+    private boolean isThisGame(DownloadTask task){
+        return respGame != null && task != null && TextUtils.equals(task.getKey(), respGame.getDownloadUrl());
+    }
 }

+ 1 - 1
app/src/main/java/com/kfzs/duanduan/fragment/FgtSmallSheep.java

@@ -887,7 +887,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
         homepage_item_banner_layout.setVisibility(View.VISIBLE);
         if (mImageGlarryStr != null) {
             mImageGlarryStr.init((ArrayList<SlideshowEty>) slideshowEtyLists, ImageView.ScaleType.CENTER_CROP);
-            mImageGlarryStr.notifyAll();
+            mImageGlarryStr.notifyDataSetChanged();
             return;
         }
         mImageGlarryStr = new ImageGlarryDrawable((Activity) mContext, viewpager_banner, group_banner);

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -215,7 +215,7 @@ public interface ApiService {
     Observable<BaseMessage> bindPhone(@Body JSONObject jsonObject);
 
     /**
-     * 更换手机号
+     * 实时动态
      */
     @GET("app/user/award_detail")
     Observable<BaseMessage> awardDetail(@Query("page") int page,@Query("per_page") int per_page);

+ 7 - 0
app/src/main/java/com/sheep/gamegroup/model/api/BaseMessageConverter.java

@@ -1,5 +1,7 @@
 package com.sheep.gamegroup.model.api;
 
+import android.text.TextUtils;
+
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.kfzs.appstore.utils.string.HexUtils;
@@ -48,6 +50,11 @@ public class BaseMessageConverter implements Converter<ResponseBody, BaseMessage
      * @return
      */
     public static String decrypt(String respenseJson){
+        if(TextUtils.isEmpty(respenseJson)){
+            Map<String,String> map = new HashMap<>();
+            map.put("msg", "0-byte body");
+            return JSON.toJSONString(map);
+        }
         if(respenseJson.startsWith("{")){
             return respenseJson;
         }

+ 8 - 6
app/src/main/java/com/sheep/gamegroup/util/ImageGlarryDrawable.java

@@ -162,14 +162,11 @@ public class ImageGlarryDrawable {
             switch (msg.what){
                 case 1:
                     pagerAdapter.notifyDataSetChanged();
-                    if (mActivity.isFinishing() || mList.size() < 2) {
+                    if (mActivity.isFinishing() || ListUtil.size(mList) < 2) {
                         return;
                     }
-                    if (mViewPager.getCurrentItem() >= mList.size() - 2) {
-                        mViewPager.setCurrentItem(0, true);
-                    } else {
-                        mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1, true);
-                    }
+                    int lastIndex = (mViewPager.getCurrentItem() + 1) % ListUtil.size(mList);
+                    mViewPager.setCurrentItem(lastIndex, true);
                     handler.removeMessages(1);
                     sendEmptyMessageDelayed(1, mIntDelayTime);
                     break;
@@ -236,6 +233,7 @@ public class ImageGlarryDrawable {
         }
     };
 
+
     /**
      * ViewPager
      */
@@ -288,4 +286,8 @@ public class ImageGlarryDrawable {
             }
         }
     }
+    public void notifyDataSetChanged() {
+        if(pagerAdapter != null)
+            pagerAdapter.notifyDataSetChanged();
+    }
 }

+ 25 - 0
app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java

@@ -21,7 +21,10 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -277,4 +280,26 @@ public class SysAppUtil {
         }
         return appInfos;
     }
+
+    //运行命令行的方法
+    public static void execShell(String cmd) {
+        try {
+            Process p = Runtime.getRuntime().exec(cmd);
+            BufferedReader br = new BufferedReader(new InputStreamReader(
+                    p.getInputStream()));
+            String readLine;
+            while((readLine = br.readLine()) != null) {
+                LogUtil.println("execShell", "getInputStream", readLine);
+            }
+            BufferedReader errorBr = new BufferedReader(new InputStreamReader(
+                    p.getErrorStream()));
+            while((readLine = errorBr.readLine()) != null) {
+                LogUtil.println("execShell", "getErrorStream", readLine);
+            }
+            br.close();
+            p.destroy();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 42 - 6
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -9,6 +9,7 @@ import android.content.Intent;
 import android.net.Uri;
 import android.provider.Settings;
 import android.support.v7.app.AlertDialog;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.view.accessibility.AccessibilityManager;
@@ -20,12 +21,14 @@ import com.kfzs.duanduan.ActMain;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.CreditCard;
 import com.sheep.gamegroup.model.entity.DialogConfig;
+import com.sheep.gamegroup.model.entity.Ext;
 import com.sheep.gamegroup.model.entity.LoginEntity;
 import com.sheep.gamegroup.model.entity.LoginUser;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.view.activity.ActInstallApkList;
+import com.sheep.gamegroup.view.activity.ActWeb;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -185,7 +188,7 @@ public class TestUtil {
         if (isTest()) {
             final List<LoginUser> loginUserList = MyDbManager.getInstance().getAllLoginUser();
             if(ListUtil.isEmpty(loginUserList)){
-                G.showToast("无用户");
+//                G.showToast("无用户");
                 return;
             }
             final List<Object> list = ListUtil.emptyList();
@@ -270,7 +273,7 @@ public class TestUtil {
      * @param activity
      */
     public static void test(final Activity activity) {
-        final String[] items = {"显示已经安装应用列表","启动辅助","任务游戏列表","世界杯活动","交通银行信用卡测试", "浦发银行信用卡测试", "测试游戏模块","打卡成功提示","定向货币详情","提交身份认证时的提示", "检查标签", "友盟分享"};
+        final String[] items = {"显示已经安装应用列表","复制token","复制faq地址","复制代理地址","复制世界杯地址","任务游戏列表","世界杯活动","交通银行信用卡测试", "浦发银行信用卡测试", "测试游戏模块","打卡成功提示","定向货币详情","提交身份认证时的提示", "检查标签", "友盟分享"};
         AlertDialog dialog = new AlertDialog.Builder(activity).setTitle("请选择测试项目")
                 .setItems(items, new DialogInterface.OnClickListener() {
 
@@ -280,10 +283,17 @@ public class TestUtil {
                             case "显示已经安装应用列表":
                                 showHasInstallApkList(activity);
                                 break;
-                            case "启动辅助":
-                                Intent intent2 = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
-                                intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                                SheepApp.getInstance().startActivity(intent2);
+                            case "复制token":
+                                StringUtils.CopyText(activity, SpUtils.getOpenId(activity));
+                                break;
+                            case "复制faq地址":
+                                copyUrl("faqurl");
+                                break;
+                            case "复制代理地址":
+                                copyUrl("agenturl");
+                                break;
+                            case "复制世界杯地址":
+                                copyUrl("world_cup_url");
                                 break;
                             case "任务游戏列表":
                                 Jump2View.getInstance().goGameMakeMoney(activity);
@@ -348,6 +358,32 @@ public class TestUtil {
         dialog.show();
     }
 
+    private static void copyUrl(String name) {
+        SheepApp.getInstance().getNetComponent().getApiService().getNameUrl(name)
+                        .subscribeOn(Schedulers.io())
+                        .observeOn(AndroidSchedulers.mainThread())
+                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                            @Override
+                            public void onNext(BaseMessage baseMessage) {
+                                LogUtil.println("baseMessage onNext "+JSON.toJSONString(baseMessage));
+                                Ext ext = baseMessage.getData(Ext.class);
+                                if (ext == null){
+                                    G.showToast("data数据为null");
+                                } else if(TextUtils.isEmpty(ext.getUrl())) {
+                                    G.showToast("data格式不正确");
+                                } else {
+                                    StringUtils.CopyText(SheepApp.getInstance(), ActWeb.addUrlToken(ext.getUrl()));
+                                }
+                            }
+
+                            @Override
+                            public void onError(BaseMessage baseMessage) {
+                                LogUtil.println("baseMessage onError "+JSON.toJSONString(baseMessage));
+                                G.showToast(baseMessage);
+                            }
+                        });
+    }
+
     private static void showHasInstallApkList(Activity activity) {
         Intent intent = new Intent(activity, ActInstallApkList.class);
         activity.startActivity(intent);

+ 4 - 14
app/src/main/java/com/sheep/gamegroup/view/activity/ActInstallApkList.java

@@ -1,23 +1,14 @@
 package com.sheep.gamegroup.view.activity;
 
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.kfzs.android.view.tag.FlowLayout;
-import com.kfzs.android.view.tag.TagAdapter;
-import com.kfzs.android.view.tag.TagFlowLayout;
+import com.arialyy.aria.util.CommonUtil;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.AppInfo;
-import com.sheep.gamegroup.model.entity.DialogConfig;
-import com.sheep.gamegroup.model.entity.UserLabel;
-import com.sheep.gamegroup.model.entity.UserLabelList;
-import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.ViewHolder;
@@ -27,12 +18,10 @@ import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
-import java.io.BufferedReader;
+import java.io.File;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.Enumeration;
 import java.util.List;
-import java.util.Properties;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
@@ -97,6 +86,7 @@ public class ActInstallApkList extends BaseActivity {
 
                 app_info_iv.setImageDrawable(appInfo.getIcon());
                 ViewUtil.setText(app_info_name_tv, appInfo.getAppName());
+                app_info_name_tv.append(CommonUtil.getFileMD5(new File(appInfo.getSourceDir())));
                 ViewUtil.setText(app_info_package_name_tv, appInfo.getPackageName());
                 ViewUtil.setText(app_info_size_tv, appInfo.getApkSize());
                 ViewUtil.setText(app_info_path_tv, appInfo.getSourceDir());
@@ -119,7 +109,7 @@ public class ActInstallApkList extends BaseActivity {
     }
 
 
-    public void readApp(AppInfo appInfo) {
+    private void readApp(AppInfo appInfo) {
         String sourceDir = appInfo.getSourceDir();
         ZipFile zipfile = null;
         try {

+ 7 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/ActWeb.java

@@ -30,6 +30,7 @@ import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyDbManager;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
@@ -230,7 +231,7 @@ public class ActWeb extends BaseCompatActivity {
         });
         webViewSettings.setJavaScriptEnabled(true);
         mWebView.addJavascriptInterface(new KFZSJs(), "kfzsjs");
-        String loadUrl = addUrl(url, "authorization", SpUtils.getOpenId(this));
+        String loadUrl = addUrlToken(url);
         LogUtil.println("ActWeb loadUrl = "+loadUrl);
         mWebView.loadUrl(loadUrl);
     }
@@ -252,7 +253,11 @@ public class ActWeb extends BaseCompatActivity {
         return file;
     }
 
-    private String addUrl(String url, String key, String value) {
+    public static String addUrlToken(String url) {
+        return addUrl(url, "authorization", SpUtils.getOpenId(SheepApp.getInstance()));
+    }
+
+    public static String addUrl(String url, String key, String value) {
         return url + ((url.contains("?") || url.contains("#") && url.contains("=")) ? "&" : "?") + key + "=" + value;
     }
 

+ 18 - 8
app/src/main/java/com/sheep/jiuyan/samllsheep/service/MonitorAppService.java

@@ -1,7 +1,6 @@
 package com.sheep.jiuyan.samllsheep.service;
 
 import android.accessibilityservice.AccessibilityService;
-import android.accessibilityservice.AccessibilityServiceInfo;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
@@ -10,19 +9,17 @@ import android.os.Build;
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityManager;
-import android.view.accessibility.AccessibilityNodeInfo;
 
 import com.sheep.gamegroup.model.entity.AppRecord;
-import com.sheep.gamegroup.model.entity.TaskListen;
 import com.sheep.gamegroup.model.util.AutoTaskListUtil;
-import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyDbManager;
+import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Created by realicing on 2018/5/4.
@@ -42,13 +39,17 @@ public class MonitorAppService extends AccessibilityService {
 //            kfDisableSelf();
             return;
         }
+        if(packageName == null){
+            return;
+        }
         switch (eventType) {
             case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
 
                 long curTime = System.currentTimeMillis();
                 AppRecord appRecord = new AppRecord();
                 appRecord.setType_id(eventType);
-                appRecord.setClassName(className.toString());
+                if(className != null)
+                    appRecord.setClassName(className.toString());
                 appRecord.setPackageName(packageName.toString());
                 if(ListUtil.getIndex(textList, 0) != null)
                     appRecord.setTag(textList.get(0).toString());
@@ -125,13 +126,22 @@ public class MonitorAppService extends AccessibilityService {
             }
         }
     }
+    public static void closeService() {
+        //这里是包名+辅助功能类名
+        String cmd1 = String.format(Locale.CHINA, "settings put secure %s %s", Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, getId2());
+
+        String cmd2 = String.format(Locale.CHINA, "settings put secure %s 1", Settings.Secure.ACCESSIBILITY_ENABLED);
+        SysAppUtil.execShell(cmd1);
+        SysAppUtil.execShell(cmd2);
+    }
+
 
     public static void closeAccessibility() {
         String service = SheepApp.getInstance().getPackageName() + "/" + MonitorAppService.class.getCanonicalName();
         // 这个key保存已经辅助服务的组件名列表,以“:”隔开,要关闭自己的组件,只要从这个key的值中移除该字符串
-        Settings.Secure.putString(SheepApp.getInstance().getApplicationContext().getContentResolver(),Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, service);//com.sheep.jiuyan.samllsheep/com.sheep.jiuyan.samllsheep.service.MonitorAppService
+        Settings.Secure.putString(SheepApp.getInstance().getApplicationContext().getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, service);//com.sheep.jiuyan.samllsheep/com.sheep.jiuyan.samllsheep.service.MonitorAppService
         // 这个key控制辅助服务的开关
-        Settings.Secure.putInt(SheepApp.getInstance().getApplicationContext().getContentResolver(),Settings.Secure.ACCESSIBILITY_ENABLED, 0);
+        Settings.Secure.putInt(SheepApp.getInstance().getApplicationContext().getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, 0);
     }
     private static String getId(){
         String pacakgeName = SheepApp.getInstance().getPackageName();