Просмотр исходного кода

新增用户协议与劳务协议的审查

zengjiebin лет назад: 8
Родитель
Сommit
b1150d9d61

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

@@ -42,7 +42,6 @@ import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
 import com.sheep.gamegroup.event.ImageHeadChange;
 import com.sheep.gamegroup.event.MoneyChange;
 import com.sheep.gamegroup.event.UserNameChange;
-import com.sheep.gamegroup.model.entity.AppRecord;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BulletinEnty;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
@@ -77,9 +76,7 @@ import com.sheep.gamegroup.view.activity.NotificationsUtils;
 import com.sheep.gamegroup.view.adapter.AdpHomeListGrideview;
 import com.sheep.gamegroup.view.adapter.AdpHomeListListview;
 import com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp;
-import com.sheep.gamegroup.view.dialog.DialogNewbieTask1;
 import com.sheep.gamegroup.view.dialog.DialogNewbieTaskList;
-import com.sheep.gamegroup.view.dialog.DialogNewbieTaskRegistSuccess;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -89,7 +86,6 @@ import com.sunfusheng.marqueeview.MarqueeView;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
-import org.xutils.ex.DbException;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -438,14 +434,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 break;
             case R.id.icon_layout://
                 if(BuildConfig.DEBUG) {
-                    System.out.println(String.format(Locale.CHINA, "MonitorAppService %s %s", activity.getPackageName(), MyDbManager.getInstance().getAppRunTime(activity.getPackageName())));
-//                    MyDbManager.getInstance().removeAppRecord();
-                    List<AppRecord> list = MyDbManager.getInstance().getAppRecordList(activity.getPackageName());
-                    if(list != null)
-                        for (AppRecord appRecord : list) {
-                            System.out.println(String.format(Locale.CHINA, "MonitorAppService %s %s %s %d %d %d", appRecord.getPackageName(), appRecord.getClassName(), appRecord.getTag(), appRecord.getType_id(), appRecord.getTime(), appRecord.getId()));
-                        }
-                    Jump2View.getInstance().goUnderstandSheep(activity, null);
+                    TestUtil.test(activity);
                 }else
                     Jump2View.getInstance().goPersonnalCenterView(activity, null);
                 break;
@@ -494,63 +483,7 @@ public class FgtSmallSheep extends BaseCompatFragment implements SmallSheepContr
                 .load(AppUtil.getQRLink(userEntity.getShare_link(), 800))
                 .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE))
                 .preload(800, 800);
