Browse Source

1.新增用户协议弹窗 不同意则退出app

zhangxinyu 5 years ago
parent
commit
b5c3c203d8

+ 2 - 2
app/build.gradle

@@ -23,8 +23,8 @@ android {
         minSdkVersion rootProject.ext.minSdkVersion
         targetSdkVersion rootProject.ext.targetSdkVersion
         multiDexEnabled true
-        versionCode 112
-        versionName "1.1.2"
+        versionCode 113
+        versionName "1.1.3"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         flavorDimensions "versionCode"
         ndk {

+ 4 - 1
app/src/main/AndroidManifest.xml

@@ -92,7 +92,10 @@
             android:name=".ui.activity.NormalUserActivity"
             android:screenOrientation="portrait" />
         <activity
-            android:name=".ui.activity.TipsActivity"
+            android:name=".ui.activity.TipsUserActivity"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.activity.TipsPrivacyActivity"
             android:screenOrientation="portrait" />
         <activity
             android:name=".ui.activity.image.PickImageActivity"

+ 1 - 1
app/src/main/java/com/webrain/happywork/ui/activity/LoginActivity.java

@@ -80,7 +80,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
 
             @Override
             public void onClick(View widget) {
-                startActivity(new Intent(mContext, TipsActivity.class));
+                startActivity(new Intent(mContext, TipsUserActivity.class));
             }
         }, spannableString.toString().length() - 8, spannableString.toString().length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         tvTip.setText(spannableString);

+ 27 - 0
app/src/main/java/com/webrain/happywork/ui/activity/MainActivity.java

@@ -15,7 +15,9 @@ import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
 import com.webrain.baselibrary.EventConstant;
 import com.webrain.baselibrary.event.StringEvent;
 import com.webrain.baselibrary.imageloader.ImageLoaderUtil;
+import com.webrain.baselibrary.utils.AppUtils;
 import com.webrain.baselibrary.utils.PxUtils;
+import com.webrain.baselibrary.utils.SharedPreferencesUtils;
 import com.webrain.baselibrary.widget.ScrollListView;
 import com.webrain.baselibrary.widget.refresh.ProgressRefreshLayout;
 import com.webrain.happywork.R;
@@ -31,6 +33,7 @@ import com.webrain.happywork.ui.mvp.contacts.MainContacts;
 import com.webrain.happywork.ui.mvp.presenter.MainPresenter;
 import com.webrain.happywork.ui.viewholder.DemandViewHeader;
 import com.webrain.happywork.ui.viewholder.FooterViewHolder;
+import com.webrain.happywork.ui.widget.dialog.TipsDialog;
 import com.webrain.happywork.ui.widget.dialog.UpdateAppDialog;
 import com.webrain.happywork.ui.widget.popwindow.AreaSelectPopWindow;
 import com.webrain.happywork.ui.widget.popwindow.BusinessSelectPopWindow;
@@ -72,6 +75,7 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon
     AreaSelectPopWindow areaSelectPopWindow;
     BusinessSelectPopWindow businessSelectPopWindow;
     PriceSelectPopWindow priceSelectPopWindow;
+    TipsDialog tipsDialog;
 
     @Override
     public int getLayoutId() {
@@ -132,9 +136,19 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon
         mHeaderView = new DemandViewHeader(mContext);
         mFooterView = new FooterViewHolder(mContext);
         mvpPresenter.init();
+        showTipsDialog();
 
     }
 
+    public void showTipsDialog(){
+        if(tipsDialog==null){
+            tipsDialog = new TipsDialog(mContext);
+            tipsDialog.setOnClickSureListener(onClickSureListener);
+        }
+//        if(!SharedPreferencesUtils.isAppTipsAgree(mContext))
+            tipsDialog.show();
+    }
+
     /**
      * 区域筛选点击
      */
@@ -175,6 +189,19 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon
     }
 
     /**
+     * 用户隐私协议是否同意回调 
+     */
+    TipsDialog.OnClickSureListener onClickSureListener = new TipsDialog.OnClickSureListener() {
+        @Override
+        public void onClick(boolean isSure) {
+            if (isSure) {
+                SharedPreferencesUtils.setIsAppTipsAgree(mContext,true);
+            } else {
+                mvpPresenter.closeApp();
+            }
+        }
+    };
+    /**
      * 监听下拉刷新触发
      */
     OnRefreshListener onRefreshListener = new OnRefreshListener() {

+ 1 - 1
app/src/main/java/com/webrain/happywork/ui/activity/MineGeneralSettingActivity.java

@@ -48,7 +48,7 @@ public class MineGeneralSettingActivity extends BaseActivity<MineGeneralSettingP
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.ll_tips:
-                startActivity(new Intent(mContext, TipsActivity.class));
+                startActivity(new Intent(mContext, TipsUserActivity.class));
                 break;
             case R.id.ll_version:
                 mvpPresenter.checkUpdate();

+ 5 - 5
app/src/main/java/com/webrain/happywork/ui/activity/StartActivity.java

@@ -76,11 +76,11 @@ public class StartActivity extends BaseActivity {
     private void goJump() {
         if (mDisposable != null && !mDisposable.isDisposed()) {
             mDisposable.dispose();
-            if (AppCacheManager.getInstance().isLogin() && AppCacheManager.getInstance().getLoginModel().getRegisterFrom() == AppConstant.REGISTER_FROM_SERVICE) {
-                startActivity(new Intent(mContext, MainActivity.class));
-            } else {
-                startActivity(new Intent(mContext, LoginActivity.class));
-            }
+//            if (AppCacheManager.getInstance().isLogin() && AppCacheManager.getInstance().getLoginModel().getRegisterFrom() == AppConstant.REGISTER_FROM_SERVICE) {
+            startActivity(new Intent(mContext, MainActivity.class));
+//            } else {
+//                startActivity(new Intent(mContext, LoginActivity.class));
+//            }
             finish();
         }
     }

+ 55 - 0
app/src/main/java/com/webrain/happywork/ui/activity/TipsPrivacyActivity.java

@@ -0,0 +1,55 @@
+package com.webrain.happywork.ui.activity;
+
+import android.os.Build;
+import android.os.Bundle;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+
+import com.webrain.happywork.BuildConfig;
+import com.webrain.happywork.R;
+import com.webrain.happywork.ui.base.BaseActivity;
+import com.webrain.happywork.ui.base.IPresenter;
+
+import butterknife.BindView;
+
+public class TipsPrivacyActivity extends BaseActivity {
+    @BindView(R.id.wv)
+    WebView wv;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_tips;
+    }
+
+    @Override
+    public IPresenter bindPresenter() {
+        return null;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setTitle(getString(R.string.privacy_tips));
+
+        WebSettings webSettings = wv.getSettings();
+        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // 不使用缓存机制
+        webSettings.setDomStorageEnabled(true);//新加-->解决点餐网页打不开bug
+        webSettings.setBuiltInZoomControls(true);
+        webSettings.setDisplayZoomControls(false);
+        webSettings.setLoadWithOverviewMode(true);
+        webSettings.setGeolocationEnabled(true);
+        webSettings.setSupportMultipleWindows(false);
+        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+        webSettings.setUseWideViewPort(true);
+        webSettings.setDatabaseEnabled(true);
+        webSettings.setBlockNetworkImage(false);
+        webSettings.setPluginState(WebSettings.PluginState.ON_DEMAND);
+        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
+        webSettings.setJavaScriptEnabled(true);
+        if (Build.VERSION.SDK_INT >= 21) {
+            webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
+        }
+        String url = BuildConfig.baseApiUrl.replace("happy-boot/","") + "uploadfile/privacyPolicy.html";
+        wv.loadUrl(url);
+    }
+}

+ 3 - 2
app/src/main/java/com/webrain/happywork/ui/activity/TipsActivity.java

@@ -5,13 +5,14 @@ import android.os.Bundle;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 
+import com.webrain.happywork.BuildConfig;
 import com.webrain.happywork.R;
 import com.webrain.happywork.ui.base.BaseActivity;
 import com.webrain.happywork.ui.base.IPresenter;
 
 import butterknife.BindView;
 
-public class TipsActivity extends BaseActivity {
+public class TipsUserActivity extends BaseActivity {
     @BindView(R.id.wv)
     WebView wv;
 
@@ -48,7 +49,7 @@ public class TipsActivity extends BaseActivity {
         if (Build.VERSION.SDK_INT >= 21) {
             webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
         }
-        String url = "file:///android_asset/" + "tips.html";
+        String url = BuildConfig.baseApiUrl.replace("happy-boot/","") + "uploadfile/userAgreement.html";
         wv.loadUrl(url);
     }
 }

+ 2 - 0
app/src/main/java/com/webrain/happywork/ui/mvp/contacts/MainContacts.java

@@ -35,6 +35,8 @@ public class MainContacts {
 
         void checkQuit();//检查退出
 
+        void closeApp();//关闭app
+
         void checkUpdate();
 
         void init();

+ 2 - 2
app/src/main/java/com/webrain/happywork/ui/mvp/model/MainModel.java

@@ -59,7 +59,7 @@ public class MainModel extends BaseModel implements MainContacts.IMainModel {
         RetrofitHttpParams params = new RetrofitHttpParams(mContext);
         params.put("pageNo", pageNum + 1);
         params.put("pageSize", 10);
-        params.put("platform_id", AppCacheManager.getInstance().getLoginModel().getPlatformId());
+        params.put("platform_id", 5);
         if (!TextUtils.isEmpty(priceType))
             params.put("priceType", priceType);
         if (!TextUtils.isEmpty(tradeType))
@@ -212,7 +212,7 @@ public class MainModel extends BaseModel implements MainContacts.IMainModel {
         RetrofitHttpParams params = new RetrofitHttpParams(mContext);
         params.put("version", AppUtils.getVersionName(mContext));
         params.put("app_system", 0);//表示Android系统
-        new VersionSubscribe(mContext).requestCheckVersion(params.getRequestParams(), new ApiObserver<ApiCheckVersion>(mContext,false,false,false) {
+        new VersionSubscribe(mContext).requestCheckVersion(params.getRequestParams(), new ApiObserver<ApiCheckVersion>(mContext, false, false, false) {
             @Override
             public void onSuccess(ApiCheckVersion data) {
                 if (data != null && !data.isLatest() && data.getHwVersion() != null) {

+ 9 - 0
app/src/main/java/com/webrain/happywork/ui/mvp/presenter/MainPresenter.java

@@ -179,6 +179,15 @@ public class MainPresenter extends BasePresenter<MainActivity> implements MainCo
     }
 
     /**
+     * 关闭app 
+     */
+    @Override
+    public void closeApp() {
+        mvpReference.get().finish();
+        System.exit(0);
+    }
+
+    /**
      * 检查更新
      */
     @Override

+ 92 - 0
app/src/main/java/com/webrain/happywork/ui/widget/dialog/TipsDialog.java

@@ -0,0 +1,92 @@
+package com.webrain.happywork.ui.widget.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.view.View;
+import android.widget.TextView;
+
+import com.webrain.happywork.R;
+import com.webrain.happywork.ui.activity.TipsPrivacyActivity;
+import com.webrain.happywork.ui.activity.TipsUserActivity;
+import com.webrain.happywork.ui.base.BaseViewHolder;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+
+public class TipsDialog {
+    private Context mContext;
+    private Dialog mDialog;
+    private ViewHolder mViewHolder;
+    private OnClickSureListener onClickSureListener;
+
+    public TipsDialog(final Context mContext) {
+        this.mContext = mContext;
+        mViewHolder = new ViewHolder(mContext);
+        mDialog = new Dialog(mContext, R.style.HappyJobDialog);
+        mDialog.setCanceledOnTouchOutside(false);
+        mDialog.setCancelable(false);
+        mDialog.setContentView(mViewHolder.getView());
+    }
+
+    public void dismiss() {
+        if (mDialog != null && mDialog.isShowing())
+            mDialog.dismiss();
+
+    }
+
+    public void show() {
+        if (mDialog != null && !mDialog.isShowing())
+            mDialog.show();
+    }
+
+    public void setOnClickSureListener(OnClickSureListener onClickSureListener) {
+        this.onClickSureListener = onClickSureListener;
+    }
+
+    class ViewHolder extends BaseViewHolder {
+        @BindView(R.id.tv_user)
+        TextView tvUser;
+        @BindView(R.id.tv_privacy)
+        TextView tvPrivacy;
+        @BindView(R.id.tv_cancel)
+        TextView tvCancel;
+        @BindView(R.id.v_line)
+        View vLine;
+        @BindView(R.id.tv_sure)
+        TextView tvSure;
+
+        public ViewHolder(Context mContext) {
+            super(mContext);
+        }
+
+        @Override
+        public int bindViewLayoutId() {
+            return R.layout.dialog_tips;
+        }
+
+        @OnClick({R.id.tv_cancel, R.id.tv_sure, R.id.tv_user, R.id.tv_privacy})
+        public void onClick(View view) {
+            if (view.getId() == R.id.tv_cancel) {
+                if (onClickSureListener != null)
+                    onClickSureListener.onClick(false);
+                dismiss();
+            } else if (view.getId() == R.id.tv_sure) {
+                if (onClickSureListener != null)
+                    onClickSureListener.onClick(true);
+                dismiss();
+            } else if (view.getId() == R.id.tv_user) {
+                mContext.startActivity(new Intent(mContext, TipsUserActivity.class));
+            } else if (view.getId() == R.id.tv_privacy) {
+                mContext.startActivity(new Intent(mContext, TipsPrivacyActivity.class));
+            }
+        }
+
+    }
+
+    public interface OnClickSureListener {
+        void onClick(boolean isSure);
+    }
+
+}

+ 106 - 0
app/src/main/res/layout/dialog_tips.xml

@@ -0,0 +1,106 @@
+<?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:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="322dp"
+        android:layout_height="wrap_content"
+        android:background="@drawable/corners_gray_f5_5dp"
+        android:orientation="vertical">
+
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingLeft="29dp"
+            android:paddingRight="29dp">
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="25dp"
+                android:layout_marginTop="19dp"
+                android:gravity="center"
+                android:text="@string/mine_tips"
+                android:textColor="@color/text_black"
+                android:textSize="@dimen/px54_18sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:lineSpacingExtra="2dp"
+                android:text="@string/tips_dialog_1"
+                android:textColor="@color/text_black"
+                android:textSize="@dimen/px36_12sp" />
+
+            <TextView
+                android:id="@+id/tv_user"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:text="@string/tips_user"
+                android:textColor="@color/text_blue_32"
+                android:textSize="@dimen/px36_12sp" />
+
+            <TextView
+                android:id="@+id/tv_privacy"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:text="@string/tips_privacy"
+                android:textColor="@color/text_blue_32"
+                android:textSize="@dimen/px36_12sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:layout_marginBottom="19dp"
+                android:lineSpacingExtra="2dp"
+                android:text="@string/tips_dialog_2"
+                android:textColor="@color/text_black"
+                android:textSize="@dimen/px36_12sp" />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/view_line_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="53dp"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tv_cancel"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="@string/no_agree"
+                android:textColor="@color/text_gray_88"
+                android:textSize="@dimen/px48_16sp" />
+
+            <View
+                android:id="@+id/v_line"
+                android:layout_width="1dp"
+                android:layout_height="match_parent"
+                android:background="@color/view_line_color" />
+
+            <TextView
+                android:id="@+id/tv_sure"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:text="@string/agree_use"
+                android:textColor="@color/text_black"
+                android:textSize="@dimen/px48_16sp" />
+        </LinearLayout>
+    </LinearLayout>
+</LinearLayout>

+ 11 - 0
app/src/main/res/values/strings.xml

@@ -7,6 +7,8 @@
     <string name="unregister">注销账户</string>
     <string name="cancel">取消</string>
     <string name="sure">确认</string>
+    <string name="no_agree">不同意</string>
+    <string name="agree_use">同意并使用</string>
     <string name="sure_apply">确认报名</string>
     <string name="apply_fail">报名失败</string>
     <string name="apply_success">报名成功</string>
@@ -36,6 +38,7 @@
     <string name="install_now">立刻安装</string>
     <string name="update_now">立刻升级</string>
     <string name="user_tips">开心灵工用户协议</string>
+    <string name="privacy_tips">开心灵工隐私协议</string>
     <string name="e_contract">电子合同</string>
     <string name="toast_is_new_version">已是最新版本</string>
 
@@ -105,4 +108,12 @@
     <string name="download_start">开始下载</string>
     <string name="download_ing">正在下载</string>
     <string name="have_new_version">发现可用的新版本!</string>
+    <string name="tips_dialog_1">亲爱的用户,感谢您一直以来的支持!为了更好地保护您的权益,再次提醒您,请您审慎阅读以下协议,确保您充分理解协议中的各条款内容后再选择点击同意或不同意:</string>
+    <string name="tips_user">《用户协议》</string>
+    <string name="tips_privacy">《隐私政策》</string>
+    <string name="tips_dialog_2">我们依据最新的监管要求更新了平台的《隐私政策》,特向您说明如下:
+1.为了向您提供基本服务,我们会遵循正当、合法、必要的原则收集和使用必要的信息;
+2.基于您的授权,我们后续可能会收集和使用您的位置(以便为您推荐周边的灵工服务)等信息,您有权拒绝或取消授权;
+3.未经您的授权同意,我们不会将您的信息共享给第三方或用于您未授权的其他用途;
+4.您可以查询、更正、删除您的个人信息,我们也提供账户注销的通道。</string>
 </resources>

+ 8 - 0
baselibrary/src/main/java/com/webrain/baselibrary/utils/SharedPreferencesUtils.java

@@ -13,7 +13,15 @@ public class SharedPreferencesUtils {
     public static final String LOCATION_CITY_JSON_DATA = "location_city_json_data";//选择所在城市Json数据
     public static final String HISTORY_APP_VERSION = "history_app_version";//历史版本号
     public static final String APP_UPDATE_DOWNLOAD_ID = "app_update_download_id";//app更新下载ID
+    public static final String APP_TIPS_AGREE="app_tips_agree";//用户协议是否同意
 
+    public static void setIsAppTipsAgree(Context context, boolean tag) {
+        saveData(context, APP_TIPS_AGREE, tag);
+    }
+
+    public static boolean isAppTipsAgree(Context context) {
+        return (Boolean) getData(context, APP_TIPS_AGREE, false);
+    }
 
     public static void setCameraImageFile(Context context, String tag) {
         saveData(context, CAMERA_IMAGE_FILE, tag);