zengjiebin лет назад: 7
Родитель
Сommit
cf7bdb3768

+ 2 - 0
app/src/main/java/com/kfzs/duanduan/KFZSApp.java

@@ -16,6 +16,7 @@ import com.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.util.ActivityManager;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.service.DownloadService;
+import com.sheep.jiuyan.samllsheep.service.FloatService;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 
@@ -100,6 +101,7 @@ public class KFZSApp extends MultiDexApplication {
         try {
             Aria.download(this).stopAllTask();
             stopService(new Intent(this, DownloadService.class));
+            stopService(new Intent(this, FloatService.class));
             ActivityManager.getInstance().finishAllActivity();
         } catch (Exception e) {
             Log.e(TAG, "quit error" + e.getMessage() + "\n" + e.getCause());

+ 3 - 3
app/src/main/java/com/kfzs/duanduan/fragment/FgtPersonalCenter.java

@@ -160,11 +160,11 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                             G.showToast(baseMessage);
                             return;
                         }
-                        DialogConfig dialogConfig = new DialogConfig().setTitle("小绵羊V"+newVersionInfo.getVersion_number());
                         String appVersonName = ApkUtils.getCurrentPkgVersionName(SheepApp.getInstance());
                         if(TextUtils.equals(newVersionInfo.getVersion_number(), appVersonName)){//已经是最新版本
-                            dialogConfig.setMsg("当前版本为最新版本,无需更新");
+                            G.showToast("当前版本为最新版本,无需更新");
                         } else {//有新版本
+                            DialogConfig dialogConfig = new DialogConfig().setTitle("小绵羊V"+newVersionInfo.getVersion_number());
                             dialogConfig.setMsg("当前版本小绵羊V"+appVersonName).setBtnRightText("下次更新")
                                     .setBtnLeftText("立即更新").setBtnLeftOnClickListener(new View.OnClickListener() {
                                 @Override
@@ -172,8 +172,8 @@ public class FgtPersonalCenter extends BaseCompatFragment {
                                     Beta.checkUpgrade();//检查版本号
                                 }
                             });
+                            ViewUtil.showMsgDialog(getActivity(), dialogConfig);
                         }
-                        ViewUtil.showMsgDialog(getActivity(), dialogConfig);
                     }
 
                     @Override

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

@@ -318,9 +318,11 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
             @Override
             public void call(Integer result) {
                 if(result != 0){//无网络
-                    check_net_ll.setVisibility(View.VISIBLE);
+                    if(check_net_ll != null)
+                        check_net_ll.setVisibility(View.VISIBLE);
                 } else {
-                    check_net_ll.setVisibility(View.GONE);
+                    if(check_net_ll != null)
+                        check_net_ll.setVisibility(View.GONE);
                 }
             }
         });

+ 8 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/TaskEty.java

@@ -247,6 +247,14 @@ public class TaskEty implements Serializable{
     }
 
 
+    /**
+     * 是否是应用自动审核完成的任务
+     * @return
+     */
+    public boolean isAppAutoCommitTask(){
+        return inspect_type == 3;
+    }
+
     public boolean needDownloadApp() {
         return task_type != 2 && task_type != 4;//// 1时间试玩任务 2 信用卡任务 3应用下载 4h5业务 1001畅思
     }

+ 151 - 0
app/src/main/java/com/sheep/gamegroup/model/util/AutoTaskListUtil.java