-        if (userEntity.getIs_new() == 2) {//1新用户 2老用户
-            newbie_task.setVisibility(View.GONE);
-        } else {
-            try {
-                newbie_task_record = MyDbManager.getInstance().dbFindNewbieTaskRecord(userEntity.getInvitation_code());
-            } catch (DbException e) {
-                e.printStackTrace();
-            }
-            if (newbie_task_record == null) {
-                newbie_task_record = new NewbieTaskRecord();
-                newbie_task_record.setUser_id(userEntity.getInvitation_code());
-                MyDbManager.getInstance().saveOrUpdate(newbie_task_record);
-            }
-            boolean dontShowNewbieTaskDialog = newbie_task_record != null && newbie_task_record.isDontShowNewbieTaskDialog();//默认可以显示对话框
-            if (
-//                !BuildConfig.DEBUG &&
-                    dontShowNewbieTaskDialog) {
-                newbie_task.setVisibility(View.VISIBLE);
-                return;
-            }
-            SheepApp.getInstance().getNetComponent().getApiService().getNewbieTask()
-                    .subscribeOn(Schedulers.io())
-                    .observeOn(AndroidSchedulers.mainThread())
-                    .subscribe(new SheepSubscriber<BaseMessage>(getContext()) {
-                        @Override
-                        public void onNext(BaseMessage baseMessage) {
-                            newbie_task.setVisibility(View.VISIBLE);
-                            List<NewbieTask> newbieTaskList = baseMessage.getDatas(NewbieTask.class);
-                            if (newbieTaskList != null && !newbieTaskList.isEmpty() && newbieTaskList.size() > 1 && !newbieTaskList.get(1).getFinished()) {//了解小绵羊任务未完成时
-                                DialogNewbieTaskRegistSuccess.showDialog(getActivity(), newbie_task_record, newbieTaskList.get(0));
-                            } else if (newbieTaskList != null && !newbieTaskList.isEmpty()) {
-                                newbie_task_record.setDontShowNewbieTaskDialog(true);
-                                MyDbManager.getInstance().saveOrUpdate(newbie_task_record);//设置为不再显示新手对话框
-                                List<NewbieTask> taskList = new ArrayList<>();
-                                NewbieTask task = null;
-                                for (NewbieTask newbieTask : newbieTaskList) {
-                                    if (newbieTask.getFinished()) {//已经完成
-                                        task = newbieTask;
-                                    } else {
-                                        taskList.add(newbieTask);
-                                    }
-                                }
-                                DialogNewbieTask1.showDialog(getActivity(), taskList, task);
-                            } else {
-                                if (BuildConfig.DEBUG)
-                                    G.showToast("测试:服务器数据错误,新手任务数据为空");
-                            }
-                        }
-
-                        @Override
-                        public void onError(BaseMessage baseMessage) {
-                            newbie_task.setVisibility(View.GONE);
-                            System.out.println("baseMessage onError " + JSON.toJSONString(baseMessage));
-                        }
-                    });
-        }
-        //添加代码请在上面的if else之前,否则出错不要找我 by realicing
+        Jump2View.getInstance().tryShowAgreementOrNewbieTask(activity, userEntity, newbie_task);
     }
 
     @Override

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

@@ -1,5 +1,6 @@
 package com.sheep.gamegroup.model.api;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 
@@ -386,4 +387,15 @@ public interface ApiService {
      */
     @POST("app/feedback")
     Observable<BaseMessage> feedback(@Body JSONObject jsonObject);
+
+    /**
+     * 获取协议
+     */
+    @GET("app/user/agreement/")
+    Observable<BaseMessage> getAgreement();
+    /**
+     * 提交协议
+     */
+    @POST("app/user/agreement_back/")
+    Observable<BaseMessage> agreementBack(@Body JSONArray jsonArray);
 }

+ 57 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/Agreement.java

@@ -0,0 +1,57 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/5/16.
+ * realicing@sina.com
+ */
+public class Agreement {
+    private String Content;
+
+    private int CreateTime;
+
+    private int UpdateTime;
+
+    private int Id;
+
+    private String Name;
+
+    public void setContent(String Content) {
+        this.Content = Content;
+    }
+
+    public String getContent() {
+        return this.Content;
+    }
+
+    public void setCreateTime(int CreateTime) {
+        this.CreateTime = CreateTime;
+    }
+
+    public int getCreateTime() {
+        return this.CreateTime;
+    }
+
+    public void setUpdateTime(int UpdateTime) {
+        this.UpdateTime = UpdateTime;
+    }
+
+    public int getUpdateTime() {
+        return this.UpdateTime;
+    }
+
+    public void setId(int Id) {
+        this.Id = Id;
+    }
+
+    public int getId() {
+        return this.Id;
+    }
+
+    public void setName(String Name) {
+        this.Name = Name;
+    }
+
+    public String getName() {
+        return this.Name;
+    }
+}

+ 120 - 1
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -10,6 +10,7 @@ import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.view.View;
 import android.view.WindowManager;
 
 import com.alibaba.fastjson.JSON;
@@ -17,6 +18,7 @@ import com.kfzs.duanduan.ActMain;
 import com.kfzs.duanduan.ActPicturesEnlarge;
 import com.kfzs.duanduan.bean.KFIntentKeys;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.model.entity.Agreement;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.CreditCard;
 import com.sheep.gamegroup.model.entity.DialogEntity;