@@ -0,0 +1,151 @@
+package com.sheep.gamegroup.model.util;
+
+import android.support.v7.app.AlertDialog;
+import android.text.TextUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.sheep.gamegroup.model.entity.AppRecord;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
+import com.sheep.gamegroup.model.entity.TaskEty;
+import com.sheep.gamegroup.model.entity.TaskReleaseEty;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
+
+/**
+ * Created by realicing on 2018/6/15.
+ * realicing@sina.com
+ */
+public class AutoTaskListUtil {
+
+    private static AutoTaskListUtil autoTaskListUtil = new AutoTaskListUtil();
+
+    public static AutoTaskListUtil getInstance(){
+        if (autoTaskListUtil == null){
+            autoTaskListUtil = new AutoTaskListUtil();
+        }
+        return autoTaskListUtil;
+    }
+    private Map<String, TaskEty> map = new HashMap<>();
+    public boolean addTask(TaskEty task) {
+        if(map == null)
+            map = new HashMap<>();
+        if(task != null && !TextUtils.isEmpty(task.getPackage_names())){
+            if(task.isAppAutoCommitTask()) {
+                map.put(task.getPackage_names(), task);
+                return true;
+            }
+        }
+        return false;
+    }
+    public boolean addTask(TaskReleaseEty taskReleaseEty) {
+        if(taskReleaseEty != null && taskReleaseEty.getTask() != null && taskReleaseEty.getTask().isAppAutoCommitTask()) {
+            taskReleaseEty.getTask().setRelease_task_id(taskReleaseEty.getId());
+            return addTask(taskReleaseEty.getTask());
+        }
+        return false;
+    }
+
+    public boolean isEmpty() {
+        return map == null || map.isEmpty();
+    }
+    private boolean loadding = false;
+    public void initTaskList() {
+        if(loadding){
+            return;
+        }
+        loadding = true;
+        //下面的功能主要是初始化 正在运行的应用自动审核任务列表
+        AutoTaskListUtil.getInstance().clear();
+        SheepApp.getInstance().getNetComponent().getApiService()
+                .releaseTask(1,100,
+                        SheepApp.getInstance().getConnectAddress().getPlatForm(),1,
+                        0, 0,
+                        "-1", 3)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.mContext) {
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        LogUtil.println("baseMessage onError "+ JSON.toJSONString(baseMessage));
+                        loadding = false;
+                    }
+
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        LogUtil.println("baseMessage onError "+JSON.toJSONString(baseMessage));
+
+                        List<TaskAcceptedEty> list = baseMessage.getDatas(TaskAcceptedEty.class);
+                        if(list != null) {
+                            for (TaskAcceptedEty item : list) {
+                                if (item != null)
+                                    AutoTaskListUtil.getInstance().addTask(item.getRelease_task());
+                            }
+                        }
+                        loadding = false;
+                    }
+                });
+    }
+    public void clear() {
+        if(map != null)
+            map.clear();
+    }
+
+    public boolean hasTask(String packageName) {
+        return !TextUtils.isEmpty(packageName) && map != null && map.containsKey(packageName);
+    }
+
+    public boolean hasTask(AppRecord appRecord) {
+        return appRecord != null && hasTask(appRecord.getPackageName());
+    }
+
+
+
+
+    private AppRecord lastAppRecord;
+    private long lastTime;
+    public AppRecord getLastAppRecord() {
+        return lastAppRecord;
+    }
+
+    public long getLastTime() {
+        return lastTime;
+    }
+
+    public void setLastAppRecord(AppRecord lastAppRecord) {
+        this.lastAppRecord = lastAppRecord;
+    }
+
+    public void setLastTime(long lastTime) {
+        this.lastTime = lastTime;
+    }
+
+
+
+
+
+    private AlertDialog tipToOpernAccessibilityDialog;
+    public void clearAlertDialog(){
+        tipToOpernAccessibilityDialog = null;
+    }
+
+    public AlertDialog getTipToOpernAccessibilityDialog() {
+        return tipToOpernAccessibilityDialog;
+    }
+
+    public void setTipToOpernAccessibilityDialog(AlertDialog tipToOpernAccessibilityDialog) {
+        this.tipToOpernAccessibilityDialog = tipToOpernAccessibilityDialog;
+    }
+
+    public boolean isShowing() {
+        return tipToOpernAccessibilityDialog != null && tipToOpernAccessibilityDialog.isShowing();
+    }
+
+}

+ 8 - 14
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -36,11 +36,13 @@ import com.sheep.gamegroup.model.entity.TaskListen;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.entity.WebviewEntity;
 import com.sheep.gamegroup.model.entity.WithdrawalEty;
+import com.sheep.gamegroup.model.util.AutoTaskListUtil;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.presenter.TryMakeMoneyPresenter;
 import com.sheep.gamegroup.view.activity.RechargeAct;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.service.MonitorAppService;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