@@ -24,7 +26,6 @@ import com.sheep.gamegroup.model.entity.NewbieTask;
 import com.sheep.gamegroup.model.entity.NewbieTaskRecord;
 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.model.entity.UserEntity;
 import com.sheep.gamegroup.model.entity.WebviewEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
@@ -67,6 +68,9 @@ import com.sheep.gamegroup.view.activity.WebviewAct;
 import com.sheep.gamegroup.view.activity.WithdrawalAct;
 import com.sheep.gamegroup.view.activity.WithdrawalListAct;
 import com.sheep.gamegroup.view.activity.WithdrawalResultAct;
+import com.sheep.gamegroup.view.dialog.DialogAgreement;
+import com.sheep.gamegroup.view.dialog.DialogNewbieTask1;
+import com.sheep.gamegroup.view.dialog.DialogNewbieTaskRegistSuccess;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -78,6 +82,9 @@ import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
 import org.xutils.ex.DbException;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
 import rx.schedulers.Schedulers;
@@ -803,4 +810,116 @@ public class Jump2View {
         return false;
     }
 
+    /**
+     * 获取协议列表,如果没有协议,则直接通过,否则显示协议对话框
+     * @param activity
+     * @param action1
+     */
+    public void tryShowAgreement(final Activity activity, final Action1<String> action1) {
+        SheepApp.getInstance().getNetComponent().getApiService().getAgreement()
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(activity) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        LogUtil.println("baseMessage onNext "+ JSON.toJSONString(baseMessage));
+                        List<Agreement> agreementList = baseMessage.getDatas(Agreement.class);
+                        if(agreementList.isEmpty()){
+                            if(action1 != null)
+                                action1.call(null);
+                        } else {
+                            DialogAgreement.showDialog(activity, agreementList, action1);
+                        }
+                    }
+
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        LogUtil.println("baseMessage onError "+JSON.toJSONString(baseMessage));
+                        if(action1 != null){
+                            action1.call(TextUtils.isEmpty(baseMessage.getMsg()) ? "服务器错误,请稍候再试" : baseMessage.getMsg());
+                        }
+                    }
+                });
+    }
+
+    /**
+     * 先尝试显示用户协议与劳务协议等协议对话框,再尝试显示新手任务对话框,如果协议没有通过,直接退出,无论原因
+     * @param activity
+     * @param userEntity
+     * @param newbie_task
+     */
+    public void tryShowAgreementOrNewbieTask(final Activity activity, final UserEntity userEntity, final View newbie_task) {
+        tryShowAgreement(activity, new Action1<String>() {
+            @Override
+            public void call(String msg) {
+                if(msg == null) {
+                    tryShowNewbieTask(activity, userEntity, newbie_task);
+                }else {
+                    G.showToast(msg);
+                    SheepApp.getInstance().quit();
+                }
+            }
+        });
+    }
+
+    public void tryShowNewbieTask(final Activity activity, final UserEntity userEntity, final View newbie_task) {
+        if (userEntity.getIs_new() == 2) {//1新用户 2老用户
+            newbie_task.setVisibility(View.GONE);
+        } else {
+            NewbieTaskRecord newbie_task_record = null;
+            try {
+                newbie_task_record = MyDbManager.getInstance().dbFindNewbieTaskRecord(userEntity.getInvitation_code());
+            } catch (DbException e) {
+                e.printStackTrace();
+            }
+            if (newbie_task_record == null) {
+                newbie_task_record = new NewbieTaskRecord();
+                newbie_task_record.setUser_id(userEntity.getInvitation_code());
+                MyDbManager.getInstance().saveOrUpdate(newbie_task_record);
+            }
+            boolean dontShowNewbieTaskDialog = newbie_task_record.isDontShowNewbieTaskDialog();//默认可以显示对话框
+            if (
+//                !BuildConfig.DEBUG &&
+                    dontShowNewbieTaskDialog) {
+                newbie_task.setVisibility(View.VISIBLE);
+                return;
+            }
+            final NewbieTaskRecord finalNewbie_task_record = newbie_task_record;
+            SheepApp.getInstance().getNetComponent().getApiService().getNewbieTask()
+                    .subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .subscribe(new SheepSubscriber<BaseMessage>(activity) {
+                        @Override
+                        public void onNext(BaseMessage baseMessage) {
+                            newbie_task.setVisibility(View.VISIBLE);
+                            List<NewbieTask> newbieTaskList = baseMessage.getDatas(NewbieTask.class);
+                            if (newbieTaskList != null && !newbieTaskList.isEmpty() && newbieTaskList.size() > 1 && !newbieTaskList.get(1).getFinished()) {//了解小绵羊任务未完成时
+                                DialogNewbieTaskRegistSuccess.showDialog(activity, finalNewbie_task_record, newbieTaskList.get(0));
+                            } else if (newbieTaskList != null && !newbieTaskList.isEmpty()) {
+                                finalNewbie_task_record.setDontShowNewbieTaskDialog(true);
+                                MyDbManager.getInstance().saveOrUpdate(finalNewbie_task_record);//设置为不再显示新手对话框
+                                List<NewbieTask> taskList = new ArrayList<>();
+                                NewbieTask task = null;
+                                for (NewbieTask newbieTask : newbieTaskList) {
+                                    if (newbieTask.getFinished()) {//已经完成
+                                        task = newbieTask;
+                                    } else {
+                                        taskList.add(newbieTask);
+                                    }
+                                }
+                                DialogNewbieTask1.showDialog(activity, taskList, task);
+                            } else {
+                                if (BuildConfig.DEBUG)
+                                    G.showToast("测试:服务器数据错误,新手任务数据为空");
+                            }
+                        }
+
+                        @Override
+                        public void onError(BaseMessage baseMessage) {
+                            newbie_task.setVisibility(View.GONE);
+                            System.out.println("baseMessage onError " + JSON.toJSONString(baseMessage));
+                        }
+                    });
+        }
+    }
 }