@@ -473,22 +475,14 @@ public class CommonUtil {
     }
 
     /**
-     * 设置时长
-     SheepApp.getInstance().setTaskEty(taskEty);
+     * 添加应用自动审核任务
      */
     public void setTAskEnty(TaskEty tAskEnty){
-        if(tAskEnty != null) {
-            try {
-                if (tAskEnty.getInspect_type() == 3) {
-                    MyDbManager.getInstance().saveOrUpdate(new TaskListen(tAskEnty.getId(), tAskEnty.getPackage_names(), tAskEnty.getRelease_task_id()));
-                    return;
-                }
-            } catch (Exception ignore) {
-            }
+        if(AutoTaskListUtil.getInstance().addTask(tAskEnty)){
+            Jump2View.getInstance().startAccessibility();
+        } else {
+            AutoTaskListUtil.getInstance().initTaskList();
         }
-        MyDbManager.getInstance().removeTask();
-        SheepApp.getInstance().setTaskEty(null);
-
     }
 
     /**
@@ -502,7 +496,7 @@ public class CommonUtil {
                 CommonUtil.getInstance()
                         .setHashMap(1,
                                 100,
-                                1,
+                                SheepApp.getInstance().getConnectAddress().getPlatForm(),
                                 1,
                                 0,
                                 0,

+ 35 - 32
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -1,17 +1,15 @@
 package com.sheep.gamegroup.util;
 
 import android.app.Activity;
-import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.view.View;
-import android.view.WindowManager;
 
 import com.alibaba.fastjson.JSON;
 import com.kfzs.duanduan.ActMain;
@@ -24,6 +22,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.CheckUserLabel;
 import com.sheep.gamegroup.model.entity.Container;
 import com.sheep.gamegroup.model.entity.CreditCard;
+import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.DialogEntity;
 import com.sheep.gamegroup.model.entity.NewbieTask;
 import com.sheep.gamegroup.model.entity.NewbieTaskRecord;
@@ -32,6 +31,7 @@ import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.entity.VersionInfo;
 import com.sheep.gamegroup.model.entity.WebviewEntity;
+import com.sheep.gamegroup.model.util.AutoTaskListUtil;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.view.activity.AccountAndSecurityAct;
 import com.sheep.gamegroup.view.activity.ActCreditCardTaskList;
@@ -91,7 +91,6 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.service.FloatService;
 import com.sheep.jiuyan.samllsheep.service.MonitorAppService;
 import com.sheep.jiuyan.samllsheep.utils.G;
-import com.sheep.jiuyan.samllsheep.utils.OpenService;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
 import org.xutils.ex.DbException;
@@ -860,41 +859,45 @@ public class Jump2View {
         intent.putExtra("isShow", isShow);
         context.startService(intent);
     }
-    private AlertDialog tipToOpernAccessibilityDialog;
-    public void clearAlertDialog(){
-        tipToOpernAccessibilityDialog = null;
-    }
+
     /**
-     * 启动小绵羊辅助
-     * @param context
+     * 尝试弹出提示框,以启动小绵羊辅助
      */
-    public boolean startAccessibility(final Context context) {
-        if(MonitorAppService.isAccessibilitySettingsOn(SheepApp.getInstance()) && new OpenService().isAccessibilitySettingsOn(context))
-            return true;
-        if(tipToOpernAccessibilityDialog != null){
-            return false;
+    public void startAccessibility() {
+        if(MonitorAppService.isAccessibilitySettingsOn(SheepApp.getInstance()))// 如果已经启动了辅助功能,就直接返回
+            return;
+        if(AutoTaskListUtil.getInstance().isShowing()){//对话框仍在显示,就不显示 打开辅助功能的对话框
+            return;
+        }
+        LogUtil.println("startAccessibility", "start");
+        AutoTaskListUtil.getInstance().clearAlertDialog();
+        if(!AutoTaskListUtil.getInstance().isEmpty()){
+            LogUtil.println("startAccessibility", "notEmpty");
+            showAccessibilityDialog();
+        } else {
+            LogUtil.println("startAccessibility","else");
         }
-        AlertDialog.Builder  builder = new AlertDialog.Builder(context)
-                .setTitle("温馨提示!")
-                .setMessage("亲!要赚钱需要手动开启小绵羊辅助功能哟!")
-                .setPositiveButton("去开启", new DialogInterface.OnClickListener() {
+        LogUtil.println("startAccessibility","end");
+    }
+
+    public void showAccessibilityDialog() {
+        AlertDialog tipToOpernAccessibilityDialog = ViewUtil.showMsgDialog(SheepApp.getInstance(), new DialogConfig().setTitle("温馨提示!")
+                .setMsg("亲!系统检测到您需要手动开启小绵羊辅助功能才能继续任务!")
+                .setBtnLeftText("去开启").setBtnLeftOnClickListener(new View.OnClickListener() {
                     @Override
-                    public void onClick(DialogInterface dialog, int which) {
+                    public void onClick(View view) {
                         Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
                         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                        context.startActivity(intent);
-
-//                        Intent intent2 = new Intent(context, MonitorAppService.class);
-//                        context.startService(intent2);
+                        SheepApp.getInstance().startActivity(intent);
                     }
-                });
-        builder.setCancelable(false);
-        tipToOpernAccessibilityDialog = builder.create();
-        if(tipToOpernAccessibilityDialog.getWindow() != null) {
-            tipToOpernAccessibilityDialog.getWindow().setType(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? WindowManager.LayoutParams.TYPE_PHONE : WindowManager.LayoutParams.TYPE_TOAST);
-            tipToOpernAccessibilityDialog.show();
-        }
-        return false;
+                }));
+        tipToOpernAccessibilityDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+            @Override
+            public void onDismiss(DialogInterface dialogInterface) {
+                AutoTaskListUtil.getInstance().clearAlertDialog();
+            }
+        });
+        AutoTaskListUtil.getInstance().setTipToOpernAccessibilityDialog(tipToOpernAccessibilityDialog);
     }
 
     /**

+ 3 - 23
app/src/main/java/com/sheep/gamegroup/util/MyDbManager.java

@@ -8,6 +8,7 @@ import com.sheep.gamegroup.model.entity.LoginUser;
 import com.sheep.gamegroup.model.entity.NewbieTaskRecord;
 import com.sheep.gamegroup.model.entity.TaskListen;
 import com.sheep.gamegroup.model.entity.UserEntity;
+import com.sheep.gamegroup.model.util.AutoTaskListUtil;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
@@ -123,21 +124,6 @@ public class MyDbManager {
         }
         return users;
     }
-    /**
-     * 查找指定表
-     */
-    public TaskListen dbFindTask() {
-        TaskListen taskEty = null;
-        try{
-            List<TaskListen> taskEties = db.findAll(TaskListen.class);
-            if(taskEties != null && taskEties.size()>0){
-                taskEty = taskEties.get(0);
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return taskEty;
-    }
 
 
     /**
@@ -187,9 +173,11 @@ public class MyDbManager {
         try{
     //type_id 为32时对应 AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
 //            Cursor cursor = db.execQuery(String.format(Locale.CHINA,"select sum(time) as all_time from app_record where package_name = '%s' and type_id = 32" , packageName));
+//            Cursor cursor = db.execQuery(String.format(Locale.CHINA,"select sum(time) from app_record where package_name = '%s' and time > %d" , packageName, AutoTaskListUtil.getInstance().getFindTime()));
             Cursor cursor = db.execQuery(String.format(Locale.CHINA,"select sum(time) from app_record where package_name = '%s'" , packageName));
             cursor.moveToFirst();
             long time = cursor.getLong(0);
+            LogUtil.println( "MyDbManager","getAppRunTime","runTime", "=", time);
             cursor.close();
             return time;
         }catch (Exception e){
@@ -206,14 +194,6 @@ public class MyDbManager {
 //        return time;
 //    }
 
-    public void removeTask(){
-        try{
-            db.dropTable(TaskListen.class);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-    }
-
     public List<LoginUser> getAllLoginUser() {
         try{
             return db.selector(LoginUser.class)

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

@@ -2,6 +2,7 @@ package com.sheep.gamegroup.util;
 
 import android.app.Activity;
 import android.app.DownloadManager;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
@@ -9,10 +10,12 @@ import android.net.Uri;
 import android.support.v7.app.AlertDialog;
 import android.util.Log;
 import android.view.View;
+import android.view.accessibility.AccessibilityManager;
 import android.widget.ArrayAdapter;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
+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;
@@ -32,6 +35,8 @@ import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.umeng.socialize.media.UMImage;
 
 import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Locale;
 
@@ -189,15 +194,17 @@ public class TestUtil {
                 @Override
                 public void onClick(View view) {
                     AlertDialog dialog = new AlertDialog.Builder(activity).setTitle("选择要登录的账号")
-                            .setAdapter(new ArrayAdapter<>(activity, android.R.layout.simple_list_item_single_choice, list),  new DialogInterface.OnClickListener() {
+                            .setAdapter(new ArrayAdapter<>(activity, android.R.layout.simple_list_item_1, list),  new DialogInterface.OnClickListener() {
 
                                 @Override
                                 public void onClick(DialogInterface dialogInterface, int which) {
                                     Object object = ListUtil.getIndex(list, which);
                                     if(object instanceof LoginUser){
-                                        SpUtils.login(activity, ((LoginUser) object).getToken());
-                                        Jump2View.getInstance().goHomePageView(activity, null);
-                                        activity.finish();
+                                        SpUtils.login(SheepApp.getInstance(), ((LoginUser) object).getToken());
+                                        ActivityManager.getInstance().finishAllActivity();
+                                        Intent intent = new Intent(SheepApp.getInstance(), ActMain.class);
+                                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                                        SheepApp.getInstance().startActivity(intent);
                                     }
                                 }
                             }).create();
@@ -211,7 +218,7 @@ public class TestUtil {
         if (isTest()) {
             if (loginEty != null && loginEty.getUser() != null) {
                 LoginUser loginUser = new LoginUser();
-                loginUser.setId(loginEty.getUser().getId());
+                loginUser.setId(loginEty.getUser().getOpen_id());
                 loginUser.setToken(loginEty.getToken());
                 loginUser.setServiceName(SheepApp.getInstance().getConnectAddress().getName());
                 loginUser.setNickname(loginEty.getUser().getNickname());
@@ -261,13 +268,29 @@ public class TestUtil {
      */
     public static void test(final Activity activity) {
         G.showToast("这个不是bug,正式版本不会出现该对话框!");
-        final String[] items = {"任务游戏列表","世界杯活动","交通银行信用卡测试", "浦发银行信用卡测试", "测试游戏模块","打卡成功提示","定向货币详情","提交身份认证时的提示", "检查标签", "友盟分享"};
+        final String[] items = {"测试跳转系统设置","任务游戏列表","世界杯活动","交通银行信用卡测试", "浦发银行信用卡测试", "测试游戏模块","打卡成功提示","定向货币详情","提交身份认证时的提示", "检查标签", "友盟分享"};
         AlertDialog dialog = new AlertDialog.Builder(activity).setTitle("请选择要测试的信用卡")
                 .setItems(items, new DialogInterface.OnClickListener() {
 
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         switch (items[which]) {
+                            case "测试跳转系统设置":
+                                try {
+                                    Class<?> classForName = Class.forName("com.android.settingslib.accessibility.AccessibilityUtils");
+                                    Method method = classForName.getMethod("getEnabledServicesFromSettings", Context.class);
+                                    method.invoke(null, SheepApp.getInstance());
+                                } catch (ClassNotFoundException e) {
+                                    e.printStackTrace();
+                                } catch (NoSuchMethodException e) {
+                                    e.printStackTrace();
+                                } catch (IllegalAccessException e) {
+                                    e.printStackTrace();
+                                } catch (InvocationTargetException e) {
+                                    e.printStackTrace();
+                                }
+                                AccessibilityManager am = (AccessibilityManager) SheepApp.getInstance().getSystemService(Context.ACCESSIBILITY_SERVICE);
+                                break;
                             case "任务游戏列表":
                                 Jump2View.getInstance().goGameMakeMoney(activity);
                                 break;

+ 29 - 22
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -1,12 +1,15 @@
 package com.sheep.gamegroup.util;
 
 import android.app.Activity;
+import android.app.Dialog;
 import android.app.ProgressDialog;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.media.MediaPlayer;
 import android.net.Uri;
+import android.os.Build;
 import android.provider.MediaStore;
 import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.AlertDialog;
@@ -277,18 +280,18 @@ public class ViewUtil {
     }
 
 
-    public static void showMsgDialog(final Activity activity, String msg) {
-        showMsgDialog(activity, new DialogConfig().setMsg(msg).setBtnLeftText("知道了"));
+    public static AlertDialog showMsgDialog(final Context context, String msg) {
+        return showMsgDialog(context, new DialogConfig().setMsg(msg).setBtnLeftText("知道了"));
     }
 
-    public static void showMsgDialog(final Activity activity, String msg, String title) {
-        showMsgDialog(activity, new DialogConfig().setMsg(msg).setTitle(title).setBtnLeftText("知道了"));
+    public static AlertDialog showMsgDialog(final Context context, String msg, String title) {
+        return showMsgDialog(context, new DialogConfig().setMsg(msg).setTitle(title).setBtnLeftText("知道了"));
     }
-    public static void showMsgDialog(final Activity activity, String msg, String title,boolean isFinish) {
-        showMsgDialog(activity, new DialogConfig().setMsg(msg).setTitle(title).setFinish(isFinish).setBtnLeftText("知道了"));
+    public static AlertDialog showMsgDialog(final Context context, String msg, String title,boolean isFinish) {
+        return showMsgDialog(context, new DialogConfig().setMsg(msg).setTitle(title).setFinish(isFinish).setBtnLeftText("知道了"));
     }
 
-    public static void showMsgDialog(final Activity activity, final DialogConfig dialogConfig) {
+    public static AlertDialog showMsgDialog(final Context context, final DialogConfig dialogConfig) {
         String title = dialogConfig.getTitle();
         String msg = dialogConfig.getMsg();
         String msgMore = dialogConfig.getMsgMore();
@@ -297,14 +300,12 @@ public class ViewUtil {
         final View.OnClickListener btnLeftOnClickListener = dialogConfig.getBtnLeftOnClickListener();
         String btnRightText = dialogConfig.getBtnRightText();
         final View.OnClickListener btnRightOnClickListener = dialogConfig.getBtnRightOnClickListener();
-        View dialog_parent = View.inflate(activity, R.layout.dialog_parent, null);
-        final AlertDialog dialog = new AlertDialog.Builder(activity, R.style.MyDialogActivityTheme)
-                .setView(dialog_parent)
-                .create();
+        View dialog_parent = View.inflate(context, R.layout.dialog_parent, null);
+        final AlertDialog dialog = new AlertDialog.Builder(context, context instanceof Activity ? R.style.MyDialogActivityTheme : R.style.AppTheme_Dialog_Alert).setView(dialog_parent).create();
         TextView dialog_title = dialog_parent.findViewById(R.id.dialog_title);
         View dialog_close = dialog_parent.findViewById(R.id.dialog_close);
         LinearLayout dialog_center_ll = dialog_parent.findViewById(R.id.dialog_center_ll);
-        View view = LayoutInflater.from(activity).inflate(R.layout.x_msg_dialog, dialog_center_ll, true);
+        View view = LayoutInflater.from(context).inflate(R.layout.x_msg_dialog, dialog_center_ll, true);
         if (!TextUtils.isEmpty(title))
             dialog_title.setText(title);
 
@@ -365,23 +366,29 @@ public class ViewUtil {
                 dialog.dismiss();
             }
         });
-        dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
-            @Override
-            public void onDismiss(DialogInterface dialog) {
-                try{
-                    if(dialogConfig.isFinish() && activity != null && activity instanceof Activity){
-                        activity.finish();
+        if(dialogConfig.isFinish()) {
+            dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
+                @Override
+                public void onDismiss(DialogInterface dialog) {
+                    try {
+                        if (context instanceof Activity) {
+                            ((Activity) context).finish();
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
                     }
-                }catch (Exception e){
-                    e.printStackTrace();
                 }
-            }
-        });
+            });
+        }
+        if(!(context instanceof Activity) && dialog.getWindow() != null) {
+            dialog.getWindow().setType(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? WindowManager.LayoutParams.TYPE_PHONE : WindowManager.LayoutParams.TYPE_TOAST);
+        }
         try {
             dialog.show();
         } catch (Exception e) {
             e.printStackTrace();
         }
+        return dialog;
     }
 
     public static final int REQUEST_CODE_TASK_LIST = 110;

+ 6 - 6
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -48,6 +48,7 @@ import com.sheep.gamegroup.model.entity.TaskChild;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.TaskListen;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
+import com.sheep.gamegroup.model.util.AutoTaskListUtil;
 import com.sheep.gamegroup.model.util.EntityUtils;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.presenter.TaskDetailContract;
@@ -584,8 +585,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
      * 尝试提交应用自动审核任务
      */
     private void checkAndCommitTask() {
-        TaskListen taskEty = SheepApp.getInstance().getTaskEty();
-        if(taskEty != null) {
+        if(taskEty != null && taskReleaseEty != null) {
             if(TextUtils.isEmpty(taskEty.getPackage_names())){
                 G.showToast(R.string.error_package_link);
                 return;
@@ -595,10 +595,10 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             object.put("gps", gps);
             long runTime = MyDbManager.getInstance().getAppRunTime(taskEty.getPackage_names());
 
-            AppRecord lastAppRecord = SheepApp.getInstance().getLastAppRecord();
+            AppRecord lastAppRecord = AutoTaskListUtil.getInstance().getLastAppRecord();
             if(lastAppRecord != null && TextUtils.equals(taskEty.getPackage_names(), lastAppRecord.getPackageName())){
-                runTime +=  System.currentTimeMillis() - SheepApp.getInstance().getLastTime();
-                SheepApp.getInstance().setLastTime(System.currentTimeMillis());
+                runTime +=  System.currentTimeMillis() - AutoTaskListUtil.getInstance().getLastTime();
+                AutoTaskListUtil.getInstance().setLastTime(System.currentTimeMillis());
             }
             if(runTime <= 0){//时间小于等于0则不提交
                 G.showToast("该任务时长未达到,请继续去体验应用哦!");
@@ -608,7 +608,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
             MyDbManager.getInstance().removeAppRecord();
             LogUtil.println("MonitorAppService runTime = "+runTime);
             object.put("task_time", runTime/1000);
-            object.put("release_task_id", taskEty.getRelease_task_id());
+            object.put("release_task_id", taskReleaseEty.getId());
             SheepApp.getInstance().getNetComponent().getApiService().commitAutoTask(object)
                     .subscribeOn(Schedulers.io())
                     .observeOn(AndroidSchedulers.mainThread())

+ 2 - 27
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -12,6 +12,7 @@ import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.modules.NetModule;
 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.ActivityManager;
 import com.sheep.gamegroup.util.AppUtil;
 import com.sheep.gamegroup.util.ConnectAddress;
@@ -34,8 +35,6 @@ public class SheepApp extends BaseApplication {
 
 
     private NetComponent netComponent;
-    private AppRecord lastAppRecord;
-    private long lastTime;
     private boolean isShowQB;
     private String packgeName;
 
@@ -55,31 +54,6 @@ public class SheepApp extends BaseApplication {
         isShowQB = showQB;
     }
 
-    public AppRecord getLastAppRecord() {
-        return lastAppRecord;
-    }
-
-    public long getLastTime() {
-        return lastTime;
-    }
-
-    public void setLastAppRecord(AppRecord lastAppRecord) {
-        this.lastAppRecord = lastAppRecord;
-    }
-
-    public void setLastTime(long lastTime) {
-        this.lastTime = lastTime;
-    }
-    private TaskListen taskEty;
-
-    public TaskListen getTaskEty() {
-        return MyDbManager.getInstance().dbFindTask();
-    }
-
-    public void setTaskEty(TaskListen taskEty) {
-        this.taskEty = taskEty;
-    }
-
     public static SheepApp get(Context context) {
 
 
@@ -162,6 +136,7 @@ public class SheepApp extends BaseApplication {
                 if(!notStop) {
                     notStop = true;
                     LogUtil.println("SheepApp SHEEP_RESUME");
+                    AutoTaskListUtil.getInstance().initTaskList();
                     UMConfigUtils.Event.SHEEP_RESUME.onEvent();
                 }
                 Jump2View.getInstance().startFloat(activity, false);

+ 10 - 11
app/src/main/java/com/sheep/jiuyan/samllsheep/service/FloatService.java

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.graphics.PixelFormat;
 import android.os.Build;
 import android.os.IBinder;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -16,9 +17,11 @@ import android.widget.LinearLayout;
 
 import com.sheep.gamegroup.model.entity.TaskListen;
 import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.DeviceInfo;
+import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
 import java.util.concurrent.TimeUnit;
 
@@ -68,14 +71,17 @@ public class FloatService extends Service {
     private Subscription subscription;
     private void startTimer() {
         if(subscription == null)
-            subscription = Observable.interval(1000, TimeUnit.MILLISECONDS)
+            subscription = Observable.interval(60_000L, TimeUnit.MILLISECONDS)
                     .subscribeOn(Schedulers.io())
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribe(new Action1<Long>() {
                         @Override
-                        public void call(Long aLong) {
+                        public void call(Long count) {
+                            LogUtil.println("FloatService","count","=",count);
                             try {
-                                checkTask();
+                                if(!TextUtils.isEmpty(SpUtils.getOpenId(SheepApp.getInstance()))) {//登录情况下才检查是否有应用自动审核任务,是否开启辅助功能
+                                    Jump2View.getInstance().startAccessibility();
+                                }
                             } catch (Exception e) {
                                 e.printStackTrace();
                             }
@@ -84,18 +90,11 @@ public class FloatService extends Service {
                     }, new Action1<Throwable>() {
                         @Override
                         public void call(Throwable throwable) {
-                            throwable.printStackTrace();
+                            LogUtil.println("FloatService","Throwable","=",throwable.getMessage());
                         }
                     });
     }
 
-    private void checkTask() {
-        TaskListen taskEty = SheepApp.getInstance().getTaskEty();
-        if(taskEty != null) {
-            Jump2View.getInstance().startAccessibility(getApplication());
-        }
-    }
-
 
 
     private void createToucher() {

+ 68 - 15
app/src/main/java/com/sheep/jiuyan/samllsheep/service/MonitorAppService.java

@@ -1,14 +1,21 @@
 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;
+import android.net.Uri;
+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;
@@ -24,19 +31,19 @@ import java.util.List;
 public class MonitorAppService extends AccessibilityService {
     @Override
     public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
-        TaskListen taskEty = SheepApp.getInstance().getTaskEty();
-        if(taskEty == null) {//当前没有时长任务时不操作数据库
-            return;
-        }
         // 此方法是在主线程中回调过来的,所以消息是阻塞执行的
         // 获取包名
         CharSequence packageName = accessibilityEvent.getPackageName();
         CharSequence className = accessibilityEvent.getClassName();
         int eventType = accessibilityEvent.getEventType();
         List<CharSequence> textList = accessibilityEvent.getText();
+        LogUtil.println("MonitorAppService", "onAccessibilityEvent", eventType,"pkgName:", packageName, "className:", className, "source:", ListUtil.getIndex(textList, 0));
+        if(AutoTaskListUtil.getInstance().isEmpty()) {//当前没有应用自动审核任务时不操作数据库
+//            kfDisableSelf();
+            return;
+        }
         switch (eventType) {
             case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
-                LogUtil.println("MonitorAppService TYPE_WINDOW_STATE_CHANGED: " + " pkgName: " + packageName + " className: " + className + " source: " + ListUtil.getIndex(textList, 0));
 
                 long curTime = System.currentTimeMillis();
                 AppRecord appRecord = new AppRecord();
@@ -46,15 +53,17 @@ public class MonitorAppService extends AccessibilityService {
                 if(ListUtil.getIndex(textList, 0) != null)
                     appRecord.setTag(textList.get(0).toString());
 
-                AppRecord lastAppRecord = SheepApp.getInstance().getLastAppRecord();
-                long lastTime = SheepApp.getInstance().getLastTime();
+                AppRecord lastAppRecord = AutoTaskListUtil.getInstance().getLastAppRecord();
+                long lastTime = AutoTaskListUtil.getInstance().getLastTime();
                 if(lastAppRecord != null && lastTime != 0)
                     lastAppRecord.setTime(lastAppRecord.getTime() + curTime - lastTime);
-                if(lastAppRecord != null && TextUtils.equals(taskEty.getPackage_names(), lastAppRecord.getPackageName()))
+                if(lastAppRecord != null && AutoTaskListUtil.getInstance().hasTask(lastAppRecord)) {
                     MyDbManager.getInstance().saveOrUpdate(lastAppRecord);
+                    LogUtil.println("MonitorAppService", "MyDbManager", "saveOrUpdate", "lastAppRecord", lastAppRecord.getPackageName(), lastAppRecord.getTime());
+                }
 
-                SheepApp.getInstance().setLastTime(curTime);
-                SheepApp.getInstance().setLastAppRecord(appRecord);
+                AutoTaskListUtil.getInstance().setLastTime(curTime);
+                AutoTaskListUtil.getInstance().setLastAppRecord(appRecord);
                 break;
 //            case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
 //                System.out.println("MonitorAppService TYPE_WINDOW_CONTENT_CHANGED: " + " packageName: " + packageName + " source: " + ListUtil.getIndex(textList, 0));
@@ -65,25 +74,58 @@ public class MonitorAppService extends AccessibilityService {
         }
     }
 
+    private void kfDisableSelf() {
+        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            disableSelf();
+        } else {
+            stopSelf();
+        }
+    }
+
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
-        Jump2View.getInstance().clearAlertDialog();
+        AutoTaskListUtil.getInstance().clearAlertDialog();
         return super.onStartCommand(intent, flags, START_STICKY);
     }
 
     @Override
     public void onInterrupt() {
-        Jump2View.getInstance().startAccessibility(getApplicationContext());
+//        Jump2View.getInstance().startAccessibility(getApplicationContext());
+        AutoTaskListUtil.getInstance().clearAlertDialog();
         LogUtil.println("MonitorAppService onInterrupt");
     }
 
     @Override
     public boolean onUnbind(Intent intent) {
-        Jump2View.getInstance().startAccessibility(getApplicationContext());
+//        Jump2View.getInstance().startAccessibility(getApplicationContext());
+        AutoTaskListUtil.getInstance().clearAlertDialog();
         LogUtil.println("MonitorAppService onUnbind");
         return super.onUnbind(intent);
     }
 
+    public static void tryCloseAccessibility(Activity activity) {
+        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            if (!Settings.System.canWrite(SheepApp.getInstance())) {
+                Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + SheepApp.getInstance().getPackageName()));
+                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                activity.startActivityForResult(intent, -1);
+            } else {
+//                有了权限,你要做什么呢?具体的动作
+                try {
+                    closeAccessibility();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        } else {
+            try {
+                closeAccessibility();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
     public static void closeAccessibility() {
         String service = SheepApp.getInstance().getPackageName() + "/" + MonitorAppService.class.getCanonicalName();
         // 这个key保存已经辅助服务的组件名列表,以“:”隔开,要关闭自己的组件,只要从这个key的值中移除该字符串
@@ -91,10 +133,20 @@ public class MonitorAppService extends AccessibilityService {
         // 这个key控制辅助服务的开关
         Settings.Secure.putInt(SheepApp.getInstance().getApplicationContext().getContentResolver(),Settings.Secure.ACCESSIBILITY_ENABLED, 0);
     }
+    private static String getId(){
+        String pacakgeName = SheepApp.getInstance().getPackageName();
+        return pacakgeName+"/"+MonitorAppService.class.getCanonicalName().replace(pacakgeName, "");
+    }
+    private static String getId2(){
+        String pacakgeName = SheepApp.getInstance().getPackageName();
+        return pacakgeName+"/"+MonitorAppService.class.getCanonicalName();
+    }
+    private static boolean isThisService(String id){
+        return getId2().equalsIgnoreCase(id) || getId().equalsIgnoreCase(id);
+    }
 
     public static boolean isAccessibilitySettingsOn(Context mContext) {
         int accessibilityEnabled = 0;
-        final String service = mContext.getPackageName() + "/" + MonitorAppService.class.getCanonicalName();
         // com.z.buildingaccessibilityservices/android.accessibilityservice.AccessibilityService
         try {
             accessibilityEnabled = Settings.Secure.getInt(mContext.getApplicationContext().getContentResolver(),
@@ -106,13 +158,14 @@ public class MonitorAppService extends AccessibilityService {
         if (accessibilityEnabled == 1) {
             String settingValue = Settings.Secure.getString(mContext.getApplicationContext().getContentResolver(),
                     Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
+            LogUtil.println("MonitorAppService","isAccessibilitySettingsOn", "getString",settingValue);
             //com.sheep.jiuyan.samllsheep/com.sheep.jiuyan.samllsheep.service.MonitorAppService
             if (settingValue != null) {
                 mStringColonSplitter.setString(settingValue);
                 while (mStringColonSplitter.hasNext()) {
                     String accessibilityService = mStringColonSplitter.next();
 
-                    if (accessibilityService.equalsIgnoreCase(service)) {
+                    if (isThisService(accessibilityService)) {
                         return true;
                     }
                 }

+ 0 - 38
app/src/main/java/com/sheep/jiuyan/samllsheep/utils/OpenService.java

@@ -1,38 +0,0 @@
-package com.sheep.jiuyan.samllsheep.utils;
-
-import android.content.Context;
-import android.provider.Settings;
-
-/**
- * Created by Administrator on 2018/1/18.
- */
-
-public class OpenService {
-
-    /**
-     * @return
-     * 判断是否开启辅助功能
-     */
-    public  boolean isAccessibilitySettingsOn(Context context) {
-        int accessibilityEnabled = 0;
-        try {
-            accessibilityEnabled = Settings.Secure.getInt(context.getContentResolver(),
-                    Settings.Secure.ACCESSIBILITY_ENABLED);
-        } catch (Settings.SettingNotFoundException e) {
-            e.printStackTrace();
-        }
-
-        if (accessibilityEnabled == 1) {
-            String services = Settings.Secure.getString(context.getContentResolver(),
-                    Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
-            if (services != null) {
-                return services.toLowerCase().contains(context.getPackageName().toLowerCase());
-            }
-        }
-
-        return false;
-    }
-
-
-
-}

+ 4 - 0
app/src/main/res/layout/x_real_name_auther_layout.xml

@@ -65,6 +65,7 @@
                 android:drawablePadding="10dp"
                 android:gravity="end"
                 android:hint="请填写姓名"
+                android:lines="1"
                 android:textColor="@color/txt_black_9e9c9c"
                 android:textSize="@dimen/text_size_2" />
 
@@ -108,6 +109,7 @@
                 android:background="@null"
                 android:drawablePadding="10dp"
                 android:gravity="right"
+                android:lines="1"
                 android:hint="请填写银行卡"
                 android:inputType="number"
                 android:maxLength="19"
@@ -146,6 +148,7 @@
                 android:background="@null"
                 android:drawablePadding="10dp"
                 android:gravity="right"
+                android:lines="1"
                 android:hint="请填写银行卡预留手机号"
                 android:inputType="number"
                 android:maxLength="19"
@@ -187,6 +190,7 @@
                 android:background="@null"
                 android:drawablePadding="10dp"
                 android:gravity="right"
+                android:lines="1"
                 android:hint="请填写身份证号"
                 android:maxLength="18"
                 android:textColor="@color/txt_black_9e9c9c"

+ 9 - 0
app/src/main/res/values/gamegroup_styles.xml

@@ -105,6 +105,15 @@
         <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->
         <item name="android:backgroundDimAmount">0.7</item><!--透明度 0.0f到1.0f之间。1.0完全不透明,0.0f完全透明-->
     </style>
+    <style name="AppTheme_Dialog_Alert" parent="Theme.AppCompat.Light.Dialog.Alert">
+        <item name="android:windowFrame">@android:color/transparent</item><!--边框-->
+        <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
+        <item name="android:windowIsTranslucent">false</item><!--半透明-->
+        <item name="android:windowDisablePreview">true</item>
+        <item name="android:windowNoTitle">true</item><!--无标题-->
+        <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->
+        <item name="android:backgroundDimAmount">0.7</item><!--透明度 0.0f到1.0f之间。1.0完全不透明,0.0f完全透明-->
+    </style>
     <style name="style_nomal_tv">
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>