+ 20 - 0
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -21,6 +21,8 @@ import com.sheep.jiuyan.samllsheep.utils.G;
 
 import java.io.File;
 
+import rx.functions.Action1;
+
 import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
 
 /**
@@ -153,4 +155,22 @@ public class TestUtil {
             });
         }
     }
+
+    public static void test(Activity activity) {
+//        JSONArray jsonArray = new JSONArray();
+//        jsonArray.add(1);
+//        jsonArray.add(2);
+//        JSONObject jsonObject = new JSONObject();
+//        jsonObject.put("ProtocolId", jsonArray.toJSONString());
+//        JSONObject jsonObject1 = new JSONObject();
+//        jsonObject1.put("ProtocolId", jsonArray);
+//        LogUtil.println("testProtocolId = "+jsonObject.toString());
+//        LogUtil.println("testProtocolId = "+jsonObject1.toString());
+        Jump2View.getInstance().tryShowAgreement(activity, new Action1<String>() {
+            @Override
+            public void call(String msg) {
+                G.showToast(msg==null?"成功":msg);
+            }
+        });
+    }
 }

+ 3 - 0
app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java

@@ -78,6 +78,9 @@ public class UMConfigUtils {
         public int getId(){
             return ordinal()+5001;
         }
+        public void onEvent(){
+            UMConfigUtils.onEvent(this);
+        }
     }
 
     public static class Source{

+ 12 - 0
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -6,9 +6,12 @@ import android.content.Intent;
 import android.graphics.Bitmap;
 import android.net.Uri;
 import android.provider.MediaStore;
+import android.text.Html;
+import android.text.method.ScrollingMovementMethod;
 import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.webkit.WebView;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -188,4 +191,13 @@ public class ViewUtil {
         }
         return null;
     }
+    public static void setH5Text(TextView textView, String content){
+        textView.setText(Html.fromHtml(content));
+        textView.setMovementMethod(new ScrollingMovementMethod());
+    }
+    public static void loadDataWithBaseURL(WebView webView, String content){
+        webView.loadDataWithBaseURL(null,
+                new StringBuilder("<html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" /><style>img{max-width:100% !important;height:auto !important;}</style><style>body{max-width:100% !important;}</style></head><body>").append(content).append("</body></html>").toString()
+                , "text/html", "utf-8", null);
+    }
 }

+ 2 - 3
app/src/main/java/com/sheep/gamegroup/view/activity/ActNotice.java

@@ -7,6 +7,7 @@ import android.widget.TextView;
 
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.util.TimeUtil;
+import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
@@ -74,9 +75,7 @@ public class ActNotice extends BaseActivity {
         if(content.startsWith("<html>")){
             act_notice_content_wb.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
         } else if(content.startsWith("<p>")){
-            act_notice_content_wb.loadDataWithBaseURL(null,
-                    new StringBuilder("<html><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" /><style>img{max-width:100% !important;height:auto !important;}</style><style>body{max-width:100% !important;}</style></head><body>").append(content).append("</body></html>").toString()
-                    , "text/html", "utf-8", null);
+            ViewUtil.loadDataWithBaseURL(act_notice_content_wb, content);
             act_notice_content_tv.setVisibility(View.GONE);
         } else {
             act_notice_content_wb.setVisibility(View.GONE);

+ 141 - 0
app/src/main/java/com/sheep/gamegroup/view/dialog/DialogAgreement.java

@@ -0,0 +1,141 @@
+package com.sheep.gamegroup.view.dialog;
+
+import android.app.Activity;
+import android.support.v7.app.AlertDialog;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.kfzs.duanduan.utils.dlg.ViewFindUtils;
+import com.sheep.gamegroup.model.entity.Agreement;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.ArrayAdapter;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.util.List;
+
+import rx.android.schedulers.AndroidSchedulers;
+import rx.functions.Action1;
+import rx.schedulers.Schedulers;
+
+
+public class DialogAgreement {
+    /**
+     * 协议对话框不能取消,只能同意,如果同意后访问接口成功,则通过,否则都算失败,强制关闭后下次重启仍会获取协议列表
+     * @param activity
+     * @param list
+     * @param action1
+     * @return
+     */
+    public static AlertDialog showDialog(final Activity activity, final List<Agreement> list, final Action1<String> action1) {
+        View view = View.inflate(activity, R.layout.dialog_agreement, null);
+        final AlertDialog mAlertDialog = new AlertDialog.Builder(activity, R.style.MyDialogActivityTheme)
+                .setView(view)
+                .create();
+        final TextView dialog_title = ViewFindUtils.find(view, R.id.dialog_title);
+        final TextView dialog_content = ViewFindUtils.find(view, R.id.dialog_content);
+
+        dialog_title.setText(list.get(0).getName());
+//        ViewUtil.loadDataWithBaseURL(dialog_content, list.get(0).getContent());
+        dialog_content.setMaxHeight(G.HEIGHT * 2 / 3);
+        ViewUtil.setH5Text(dialog_content, list.get(0).getContent());
+        final View dialog_sure = ViewFindUtils.find(view, R.id.dialog_sure);
+        final List<CheckBox> checkBoxList = ListUtil.emptyList();
+
+        final ListView dialog_center_lv = ViewFindUtils.find(view, R.id.dialog_center_lv);
+        final CompoundButton.OnCheckedChangeListener onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+                dialog_sure.setEnabled(isAllChecked());
+            }
+
+            private boolean isAllChecked() {
+                for (CheckBox checkBox : checkBoxList) {
+                    if(!checkBox.isChecked())
+                        return false;
+                }
+                return true;
+            }
+        };
+        dialog_center_lv.setAdapter(new ArrayAdapter<Agreement>(activity, R.layout.dialog_agreement_item, list){
+            @Override
+            public boolean convert(int position, View convertView, ViewGroup parent, final Agreement item) {
+                final CheckBox dialog_agreement_item_cb = ViewFindUtils.find(convertView, R.id.dialog_agreement_item_cb);
+                final TextView dialog_agreement_item_tv = ViewFindUtils.find(convertView, R.id.dialog_agreement_item_tv);
+                dialog_agreement_item_tv.setText(item.getName());
+                if(!checkBoxList.contains(dialog_agreement_item_cb))
+                    checkBoxList.add(dialog_agreement_item_cb);
+                dialog_agreement_item_tv.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        if(!TextUtils.equals(dialog_title.getText().toString(), item.getName())) {
+                            dialog_title.setText(item.getName());
+//                            ViewUtil.loadDataWithBaseURL(dialog_content, item.getContent());
+                            ViewUtil.setH5Text(dialog_content, item.getContent());
+                            dialog_content.scrollTo(0, 0);
+                        }
+                    }
+                });
+                dialog_agreement_item_cb.setOnCheckedChangeListener(onCheckedChangeListener);
+                return true;
+            }
+        });
+
+
+        View.OnClickListener onClickListener =  new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mAlertDialog.dismiss();
+                JSONArray jsonArray = new JSONArray();
+                for (Agreement agreement : list) {
+                    JSONObject jsonObject = new JSONObject();
+                    jsonObject.put("ProtocolId", agreement.getId());
+                    jsonArray.add(jsonObject);
+                }
+                SheepApp.getInstance().getNetComponent().getApiService().agreementBack(jsonArray)
+                                .subscribeOn(Schedulers.io())
+                                .observeOn(AndroidSchedulers.mainThread())
+                                .subscribe(new SheepSubscriber<BaseMessage>(activity) {
+                                    @Override
+                                    public void onNext(BaseMessage baseMessage) {
+                                        LogUtil.println("baseMessage onNext "+ JSON.toJSONString(baseMessage));
+                                        action1.call(null);
+                                    }
+
+                                    @Override
+                                    public void onError(BaseMessage baseMessage) {
+                                        LogUtil.println("baseMessage onError "+JSON.toJSONString(baseMessage));
+                                        action1.call(TextUtils.isEmpty(baseMessage.getMsg()) ? "服务器错误,请稍候再试" : baseMessage.getMsg());
+                                    }
+                                });
+            }
+        };
+        dialog_sure.setOnClickListener(onClickListener);
+        mAlertDialog.setCancelable(false);
+//        mAlertDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
+//            @Override
+//            public void onCancel(DialogInterface dialogInterface) {
+//                action1.call("您拒绝了协议");
+//            }
+//        });
+        try {
+            mAlertDialog.show();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return mAlertDialog;
+    }
+}

+ 5 - 4
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -85,6 +85,7 @@ public class SheepApp extends BaseApplication {
             if(this.connectAddress != connectAddress){
                 SharedPreferences.getInstance().putString("flavor", connectAddress.name());
                 quit();
+                System.exit(0);
             } else {
                 G.showToast("已经是该服务器");
             }
@@ -132,7 +133,7 @@ public class SheepApp extends BaseApplication {
             ActivityManager.getInstance().pushActivity(activity);
             if(mActivityAount == 0) {
                 LogUtil.println("SheepApp SHEEP_START");
-                UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_START);
+                UMConfigUtils.Event.SHEEP_START.onEvent();
             }
         }
 
@@ -148,7 +149,7 @@ public class SheepApp extends BaseApplication {
                 if(!notStop) {
                     notStop = true;
                     LogUtil.println("SheepApp SHEEP_RESUME");
-                    UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_RESUME);
+                    UMConfigUtils.Event.SHEEP_RESUME.onEvent();
                 }
                 Jump2View.getInstance().startFloat(activity, false);
             }
@@ -166,7 +167,7 @@ public class SheepApp extends BaseApplication {
                 if(notStop) {
                     notStop = false;
                     LogUtil.println("SheepApp SHEEP_PAUSE");
-                    UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_PAUSE);
+                    UMConfigUtils.Event.SHEEP_PAUSE.onEvent();
                 }
                 Jump2View.getInstance().startFloat(activity, true);
             }
@@ -180,7 +181,7 @@ public class SheepApp extends BaseApplication {
         public void onActivityDestroyed(Activity activity) {
             if(mActivityAount == 0) {
                 LogUtil.println("SheepApp SHEEP_STOP");
-                UMConfigUtils.onEvent(UMConfigUtils.Event.SHEEP_STOP);
+                UMConfigUtils.Event.SHEEP_STOP.onEvent();
             }
         }
     };

+ 8 - 0
app/src/main/res/color/selector_color_agreement.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_enabled="false" android:color="@color/main_tab"/>
+    <item android:state_activated="true" android:color="@color/main_tab"/>
+    <item android:state_pressed="true" android:color="@color/main_tab"/>
+    <item android:color="#444444"/>
+</selector>

BIN
app/src/main/res/drawable-xxhdpi/agreement_no.webp


BIN
app/src/main/res/drawable-xxhdpi/agreement_yes.webp


+ 8 - 0
app/src/main/res/drawable/selector_agreement_cb.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/agreement_yes" android:state_focused="true" />
+    <item android:drawable="@drawable/agreement_yes" android:state_checked="true" />
+    <item android:drawable="@drawable/agreement_yes" android:state_selected="true" />
+    <item android:drawable="@drawable/agreement_yes" android:state_pressed="true" />
+    <item android:drawable="@drawable/agreement_no" />
+</selector>

+ 8 - 0
app/src/main/res/drawable/shape_agreement_solid_rectangle_bottom.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners
+        android:bottomLeftRadius="15dp"
+        android:bottomRightRadius="15dp" />
+    <solid android:color="@color/app" />
+</shape>

+ 71 - 0
app/src/main/res/layout/dialog_agreement.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center">
+
+        <LinearLayout
+            android:id="@+id/dialog_center_ll"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@drawable/x_shap_shadow_bg_rectgangle_white"
+            android:gravity="center"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/dialog_title"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:padding="@dimen/content_padding_10"
+                android:text="用户协议"
+                android:textColor="#000000"
+                android:textSize="15sp" />
+
+            <TextView
+                android:id="@+id/dialog_content"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:lineSpacingExtra="5dp"
+                android:paddingEnd="@dimen/content_padding"
+                android:paddingStart="@dimen/content_padding"
+                android:text="@string/user_agreement"
+                android:maxHeight="400dp"
+                android:textColor="#4d4d4d"
+                android:textSize="12sp" />
+
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginTop="@dimen/content_padding"
+                android:background="#d2d2d2" />
+            <com.kfzs.android.view.widget.ListViewForScrollView
+                android:id="@+id/dialog_center_lv"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginTop="@dimen/content_padding"
+                android:background="#d2d2d2" />
+
+            <TextView
+                android:id="@+id/dialog_sure"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/shape_agreement_solid_rectangle_bottom"
+                android:gravity="center"
+                android:padding="@dimen/content_padding_10"
+                android:text="@string/btn_sure"
+                android:textColor="@color/selector_color_agreement"
+                android:textSize="18sp" />
+        </LinearLayout>
+
+    </RelativeLayout>
+</FrameLayout>

+ 30 - 0
app/src/main/res/layout/dialog_agreement_item.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal">
+
+    <CheckBox
+        android:id="@+id/dialog_agreement_item_cb"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:button="@drawable/selector_agreement_cb"
+        android:layout_marginStart="@dimen/content_padding"
+        android:layout_marginTop="@dimen/content_padding"
+        android:checked="true"
+        android:paddingEnd="@dimen/content_padding_8"
+        android:paddingStart="@dimen/content_padding_8"
+        android:text="我已阅读并同意"
+        android:textColor="#4d4d4d"
+        android:textSize="12sp" />
+
+    <TextView
+        android:id="@+id/dialog_agreement_item_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/content_padding"
+        android:layout_marginTop="@dimen/content_padding"
+        android:text="用户协议"
+        android:textColor="#262bfa"
+        android:textSize="12sp" />
+</LinearLayout>

Разница между файлами не показана из-за своего большого размера
+ 150 - 0
app/src/main/res/values/dd_strings.xml