瀏覽代碼

1.增加隐私协议
2.修改登录界面
3.播放器所需so包

FailedToRead 2 年之前
父節點
當前提交
41f6fd90eb
共有 44 個文件被更改,包括 1167 次插入107 次删除
  1. 46 6
      app/build.gradle
  2. 二進制
      app/libs/arm64-v8a/libijkffmpeg.so
  3. 二進制
      app/libs/arm64-v8a/libijkplayer.so
  4. 二進制
      app/libs/arm64-v8a/libijksdl.so
  5. 二進制
      app/libs/armeabi-v7a/libijkffmpeg.so
  6. 二進制
      app/libs/armeabi-v7a/libijkplayer.so
  7. 二進制
      app/libs/armeabi-v7a/libijksdl.so
  8. 二進制
      app/libs/x86/libijkffmpeg.so
  9. 二進制
      app/libs/x86/libijkplayer.so
  10. 二進制
      app/libs/x86/libijksdl.so
  11. 二進制
      app/libs/x86_64/libijkffmpeg.so
  12. 二進制
      app/libs/x86_64/libijkplayer.so
  13. 二進制
      app/libs/x86_64/libijksdl.so
  14. 二進制
      app/src/activityLoginAlert/drawable/activity_loginalertqr_edit_bg.png
  15. 252 0
      app/src/fragmentUser/layout/activity_alert_loginqr.xml
  16. 15 1
      app/src/main/AndroidManifest.xml
  17. 6 0
      app/src/main/java/com/edufound/reader/activity/LoginAlertActivity.java
  18. 210 0
      app/src/main/java/com/edufound/reader/activity/LoginQRAlertActivity.java
  19. 2 2
      app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java
  20. 0 2
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  21. 36 1
      app/src/main/java/com/edufound/reader/activity/SplashActivity.java
  22. 54 7
      app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java
  23. 1 1
      app/src/main/java/com/edufound/reader/application/EApplication.java
  24. 20 2
      app/src/main/java/com/edufound/reader/bean/ChannelCodeEnum.java
  25. 6 0
      app/src/main/java/com/edufound/reader/contract/LoginAlertContract.java
  26. 3 0
      app/src/main/java/com/edufound/reader/contract/SplashContract.java
  27. 1 3
      app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java
  28. 7 1
      app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java
  29. 16 18
      app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenterVersionThree.java
  30. 0 1
      app/src/main/java/com/edufound/reader/presenter/CommentPresenter.java
  31. 149 8
      app/src/main/java/com/edufound/reader/presenter/LoginAlertPresenter.java
  32. 16 10
      app/src/main/java/com/edufound/reader/presenter/MainPresenter.java
  33. 1 2
      app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java
  34. 1 6
      app/src/main/java/com/edufound/reader/presenter/PayPresenter.java
  35. 4 7
      app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java
  36. 7 8
      app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java
  37. 79 0
      app/src/main/java/com/edufound/reader/presenter/SplashPresenter.java
  38. 0 2
      app/src/main/java/com/edufound/reader/services/RecordServices.java
  39. 2 2
      app/src/main/java/com/edufound/reader/util/Consts.java
  40. 15 11
      app/src/main/java/com/edufound/reader/util/EfunboxUtil.java
  41. 80 0
      app/src/main/java/com/edufound/reader/util/LongClickUtils.java
  42. 17 5
      app/src/main/java/com/edufound/reader/util/OkHttpClient.java
  43. 二進制
      app/src/main/res/drawable/activity_agreement_btngb.png
  44. 121 1
      app/src/main/res/layout/activity_splash.xml

+ 46 - 6
app/build.gradle

@@ -3,23 +3,23 @@ plugins {
 }
 
 def releaseTime() {
-    return new Date().format("yyyyMMddHHmmss", TimeZone.getTimeZone("UTC"))
+    return new Date().format("yyyyMMddHHmmss", TimeZone.getTimeZone("CTT"))
 }
 
 android {
-    compileSdkVersion 30
+    compileSdkVersion 31
 
     defaultConfig {
         applicationId "com.edufound.reader"
         minSdkVersion 21 //>23导致无法直接签名
-        targetSdkVersion 30
-        versionCode 31
-        versionName "3.1"
+        targetSdkVersion 31
+        versionCode 32
+        versionName "3.2"
         flavorDimensions "versionCode"
         manifestPlaceholders = [UMENG_CHANNEL_VALUE: "2006"]//添加一个默认渠道号
         ndk {
             //只有联想pad需要arm64-v8a,小米音箱、天猫音箱、百度音箱、不需要arm64-v8a
-            abiFilters "armeabi-v7a", "arm64-v8a", "armeabi", "x86", "x86_64"
+            abiFilters "armeabi-v7a",  "armeabi","x86","x86_64"
         }
         multiDexEnabled true
     }
@@ -58,6 +58,12 @@ android {
                             newoutputFile = "\\小爱音响\\"
                         } else if (channel == ("3004")) {
                             newoutputFile = "\\联想pad\\"
+                        } else if (channel == ("3007")) {
+                            newoutputFile = "\\京东方\\"
+                        } else if (channel == ("3008")) {
+                            newoutputFile = "\\华为pad联运\\"
+                        } else if (channel == ("3009")) {
+                            newoutputFile = "\\步步高\\"
                         }
                         output.outputFileName = new File(newoutputFile, fileName)
                     }
@@ -73,6 +79,13 @@ android {
             zipAlignEnabled true
         }
     }
+    packagingOptions {
+        doNotStrip "*/armeabi/*.so"
+        doNotStrip "*/armeabi-v7a/*.so"
+        doNotStrip "*/arm64-v8a/*.so"
+        doNotStrip "*/x86/*.so"
+        doNotStrip "*/x86_64/*.so"
+    }
 
 
     sourceSets {
@@ -131,6 +144,33 @@ android {
                     appIcon: "@drawable/icon",
             ]
         }
+
+        //京东方
+        channel_jingdongfang {
+            signingConfig signingConfigs.efunboxKey
+            manifestPlaceholders = [
+                    appCode: "3007",
+                    appIcon: "@drawable/icon",
+            ]
+        }
+
+        //华为Pad联运
+        channel_huawei {
+            applicationIdSuffix ".huawei"
+            signingConfig signingConfigs.efunboxKey
+            manifestPlaceholders = [
+                    appCode: "3008",
+                    appIcon: "@drawable/icon",
+            ]
+        }
+        //华为Pad联运
+        channel_bubugao {
+            signingConfig signingConfigs.efunboxKey
+            manifestPlaceholders = [
+                    appCode: "3009",
+                    appIcon: "@drawable/icon",
+            ]
+        }
     }
     productFlavors.all {
         flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: manifestPlaceholders.appCode, icon: manifestPlaceholders.appIcon]

二進制
app/libs/arm64-v8a/libijkffmpeg.so


二進制
app/libs/arm64-v8a/libijkplayer.so


二進制
app/libs/arm64-v8a/libijksdl.so


二進制
app/libs/armeabi-v7a/libijkffmpeg.so


二進制
app/libs/armeabi-v7a/libijkplayer.so


二進制
app/libs/armeabi-v7a/libijksdl.so


二進制
app/libs/x86/libijkffmpeg.so


二進制
app/libs/x86/libijkplayer.so


二進制
app/libs/x86/libijksdl.so


二進制
app/libs/x86_64/libijkffmpeg.so


二進制
app/libs/x86_64/libijkplayer.so


二進制
app/libs/x86_64/libijksdl.so


二進制
app/src/activityLoginAlert/drawable/activity_loginalertqr_edit_bg.png


+ 252 - 0
app/src/fragmentUser/layout/activity_alert_loginqr.xml

@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/activity_loginalert_rootview"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/translucent_background"
+    android:clickable="true"
+    android:focusableInTouchMode="true">
+
+
+    <FrameLayout
+        android:id="@+id/frameLayout"
+        android:layout_width="720dp"
+        android:layout_height="560dp"
+        android:layout_gravity="center"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+
+        <FrameLayout
+            android:layout_width="690dp"
+            android:layout_height="515dp"
+            android:layout_gravity="center">
+
+            <ImageView
+                android:layout_width="690dp"
+                android:layout_height="515dp"
+                android:layout_gravity="center"
+                android:src="@drawable/activity_loginalert_bg"></ImageView>
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <LinearLayout
+                    android:id="@+id/activity_loginalertqr_phonenumber"
+                    android:layout_width="wrap_content"
+                    android:layout_height="50dp"
+                    android:layout_marginTop="35dp"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintHorizontal_bias="0.18"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="手机号登录"
+                        android:textColor="#FF8400"
+                        android:textSize="30dp"
+                        android:textStyle="bold"></TextView>
+
+                    <com.edufound.reader.cusview.RoundFrameLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="8dp"
+                        android:layout_marginLeft="40dp"
+                        android:layout_marginRight="40dp"
+                        android:background="#FF9625"
+                        app:radio="4"></com.edufound.reader.cusview.RoundFrameLayout>
+
+                </LinearLayout>
+
+
+                <LinearLayout
+                    android:id="@+id/activity_loginalertqr_qrcode"
+                    android:layout_width="wrap_content"
+                    android:layout_height="50dp"
+                    android:layout_marginTop="35dp"
+                    android:orientation="vertical"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintHorizontal_bias="0.82"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="微信扫码登录"
+                        android:textColor="#FF8400"
+                        android:textSize="30dp"
+                        android:textStyle="bold"></TextView>
+
+                    <com.edufound.reader.cusview.RoundFrameLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="8dp"
+                        android:layout_marginLeft="40dp"
+                        android:layout_marginRight="40dp"
+                        android:background="#FF9625"
+                        app:radio="4"></com.edufound.reader.cusview.RoundFrameLayout>
+
+                </LinearLayout>
+
+
+                <!-- 手机号登录layout -->
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/activity_loginalertqr_phonenumber_layout"
+                    android:layout_width="wrap_content"
+                    android:layout_height="380dp"
+                    android:layout_marginTop="120dp"
+                    android:visibility="visible"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent">
+
+
+                    <FrameLayout
+                        android:layout_width="568dp"
+                        android:layout_height="78dp"
+                        android:layout_marginTop="16dp"
+                        android:background="@drawable/activity_loginalertqr_edit_bg"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent">
+
+                        <EditText
+                            android:id="@+id/activity_loginalert_userphone_edit"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:background="@null"
+                            android:gravity="center|left"
+                            android:hint="输入手机号码"
+                            android:inputType="numberSigned"
+                            android:maxLength="11"
+                            android:paddingLeft="40dp"
+                            android:textColorHint="#333333"
+                            android:textSize="30dp"></EditText>
+                    </FrameLayout>
+
+                    <LinearLayout
+                        android:layout_width="568dp"
+                        android:layout_height="78dp"
+                        android:background="@drawable/activity_loginalertqr_edit_bg"
+                        android:orientation="horizontal"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:layout_constraintVertical_bias="0.42000002">
+
+                        <EditText
+                            android:id="@+id/activity_loginalert_getvercode_edit"
+                            android:layout_width="350dp"
+                            android:layout_height="match_parent"
+                            android:background="@null"
+                            android:gravity="center|left"
+                            android:hint="输入验证码"
+                            android:inputType="numberSigned"
+                            android:maxLength="4"
+                            android:paddingLeft="40dp"
+                            android:textColorHint="#333333"
+                            android:textSize="30dp"></EditText>
+
+                        <FrameLayout
+                            android:id="@+id/activity_loginalert_getvercode"
+                            android:layout_width="200dp"
+                            android:layout_height="60dp"
+                            android:layout_gravity="center|right"
+                            android:layout_marginRight="25dp"
+                            android:background="@drawable/activity_loginalert_verificationcode_bg">
+
+                            <TextView
+                                android:id="@+id/activity_loginalert_getvercode_text"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:gravity="center"
+                                android:text="获取验证码"
+                                android:textColor="@color/white"
+                                android:textSize="30dp"></TextView>
+                        </FrameLayout>
+                    </LinearLayout>
+
+                    <FrameLayout
+                        android:id="@+id/activity_loginalert_login"
+                        android:layout_width="328dp"
+                        android:layout_height="80dp"
+                        android:layout_marginBottom="44dp"
+                        android:background="@drawable/activity_loginalert_btn_ok_bg"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:gravity="center"
+                            android:text="登 录"
+                            android:textColor="@color/white"
+                            android:textSize="34dp"></TextView>
+                    </FrameLayout>
+
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+                <!-- 手机号登录layout结束-->
+
+
+                <!-- 微信扫码登录layout-->
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/activity_loginalertqr_qrcode_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="380dp"
+                    android:layout_marginTop="120dp"
+                    android:visibility="gone"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent">
+
+                    <FrameLayout
+                        android:layout_width="331dp"
+                        android:layout_height="331dp"
+                        android:background="@color/white"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent">
+
+                        <ImageView
+                            android:id="@+id/activity_loginalertqr_qrcode_layout_img"
+                            android:layout_width="293dp"
+                            android:layout_height="293dp"
+                            android:layout_gravity="center"
+                            android:background="@color/gray"></ImageView>
+
+
+                    </FrameLayout>
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+                <!-- 微信扫码登录layout结束-->
+
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </FrameLayout>
+
+        <ImageView
+            android:id="@+id/activity_loginalert_close"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:layout_gravity="top|right"
+            android:src="@drawable/activity_loginalert_close"></ImageView>
+    </FrameLayout>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -9,7 +9,8 @@
     <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 切换⽹络通道 -->
-    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
+    <uses-permission
+        android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
         tools:ignore="ProtectedPermissions" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 本地信息缓存 -->
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 开关wifi状态,解决国内机型移动⽹络权限问题需要 -->
@@ -42,6 +43,7 @@
         <activity
             android:name=".activity.SplashActivity"
             android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
+            android:exported="true"
             android:launchMode="singleTop"
             android:maxAspectRatio="2.1"
             android:resizeableActivity="false"
@@ -118,6 +120,18 @@
             android:screenOrientation="landscape"
             android:theme="@style/efunboxTransparentLoginAlert"
             android:windowSoftInputMode="adjustNothing|stateHidden" />
+
+        <activity
+            android:name=".activity.LoginQRAlertActivity"
+            android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
+            android:label=""
+            android:launchMode="singleTask"
+            android:maxAspectRatio="2.1"
+            android:resizeableActivity="false"
+            android:screenOrientation="landscape"
+            android:theme="@style/efunboxTransparentLoginAlert"
+            android:windowSoftInputMode="adjustNothing|stateHidden" />
+
         <!-- 我的收藏界面 -->
         <activity
             android:name=".activity.MyCollectionActivity"

+ 6 - 0
app/src/main/java/com/edufound/reader/activity/LoginAlertActivity.java

@@ -31,9 +31,15 @@ import java.util.HashMap;
 import androidx.annotation.NonNull;
 import androidx.appcompat.widget.AppCompatCheckBox;
 import androidx.constraintlayout.widget.ConstraintLayout;
+
 import io.reactivex.rxjava3.annotations.Nullable;
 import io.reactivex.rxjava3.functions.Consumer;
 
+
+/**
+ * 废弃登录界面1.0,只有手机号登录
+ */
+@Deprecated
 public class LoginAlertActivity extends BaseMvpActivity<LoginAlertPresenter> implements LoginAlertContract.View {
 
     Activity mActivity;

+ 210 - 0
app/src/main/java/com/edufound/reader/activity/LoginQRAlertActivity.java

@@ -0,0 +1,210 @@
+package com.edufound.reader.activity;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Color;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.appcompat.widget.AppCompatCheckBox;
+import androidx.constraintlayout.widget.ConstraintLayout;
+
+import com.edufound.reader.R;
+import com.edufound.reader.annotation.BindView;
+import com.edufound.reader.base.BaseMvpActivity;
+import com.edufound.reader.contract.LoginAlertContract;
+import com.edufound.reader.presenter.LoginAlertPresenter;
+import com.edufound.reader.util.Consts;
+import com.jakewharton.rxbinding4.view.RxView;
+import com.jakewharton.rxbinding4.widget.RxTextView;
+
+import io.reactivex.rxjava3.functions.Consumer;
+
+
+/**
+ * 包含手机号登录和扫码登录
+ */
+public class LoginQRAlertActivity extends BaseMvpActivity<LoginAlertPresenter> implements LoginAlertContract.View {
+
+    Activity mActivity;
+    @BindView(id = R.id.activity_loginalert_rootview)
+    ConstraintLayout mRootView;
+    @BindView(id = R.id.activity_loginalert_userphone_edit)
+    EditText mEditPhone;
+    @BindView(id = R.id.activity_loginalert_getvercode_edit)
+    EditText mEditVCode;
+    @BindView(id = R.id.activity_loginalert_getvercode)
+    FrameLayout mGetVCode;
+    @BindView(id = R.id.activity_loginalert_getvercode_text)
+    TextView mGetVCodeText;
+    @BindView(id = R.id.activity_loginalert_login)
+    FrameLayout mLoginBtn;
+    @BindView(id = R.id.activity_loginalert_close)
+    ImageView mCloseImg;
+
+    @BindView(id = R.id.activity_loginalertqr_phonenumber)
+    LinearLayout mPhoneNumTab;
+    @BindView(id = R.id.activity_loginalertqr_phonenumber_layout)
+    ConstraintLayout mPhoneNumLayout;
+
+    @BindView(id = R.id.activity_loginalertqr_qrcode)
+    LinearLayout mQrCodeTab;
+
+    @BindView(id = R.id.activity_loginalertqr_qrcode_layout)
+    ConstraintLayout mQRLayout;
+
+    @BindView(id = R.id.activity_loginalertqr_qrcode_layout_img)
+    ImageView mQRImg;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.activity_alert_loginqr;
+    }
+
+    @SuppressLint("AutoDispose")
+    @Override
+    public void initView() {
+        mActivity = this;
+        mPresenter = new LoginAlertPresenter();
+        mPresenter.attachView(this);
+        addUiClickListener(mCloseImg, o -> {
+            finish();
+            hideSoftInput(mGetVCode);
+        });
+        addUiClickListener(mGetVCode, o -> {
+            mPresenter.getVCode(mEditPhone.getText().toString());
+//            Toast.makeText(mActivity, "click 获取验证码", Toast.LENGTH_SHORT).show();
+        });
+        addUiClickListener(mLoginBtn, o -> {
+            mPresenter.Login(mEditPhone.getText().toString(), mEditVCode.getText().toString());
+        });
+        RxTextView.textChanges(mEditPhone).subscribe(new Consumer<CharSequence>() {
+            @Override
+            public void accept(CharSequence text) throws Exception {
+            }
+        });
+        RxTextView.textChanges(mEditVCode).subscribe(new Consumer<CharSequence>() {
+            @Override
+            public void accept(CharSequence text) throws Exception {
+            }
+        });
+
+        RxView.focusChanges(mEditPhone).subscribe(hasFocus -> {
+            if (!hasFocus) {
+                hideSoftInput(mEditPhone);
+            }
+        });
+        RxView.focusChanges(mEditVCode).subscribe(hasFocus -> {
+            if (!hasFocus) {
+                hideSoftInput(mEditVCode);
+            }
+        });
+        mPhoneNumTab.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mQRLayout.setVisibility(View.GONE);
+                mPhoneNumLayout.setVisibility(View.VISIBLE);
+                ((TextView) mPhoneNumTab.getChildAt(0)).setTextColor(Color.parseColor("#FF8400"));
+                mPhoneNumTab.getChildAt(1).setVisibility(View.VISIBLE);
+                ((TextView) mQrCodeTab.getChildAt(0)).setTextColor(Color.parseColor("#333333"));
+                mQrCodeTab.getChildAt(1).setVisibility(View.INVISIBLE);
+            }
+        });
+        mQrCodeTab.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mPhoneNumLayout.setVisibility(View.GONE);
+                mQRLayout.setVisibility(View.VISIBLE);
+                ((TextView) mQrCodeTab.getChildAt(0)).setTextColor(Color.parseColor("#FF8400"));
+                mQrCodeTab.getChildAt(1).setVisibility(View.VISIBLE);
+                ((TextView) mPhoneNumTab.getChildAt(0)).setTextColor(Color.parseColor("#333333"));
+                mPhoneNumTab.getChildAt(1).setVisibility(View.INVISIBLE);
+                mPresenter.showLoginQRCode(mQRImg);
+
+            }
+        });
+        mPhoneNumTab.performClick();
+    }
+
+    @Override
+    public void onGetDisconnect() {
+
+    }
+
+    @Override
+    public void onGetMobileConnect() {
+
+    }
+
+    @Override
+    public void onGetWifiConnect() {
+
+    }
+
+
+    @Override
+    public void showLoading() {
+
+    }
+
+    @Override
+    public void hideLoading() {
+
+    }
+
+    @Override
+    public void onError(String errMessage) {
+
+    }
+
+    @Override
+    public Activity getActivity() {
+        return mActivity;
+    }
+
+    @Override
+    public ConstraintLayout getConstraintLayoutView() {
+        return mRootView;
+    }
+
+    @Override
+    public AppCompatCheckBox getCheckBox() {
+        return null;
+    }
+
+    @Override
+    public TextView getVCodeText() {
+        return mGetVCodeText;
+    }
+
+
+    @Override
+    protected void onDestroy() {
+        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm != null) {
+            imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
+        }
+        super.onDestroy();
+        mPresenter.activityDestory();
+    }
+
+    @Override
+    public ViewGroup getRootView() {
+        return findViewById(android.R.id.content);
+    }
+
+
+    private void hideSoftInput(View view) {
+        InputMethodManager manager = ((InputMethodManager) Consts.getmApplicAtion().getSystemService(Context.INPUT_METHOD_SERVICE));
+        if (manager != null) {
+            manager.hideSoftInputFromWindow(view.getWindowToken(), 0);
+        }
+    }
+}

+ 2 - 2
app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java

@@ -121,6 +121,7 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
         intoPage = params.getString("intoPage", "default");
         mOtherId = params.getString("other_uid");
         mPresenter.setBackRecordId(params.getString("record_id"));
+        mPresenter.getOtherRecordList(mOtherId);
 
     }
 
@@ -168,7 +169,6 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
     @Override
     protected void onDestroy() {
         isNeedLoad = true;
-        Logger.e("intoPage:" + intoPage);
         if (intoPage.equals("RecommendFragment")) {
             mPresenter.sendBackReceiver(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
         } else if (intoPage.equals("MyFollowActivity")) {
@@ -196,7 +196,7 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
     @Override
     protected void onResume() {
         super.onResume();
-        mPresenter.getOtherRecordList(mOtherId);
+
         mPresenter.getOtherUserInfo(mOtherId);
     }
 

+ 0 - 2
app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java

@@ -70,7 +70,6 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
         } else {
             Bundle params = getIntent().getBundleExtra("params_bundle");
             into_Page = params.getString("intoPage");
-            Logger.e("into_Page:" + into_Page);
             data_Json = params.getString("dataJson");
             if (data_Json.equals("getmmkv")) {
                 data_Json = MMKVUtil.getInstance().decodeString("video_data");
@@ -126,7 +125,6 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
 
     @Override
     protected void onDestroy() {
-        Logger.e("播放页面被关了");
         MMKVUtil.getInstance().removeKey("video_data");
         BackPageReceiver.unRegisterReceiver(this);
         if (ThroughUtil.mThroughTypeBean != null && ThroughUtil.mThroughTypeBean.getmThroughType().equals(ThroughType.TYPEC.getTypeCode())) {

+ 36 - 1
app/src/main/java/com/edufound/reader/activity/SplashActivity.java

@@ -5,13 +5,19 @@ import android.graphics.drawable.BitmapDrawable;
 import android.os.Message;
 import android.view.MotionEvent;
 import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.TextView;
 
 import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
 
 import com.edufound.reader.R;
+import com.edufound.reader.annotation.BindView;
+import com.edufound.reader.application.EApplication;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.SplashContract;
 import com.edufound.reader.presenter.SplashPresenter;
+import com.edufound.reader.util.MMKVUtil;
 import com.orhanobut.logger.Logger;
 import com.willy.ratingbar.RotationRatingBar;
 
@@ -20,6 +26,16 @@ import java.util.logging.Handler;
 public class SplashActivity extends BaseMvpActivity<SplashPresenter> implements SplashContract.View {
     Activity mActivity;
 
+    @BindView(id = R.id.activity_splash_agreement_layout)
+    ConstraintLayout mAgreementLayout;
+
+    @BindView(id = R.id.activity_splash_server_text)
+    TextView mServText;
+    @BindView(id = R.id.activity_splash_agreement_cancel)
+    FrameLayout mAgreementCancel;
+    @BindView(id = R.id.activity_splash_agreement_ok)
+    FrameLayout mAgreementOk;
+
     @Override
     public int getLayoutId() {
         return R.layout.activity_splash;
@@ -30,7 +46,26 @@ public class SplashActivity extends BaseMvpActivity<SplashPresenter> implements
         mActivity = this;
         mPresenter = new SplashPresenter();
         mPresenter.attachView(this);
-        mPresenter.getUserInfo(getIntent());
+        mPresenter.initServiceText(mServText);
+
+
+        if (MMKVUtil.getInstance().decodeBoolean("agreement")) {
+            //这里同意过了,可以直接跳转了
+            mPresenter.getUserInfo(getIntent());
+        } else {
+            //没有同意过,展示UI
+            mAgreementLayout.setVisibility(View.VISIBLE);
+            addUiClickListener(mAgreementOk, o -> {
+                MMKVUtil.getInstance().encode("agreement", true);
+                mPresenter.getUserInfo(getIntent());
+            });
+            addUiClickListener(mAgreementCancel, o -> {
+                EApplication.killAppProcess(getActivity());
+                System.exit(1);
+            });
+        }
+
+
     }
 
     @Override

+ 54 - 7
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -4,7 +4,7 @@ import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
-import android.graphics.Color;
+import android.os.Handler;
 import android.text.InputFilter;
 import android.text.TextUtils;
 import android.view.KeyEvent;
@@ -26,7 +26,6 @@ import com.edufound.reader.application.EApplication;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.UserBean;
-import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.UserInfoSettingContract;
 import com.edufound.reader.cusview.CusToast;
 import com.edufound.reader.listener.PopUtilClickListener;
@@ -37,7 +36,8 @@ import com.edufound.reader.presenter.UserInfoSettingPresenter;
 import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
-import com.edufound.reader.util.SizeUtils;
+import com.edufound.reader.util.LongClickUtils;
+import com.edufound.reader.util.MMKVUtil;
 import com.jakewharton.rxbinding4.view.RxView;
 import com.orhanobut.logger.Logger;
 
@@ -103,20 +103,56 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             mActivity.finish();
         });
 
+
         addUiClickListener(mPrivServices, o -> {
             if (mNickName.hasFocus()) {
                 mNickName.clearFocus();
                 return;
             }
+
             Intent intent = new Intent(getActivity(), WebActivity.class);
             intent.putExtra("loadUrl", Consts.getPrivServiceUrl());
             getActivity().startActivity(intent);
         });
+
+
+        {
+            LongClickUtils.setLongClick(new Handler(), mUserHead, 5000, new View.OnLongClickListener() {
+                @Override
+                public boolean onLongClick(View v) {
+                    //todo:补充长按事件的处理逻辑
+                    if (MMKVUtil.getInstance().decodeString("loginVisibility").equals("0")) {
+                        mLoginOut.setVisibility(View.VISIBLE);
+                        MMKVUtil.getInstance().encode("loginVisibility", "1");
+                    } else {
+                        mLoginOut.setVisibility(View.GONE);
+                        MMKVUtil.getInstance().encode("loginVisibility", "0");
+                    }
+                    return true;
+                }
+            }, new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    CusToast.getInstance(mActivity).show("学号:" + Consts.getmConstsUserBean().getEid(), 2000);
+                }
+            });
+
+            //测试用
+            if (MMKVUtil.getInstance().decodeString("loginVisibility").equals("0")) {
+                mLoginOut.setVisibility(View.GONE);
+            } else {
+                mLoginOut.setVisibility(View.VISIBLE);
+            }
+
+        }
+
+
         addUiClickListener(mAgreementServices, o -> {
             if (mNickName.hasFocus()) {
                 mNickName.clearFocus();
                 return;
             }
+
             Intent intent = new Intent(getActivity(), WebActivity.class);
             intent.putExtra("loadUrl", Consts.getAgreementServicesUrl());
             getActivity().startActivity(intent);
@@ -160,10 +196,18 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             });
         } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
             mBindPhoneNumLayout.setVisibility(View.GONE);
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
-            //联想pad
+
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.HUAWEI_LIANYUN.getChannelCode())) {
+
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.BUBUGAO.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
+            mBindPhoneNumLayout.setVisibility(View.GONE);
             mBindWeChat.setVisibility(View.GONE);
         }
+
+
         addUiClickListener(mLoginOut, o -> {
             if (mNickName.hasFocus()) {
                 mNickName.clearFocus();
@@ -177,7 +221,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
 
                 @Override
                 public void clickSubmit(Object obj) {
-                    Toast.makeText(mActivity, "退出账号", Toast.LENGTH_SHORT).show();
+                    CusToast.getInstance(mActivity).show("退出账号", 2000);
                     mPresenter.loginOut();
                 }
             });
@@ -199,7 +243,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
 
                 @Override
                 public void clickSubmit(Object obj) {
-                    Toast.makeText(mActivity, "注销账号", Toast.LENGTH_SHORT).show();
+                    CusToast.getInstance(mActivity).show("注销账号", 2000);
                     mPresenter.userCancellation();
                 }
             });
@@ -391,6 +435,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(11)});
         }
         mNickName.setText(bean.getNickName());
+        mNickName.setTag(bean.getUserId());
         mGrade.setText(EfunboxUtil.getCNGradeByEnum(bean.getGrade()));
 
         if (!TextUtils.isEmpty(bean.getMobile())) {
@@ -469,4 +514,6 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
         super.refUserInfo(bean);
         getUserInfoSuccess(bean);
     }
+
+
 }

+ 1 - 1
app/src/main/java/com/edufound/reader/application/EApplication.java

@@ -63,7 +63,7 @@ public class EApplication extends Application {
             Consts.setmApplicAtion(this);
 
             //初始化异常监听
-            initException();
+//            initException();
 
             XmlPullParserFactory.newInstance().setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
 

+ 20 - 2
app/src/main/java/com/edufound/reader/bean/ChannelCodeEnum.java

@@ -25,11 +25,29 @@ public enum ChannelCodeEnum {
         }
     },
 
-    LENOVO {
-        //小米
+    LENOVO_PAD {
+        //联想
         public String getChannelCode() {//枚举对象实现抽象方法
             return "3004";
         }
+    },
+    JINGDONGFANG {
+        //京东方
+        public String getChannelCode() {//枚举对象实现抽象方法
+            return "3007";
+        }
+    },
+    HUAWEI_LIANYUN {
+        //华为联运
+        public String getChannelCode() {//枚举对象实现抽象方法
+            return "3008";
+        }
+    },
+    BUBUGAO {
+        //步步高
+        public String getChannelCode() {
+            return "3009";
+        }
     };
 
 

+ 6 - 0
app/src/main/java/com/edufound/reader/contract/LoginAlertContract.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.contract;
 
 import android.app.Activity;
+import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.edufound.reader.base.BaseView;
@@ -20,6 +21,8 @@ public interface LoginAlertContract {
         AppCompatCheckBox getCheckBox();
 
         TextView getVCodeText();
+
+
     }
 
     interface Presenter {
@@ -30,5 +33,8 @@ public interface LoginAlertContract {
         void Login(String phoneNum, String vcode);
 
         void activityDestory();
+
+
+        void showLoginQRCode(ImageView img);
     }
 }

+ 3 - 0
app/src/main/java/com/edufound/reader/contract/SplashContract.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.contract;
 
 import android.content.Intent;
+import android.widget.TextView;
 
 import com.edufound.reader.base.BaseView;
 
@@ -13,5 +14,7 @@ public interface SplashContract {
 
     interface Presenter {
         void getUserInfo(Intent intent);
+
+        void initServiceText(TextView textView);
     }
 }

+ 1 - 3
app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java

@@ -215,14 +215,12 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
             mVideoNext.setVisibility(View.GONE);
         } else {
             addUiClickListener(mVideoUp, o -> {
-                Logger.e("上一个视频");
                 mPresenter.scrollToUpFunction(mRecyclerView);
             });
             addUiClickListener(mVideoNext, o -> {
                 mPresenter.checkIsOver();
                 mPresenter.scrollToNextFunction(mRecyclerView, true);
 //                mPresenter.toNext(mRecyclerView);
-                Logger.e("下一个视频");
             });
         }
 
@@ -331,6 +329,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         } else {
             GlideUtils.loadCircleImage(getActivity(), bean.getUser().getAvatar(), mUserHead);
         }
+
         if (bean.getUser().getNickName().length() > 6) {
             mUserPhone.setText(bean.getUser().getNickName().substring(0, 6) + "...");
         } else {
@@ -413,7 +412,6 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         mThumbCount.setText(bean.getUserRead().getLikeAmount());
         addUiClickListener(mCommentLayout, o -> {
             if (EfunboxUtil.checkLogin(getActivity(), getRootView())) {
-                Logger.e("点击了评论");
                 Bundle bundle = new Bundle();
                 bundle.putString("id", bean.getUserRead().getId());
                 toNextActivity(CommentActivity.class, bundle);

+ 7 - 1
app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java

@@ -565,7 +565,7 @@ public class PopWindowUtil {
 
     private static void showDeviceInfo(Activity context) {
         StringBuffer buffer = new StringBuffer();
-        buffer.append("\tchannel:\t" + "\t" + Consts.getUmengChannel() + "\n");
+        buffer.append("\tapk渠道:\t" + "\t" + Consts.getUmengChannel() + "\n");
         buffer.append("\tUUID:\t" + "\t" + DeviceUuidFactory.getUuid() + "\n");
 //        buffer.append("\t设备SN号:\t\t" + DeviceUtil.getSerialNumber() + "\n");
         buffer.append("\t厂商:\t" + "\t" + DeviceUtil.getDeviceBrand() + "\n");
@@ -577,6 +577,12 @@ public class PopWindowUtil {
         buffer.append("\t屏幕高度:\t\t" + DeviceUtil.getHeight(context) + "\n");
         buffer.append("\t屏幕密度:\t\t" + DeviceUtil.getDensity(context) + "\n");
         buffer.append("\t屏幕DPI:\t\t" + DeviceUtil.getDensityDpi(context) + "\n");
+        if (Consts.getmConstsUserBean() != null) {
+            buffer.append("\tUserEid:\t\t" + Consts.getmConstsUserBean().getEid() + "\n");
+            buffer.append("\tUID:\t\t" + Consts.getmConstsUserBean().getUid() + "\n");
+            buffer.append("\t注册渠道:\t\t" + Consts.getmConstsUserBean().getChannel() + "\n");
+        }
+
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode()) && Consts.getmConstsBaiDuUserBean() != null) {
             buffer.append("\t百度UserId:\t\t" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId() + "\n");
         }

+ 16 - 18
app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenterVersionThree.java

@@ -225,22 +225,22 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
 
     @Override
     public void getRecordInfoByIdSetCharacter3(String id) {
-//        if (mView == null) {
-//            return;
-//        }
-//        mModel.getRecordInfoById(mView.getActivity(), id, new Callback() {
-//            @Override
-//            public void onSuccess(HttpInfo info) throws IOException {
-//                HttpResultBean<UserRecordBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean>>() {
-//                }.getType());
-//                mRecommendFragment.getChangeCharacterListener().changeDataList(bean.getData());
-//            }
-//
-//            @Override
-//            public void onFailure(HttpInfo info) throws IOException {
-//                Logger.e("获取单独的失敗了:" + info.getRetDetail());
-//            }
-//        });
+        if (mView == null) {
+            return;
+        }
+        mModel.getRecordInfoById(mView.getActivity(), id, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<UserRecordBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean>>() {
+                }.getType());
+                mRecommendFragment.getChangeCharacterListener().changeDataList(bean.getData());
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("获取单独的失敗了:" + info.getRetDetail());
+            }
+        });
 
     }
 
@@ -267,8 +267,6 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
                     String id = ttt.data.get(ttt.i).getUserRead().getId();
 
                     if (mView != null) {
-
-
                         mModel.getRecordInfoById(mView.getActivity(), id, new Callback() {
                             @Override
                             public void onSuccess(HttpInfo info) throws IOException {

+ 0 - 1
app/src/main/java/com/edufound/reader/presenter/CommentPresenter.java

@@ -138,7 +138,6 @@ public class CommentPresenter extends BasePresenter<CommentContract.View> implem
         mModel.doPosts(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(map), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("发送评论成功:" + info.getRetDetail());
                 HttpResultBean<CommentListReplyBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<CommentListReplyBean>>() {
                 }.getType());
                 mDataList.add(0, bean.getData());

+ 149 - 8
app/src/main/java/com/edufound/reader/presenter/LoginAlertPresenter.java

@@ -12,6 +12,7 @@ import android.text.method.LinkMovementMethod;
 import android.text.style.ClickableSpan;
 import android.view.View;
 import android.widget.FrameLayout;
+import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -21,13 +22,17 @@ import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.HttpResultBean;
+import com.edufound.reader.bean.SignBean;
 import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.contract.LoginAlertContract;
+import com.edufound.reader.cusview.CusToast;
 import com.edufound.reader.interfaces.EfunboxInterfaces;
+import com.edufound.reader.miutil.MiSoundSDKUtil;
 import com.edufound.reader.model.LoginAlertModel;
 import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.DeviceUuidFactory;
 import com.edufound.reader.util.EfunboxUtil;
+import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.MMKVEncodeKey;
 import com.edufound.reader.util.MMKVUtil;
 import com.google.gson.Gson;
@@ -37,6 +42,8 @@ import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
 
+import org.json.JSONObject;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -57,10 +64,13 @@ public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View>
     String mServiceText = "点击登录表示您已阅读并同意《用户隐私政策》和《服务协议》。";
     int getVCode;
     int mVCodeResCount = 60;
+    boolean loginSuccess = false;
+    OrderApiServerImpl mOrderApi;
 
     public LoginAlertPresenter() {
         mModel = new LoginAlertModel();
         mUserApi = new UserApiServerImpl();
+        mOrderApi = new OrderApiServerImpl();
     }
 
 
@@ -75,9 +85,7 @@ public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View>
             style.setSpan(new ClickableSpan() {
                 @Override
                 public void onClick(@NonNull View widget) {
-                    setClickListener(widget, o -> {
-                        lookPrivacy(finalI);
-                    });
+                    lookPrivacy(finalI);
                 }
 
                 @Override
@@ -138,9 +146,14 @@ public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View>
                 Toast.makeText(mView.getActivity(), "请输入验证码", Toast.LENGTH_SHORT).show();
                 return;
             } else {
-                if (!mView.getCheckBox().isChecked()) {
-                    Toast.makeText(mView.getActivity(), "请勾选用户隐私政策和服务协议", Toast.LENGTH_SHORT).show();
-                    return;
+
+
+                if (mView.getActivity().getLocalClassName().contains("LoginAlertActivity")) {
+
+                    if (!mView.getCheckBox().isChecked()) {
+                        Toast.makeText(mView.getActivity(), "请勾选用户隐私政策和服务协议", Toast.LENGTH_SHORT).show();
+                        return;
+                    }
                 }
 //                if (Integer.valueOf(inputVCode) == getVCode || Integer.valueOf(inputVCode) == 9999) {
                 //输入的和返回的是一样的
@@ -161,8 +174,7 @@ public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View>
                 mUserApi.registerMobileByVCode(mView.getActivity(), new Gson().toJson(params), new Callback() {
                     @Override
                     public void onSuccess(HttpInfo info) throws IOException {
-//                            Logger.e("注册成功:" + info.getRetDetail());
-                        Toast.makeText(mView.getActivity(), "登录成功", Toast.LENGTH_SHORT).show();
+                        CusToast.getInstance(mView.getActivity()).show("登录成功", 3000);
                         HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
                         }.getType());
                         Consts.setUID(bean.getData().getUid());
@@ -208,9 +220,37 @@ public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View>
     @Override
     public void activityDestory() {
         mLoginAlertHandler.removeMessages(LoginAlertModel.CHANGE_VCODE_TEXT);
+        mLoginAlertHandler.removeMessages(0x1313);
         mLoginAlertHandler = null;
     }
 
+    @Override
+    public void showLoginQRCode(ImageView img) {
+        mUserApi.getLoginQRCode(new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                Logger.e("info:" + info.getRetDetail());
+                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                }.getType());
+                Logger.e("bean.getData:" + bean.getData());
+                if (bean.getCode().equals("200") && bean.getSuccess()) {
+                    Logger.e("加载二维码");
+                    GlideUtils.loadImageSizeKipMemoryCache(mView.getActivity(), bean.getData(), img);
+                    loginSuccess = false;
+                    mLoginAlertHandler.sendEmptyMessageDelayed(0x1313, 1000);
+                } else {
+                    Logger.e("加载二维码失败");
+                }
+
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("获取登录二维码失败");
+            }
+        });
+    }
+
     Handler mLoginAlertHandler = new Handler(new Handler.Callback() {
         @Override
         public boolean handleMessage(@androidx.annotation.NonNull Message message) {
@@ -229,6 +269,107 @@ public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View>
                     }
 
                     break;
+
+
+                case 0x1313:
+                    if (loginSuccess) {
+                        mLoginAlertHandler.removeMessages(0x1313);
+                        return true;
+                    }
+                    mUserApi.isLogin(mView.getActivity(), DeviceUuidFactory.getUuid(), new Callback() {
+                        @Override
+                        public void onSuccess(HttpInfo info) throws IOException {
+
+                            try {
+                                JSONObject object = new JSONObject(info.getRetDetail());
+                                if (object.getString("code").equals("200") || object.getInt("code") == 200) {
+                                    //200算成功
+                                    mLoginAlertHandler.removeMessages(0x1313);
+                                    loginSuccess = true;
+                                    HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
+                                    }.getType());
+                                    Consts.setUID(bean.getData().getUid());
+                                    //用户是否登录,登录了,创建Consts的userbean
+                                    Consts.setmConstsUserBean(bean.getData());
+                                    mUserApi.loginSign(null, new Callback() {
+                                        @Override
+                                        public void onSuccess(HttpInfo info) throws IOException {
+                                            try {
+                                                HttpResultBean<SignBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<SignBean>>() {
+                                                }.getType());
+                                                if (bean.getData().getIsSign()) {
+                                                    CusToast.getInstance(Consts.getmApplicAtion()).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000);
+                                                }
+                                            } catch (Exception e) {
+                                                e.printStackTrace();
+                                            } finally {
+                                                if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
+                                                    //不是小度的,检查权限
+                                                    if (Consts.getmConstsUserBean() != null) {
+                                                        mOrderApi.getAuth(new Callback() {
+                                                            @Override
+                                                            public void onSuccess(HttpInfo info) throws IOException {
+                                                                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                                                                }.getType());
+                                                                if (!TextUtils.isEmpty(bean.getData())) {
+                                                                    Consts.setIsYFVip(true);
+                                                                } else {
+                                                                    Consts.setIsYFVip(false);
+                                                                }
+                                                                //关闭界面
+                                                                mView.getActivity().finish();
+                                                            }
+
+                                                            @Override
+                                                            public void onFailure(HttpInfo info) throws IOException {
+                                                                Logger.e("查询权限接口失败");
+                                                                Consts.setIsYFVip(false);
+                                                                mView.getActivity().finish();
+                                                            }
+                                                        });
+                                                    }
+                                                }
+
+                                            }
+
+                                        }
+
+                                        @Override
+                                        public void onFailure(HttpInfo info) throws IOException {
+                                            CusToast.getInstance(Consts.getmApplicAtion()).show("其他错误:" + info.getRetDetail(), 2000);
+                                            //关闭界面
+                                            mView.getActivity().finish();
+                                        }
+                                    });
+                                } else if (object.getString("code").equals("300") || object.getInt("code") == 300) {
+                                    //暂无数据
+                                    Logger.e("暂无数据");
+                                    mLoginAlertHandler.sendEmptyMessageDelayed(0x1313, 1000);
+                                    return;
+                                } else {
+                                    CusToast.getInstance(Consts.getmApplicAtion()).show(object.getString("code"), 2000);
+                                    mView.getActivity().finish();
+                                }
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                                Logger.e("onFailure--info.getRetDetail():" + info.getRetDetail());
+                                CusToast.getInstance(Consts.getmApplicAtion()).show(e.getMessage(), 2000);
+                                //关闭界面
+                                mView.getActivity().finish();
+                            } finally {
+
+                            }
+                        }
+
+                        @Override
+                        public void onFailure(HttpInfo info) throws IOException {
+//                            CusToast.getInstance(Consts.getmApplicAtion()).show(info.getRetDetail(), 2000);
+                            Logger.e("onFailure--info.getRetDetail():" + info.getRetDetail());
+                            //关闭界面
+                            mView.getActivity().finish();
+                        }
+                    });
+                    break;
             }
             return false;
         }

+ 16 - 10
app/src/main/java/com/edufound/reader/presenter/MainPresenter.java

@@ -111,7 +111,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                     changeFragmentLayout(mUserFragment);
                     mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
                 } else {
-                    Logger.e("");
                     if (radioGroup != null) {
                         if (radioGroup.getChildAt(mRadioCheckIndex) != null) {
                             ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
@@ -248,19 +247,25 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
     @Override
     public void showSelectGradeWindow() {
 
-        PopWindowUtil.showSelectGradeWindow(mView.getActivity(), mView.getRootView(), 0, new PopUtilClickListener() {
+        mView.getRootView().postDelayed(new Runnable() {
             @Override
-            public void clickCancel() {
+            public void run() {
+                PopWindowUtil.showSelectGradeWindow(mView.getActivity(), mView.getRootView(), 0, new PopUtilClickListener() {
+                    @Override
+                    public void clickCancel() {
 
-            }
+                    }
 
-            @Override
-            public void clickSubmit(Object object) {
+                    @Override
+                    public void clickSubmit(Object object) {
 //                Toast.makeText(mView.getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
-                MMKVUtil.getInstance().encode(MMKVEncodeKey.USER_GRADE, EfunboxUtil.getEnumByCNGrade(object.toString()));
-                getLoginEvent();
+                        MMKVUtil.getInstance().encode(MMKVEncodeKey.USER_GRADE, EfunboxUtil.getEnumByCNGrade(object.toString()));
+                        getLoginEvent();
+                    }
+                });
             }
-        });
+        }, 500);
+
 
     }
 
@@ -276,6 +281,7 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                         //没有用户数据
                         if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) {
                             //没有选择过年纪,选择年纪
+                            Logger.e("没有选择过年纪,选择年纪");
                             showSelectGradeWindow();
                         } else {
                             //选择过年纪。无处理
@@ -319,7 +325,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 } catch (JSONException e) {
                     e.printStackTrace();
                 } finally {
-
                     //有没有用户都先检查活动
                     EfunboxUtil.checkEvents(mView.getActivity());
                     getLoginEvent();
@@ -334,6 +339,7 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) {
                     //没有选择过年纪,选择年纪
                     showSelectGradeWindow();
+                    Logger.e("onFailureonFailureonFailureonFailure,选择年纪");
                 } else {
                     //选择过年纪。无处理
                 }

+ 1 - 2
app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java

@@ -351,7 +351,6 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
             public void onSuccess(HttpInfo info) throws IOException {
                 HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
                 }.getType());
-                Logger.e("是否是VIP:" + info.getRetDetail());
                 if (!TextUtils.isEmpty(bean.getData())) {
                     Consts.setIsYFVip(true);
                     mView.getIsBuySuccess(TimeUtil.timeStamp2Date(Long.valueOf(bean.getData()), "yyyy-MM-dd"));
@@ -439,7 +438,7 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())
                 || Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())
                 || Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())
-                || Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())
+                || Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode())
         ) {
             getAuth();
         }

+ 1 - 6
app/src/main/java/com/edufound/reader/presenter/PayPresenter.java

@@ -10,22 +10,17 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import com.baidu.duer.botsdk.BotSdk;
 import com.edufound.reader.R;
 import com.edufound.reader.apiserver.OrderApiServerImpl;
-import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.PayResultBean;
-import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.PayContract;
 import com.edufound.reader.cusview.CusToast;
 import com.edufound.reader.model.PayModel;
 import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.DeviceUuidFactory;
-import com.edufound.reader.util.QRCodeUtil;
-import com.edufound.reader.util.SizeUtils;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
@@ -150,7 +145,7 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
             createOrderMap.put("productId", mPayResult.get(position).getId());
             createOrderMap.put("uid", Consts.getUID());
 
-            if (Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
+            if (Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode())) {
                 //创建联想订单
                 Logger.e("创建联想订单");
                 mOrderApi.createdOrderByLianXiang(mView.getActivity(), new Gson().toJson(createOrderMap), new Callback() {

+ 4 - 7
app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java

@@ -2,14 +2,12 @@ package com.edufound.reader.presenter;
 
 import android.app.Activity;
 import android.content.Context;
-import android.content.Intent;
 import android.graphics.Rect;
 import android.os.Handler;
 import android.os.Message;
 import android.text.TextUtils;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
 import android.widget.FrameLayout;
@@ -23,7 +21,6 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.edufound.reader.R;
-import com.edufound.reader.activity.MainActivity;
 import com.edufound.reader.adapter.PopupMyOrderAdapter;
 import com.edufound.reader.adapter.RankListItemAdapter;
 import com.edufound.reader.apiserver.OrderApiServerImpl;
@@ -58,13 +55,11 @@ import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 import com.okhttplib.callback.ProgressCallback;
 import com.orhanobut.logger.Logger;
-import com.willy.ratingbar.RotationRatingBar;
 import com.willy.ratingbar.ScaleRatingBar;
 
 import org.json.JSONObject;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -686,8 +681,10 @@ public class PopWindowPresneter {
                                             } finally {
                                                 if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode()) ||
                                                         Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode()) ||
-                                                        Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())||
-                                                        Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())
+                                                        Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode()) ||
+                                                        Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode()) ||
+                                                        Consts.getUmengChannel().equals(ChannelCodeEnum.BUBUGAO.getChannelCode()) ||
+                                                        Consts.getUmengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode())
                                                 ) {
                                                     //义方渠道检查权限
                                                     if (Consts.getmConstsUserBean() != null) {

+ 7 - 8
app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java

@@ -181,7 +181,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                 if (mCurrentPosition == 0) {
 //                    Toast.makeText(mContext, "到顶了", Toast.LENGTH_SHORT).show();
                 } else if (mCurrentPosition == (mTotalSize - 1)) {
-                    Toast.makeText(mContext, "到底了", Toast.LENGTH_SHORT).show();
+//                    Toast.makeText(mContext, "到底了", Toast.LENGTH_SHORT).show();
                 }
 
 //                if (mAdapter.getItemTag(mCurrentPosition).equals("ACTIVITY")) {
@@ -264,8 +264,10 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                 @Override
                 public void run() {
                     if (Consts.isIsYFVip()) {
-                        if (mView.getisViewUI() != null) {
-                            mView.getisViewUI().setVisibility(View.INVISIBLE);
+                        if (mView != null) {
+                            if (mView.getisViewUI() != null) {
+                                mView.getisViewUI().setVisibility(View.INVISIBLE);
+                            }
                         }
                     }
                     if (mView != null) {
@@ -328,9 +330,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                 Logger.e("info:" + info.getRetDetail());
                 Logger.e("info-getRetCode:" + info.getRetCode());
                 //getRetCode==6
-                if (info.getRetCode() == 6 || info.getRetCode() == 4) {
-                    getRecommendDataList();
-                }
+                getRecommendDataList();
 
 //                CusToast.getInstance(mView.getActivity()).show(info.getRetDetail(), 3000);
 //                Toast.makeText(mView.getActivity(), info.getRetDetail(), Toast.LENGTH_SHORT).show();
@@ -365,7 +365,6 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                     mView.getChangeCharacterListener().changeDataList(mDataList.get(mCurrentPosition));
                 }
                 intent.putExtra("position", String.valueOf(mCurrentPosition));
-                Logger.e("发送广播-----");
                 mView.getActivity().sendBroadcast(intent);
             }
 
@@ -574,7 +573,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     public void checkIsOver() {
         if (mCurrentPosition >= mDataList.size() - 1) {
-            Toast.makeText(mContext, "到底了", Toast.LENGTH_SHORT).show();
+//            Toast.makeText(mContext, "到底了", Toast.LENGTH_SHORT).show();
         }
     }
 

+ 79 - 0
app/src/main/java/com/edufound/reader/presenter/SplashPresenter.java

@@ -1,14 +1,23 @@
 package com.edufound.reader.presenter;
 
 import android.content.Intent;
+import android.graphics.Color;
 import android.net.Uri;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.TextPaint;
 import android.text.TextUtils;
+import android.text.method.LinkMovementMethod;
+import android.text.style.ClickableSpan;
+import android.view.View;
+import android.widget.TextView;
 
 import com.baidu.duer.membersdk.MemberSdkManager;
 import com.baidu.duer.membersdk.constant.MemberSdkConstants;
 import com.edufound.reader.activity.MainActivity;
 import com.edufound.reader.activity.RecordActivity;
 import com.edufound.reader.activity.SmallFullVideoActivity;
+import com.edufound.reader.activity.WebActivity;
 import com.edufound.reader.apiserver.ActivityEventServerImpl;
 import com.edufound.reader.apiserver.OrderApiServerImpl;
 import com.edufound.reader.apiserver.UserApiServerImpl;
@@ -33,6 +42,7 @@ import com.edufound.reader.util.MMKVEncodeKey;
 import com.edufound.reader.util.MMKVUtil;
 import com.edufound.reader.util.ThroughUtil;
 import com.google.gson.reflect.TypeToken;
+import com.jakewharton.rxbinding4.view.RxView;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
@@ -41,6 +51,11 @@ import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import io.reactivex.rxjava3.annotations.NonNull;
 
 public class SplashPresenter extends BasePresenter implements SplashContract.Presenter {
 
@@ -167,6 +182,7 @@ public class SplashPresenter extends BasePresenter implements SplashContract.Pre
                     }
                 } catch (JSONException e) {
                     e.printStackTrace();
+                    getYFVip(intent);
                 } finally {
                     //无论如何最后走判断
                     //获取是否是vip
@@ -202,4 +218,67 @@ public class SplashPresenter extends BasePresenter implements SplashContract.Pre
         });
     }
 
+
+    List<Integer> leftBrackets = new ArrayList<>();
+    List<Integer> rightBrackets = new ArrayList<>();
+    String mServiceText = "隐私政策隐私充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了向充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了向你提供内容等服务,充分理解《服务协议》和《隐私政策》各条款。点击同意开始接受我们的服务。";
+
+    @Override
+    public void initServiceText(TextView textView) {
+        textView.setClickable(false);
+        leftBrackets = getChildIndexFromString(mServiceText, "《");
+        rightBrackets = getChildIndexFromString(mServiceText, "》");
+        SpannableStringBuilder style = new SpannableStringBuilder();
+        style.append(mServiceText);
+        for (int i = 0; i < leftBrackets.size(); i++) {
+            final int finalI = i;
+            style.setSpan(new ClickableSpan() {
+                @Override
+                public void onClick(@NonNull View widget) {
+                    lookPrivacy(finalI);
+                }
+
+                @Override
+                public void updateDrawState(@NonNull TextPaint ds) {
+                    ds.setUnderlineText(false);
+                    ds.setColor(Color.parseColor("#68a5dc"));
+                }
+
+            }, leftBrackets.get(i), rightBrackets.get(i) + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+
+        }
+        textView.setText(style);
+        textView.setMovementMethod(LinkMovementMethod.getInstance());
+        textView.setHighlightColor(Color.parseColor("#ffffff"));
+    }
+
+
+    private List<Integer> getChildIndexFromString(String parent, String child) {
+        int startIndex = 0;
+        List<Integer> ids = new ArrayList<>();
+        while (parent.indexOf(child, startIndex) != -1) {
+            //ids.add(startIndex);
+            startIndex = parent.indexOf(child, startIndex);
+            ids.add(startIndex);
+            startIndex = startIndex + child.length();
+        }
+        return ids;
+    }
+
+
+    private void lookPrivacy(int index) {
+        String url = "";
+        switch (index) {
+            case 0:
+                url = Consts.getAgreementServicesUrl();
+                break;
+            case 1:
+                url = Consts.getPrivServiceUrl();
+                break;
+        }
+        Intent intent = new Intent(mView.getActivity(), WebActivity.class);
+        intent.putExtra("loadUrl", url);
+        mView.getActivity().startActivity(intent);
+    }
+
 }

+ 0 - 2
app/src/main/java/com/edufound/reader/services/RecordServices.java

@@ -197,7 +197,6 @@ public class RecordServices extends Service {
             isRecording = false;
             mRecordCallBack.onRecordStop();
         }
-        Logger.e("stopRecord==ret.errId:" + ret.errId);
     }
 
 
@@ -259,7 +258,6 @@ public class RecordServices extends Service {
 
 
     public void desrotyRecord() {
-        Logger.e("desrotyRecord");
         if (mAiengine != null) {
             mAiengine.destroy();
             mAiengine = null;

+ 2 - 2
app/src/main/java/com/edufound/reader/util/Consts.java

@@ -20,9 +20,9 @@ public class Consts {
 
     private static boolean isDebug = false;
 
-    private static String privService = "http://m-xyyf-web.ai160.com/res/protocol/private.htm";
+    private static String privService = "http://m-xyyf-web.ai160.com/res/protocol/private-kwld.htm";
 
-    private static String agreementServices = "http://m-xyyf-web.ai160.com/res/protocol/service.htm";
+    private static String agreementServices = "http://m-xyyf-web.ai160.com/res/protocol/service-kwld.htm";
 
     private static String FinalApiUrl = "http://reader-api.efunbox.cn";
 

+ 15 - 11
app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

@@ -8,18 +8,17 @@ import android.util.DisplayMetrics;
 import android.view.View;
 
 import com.edufound.reader.activity.LoginAlertActivity;
+import com.edufound.reader.activity.LoginQRAlertActivity;
 import com.edufound.reader.activity.PayActivity;
 import com.edufound.reader.activity.TmailPayActivity;
 import com.edufound.reader.activity.WebActivity;
 import com.edufound.reader.apiserver.ActivityEventServerImpl;
 import com.edufound.reader.apiserver.OrderApiServerImpl;
-import com.edufound.reader.bean.ActivityEventBean;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.EventListBean;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.interfaces.EfunboxInterfaces;
-import com.edufound.reader.listener.PopUtilClickListener;
 import com.edufound.reader.miutil.MiSoundSDKUtil;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.presenter.PopWindowPresneter;
@@ -174,17 +173,19 @@ public class EfunboxUtil {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //百度渠道调用百度的授权
             BotRegisterListener.getBaiDuVipInfo();
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
-            //义方/京东调用普通版登录
-            Intent tologin = new Intent(context, LoginAlertActivity.class);
-            context.startActivity(tologin);
         } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
             TMailSDKUtil.TMailLogin(context);
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode()) || Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
-            //小米音响--
-//            Intent tologin = new Intent(context, LoginAlertActivity.class);
-//            context.startActivity(tologin);
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
             PopWindowUtil.miSoundLoginWindow(context, parent, MiSoundSDKUtil.MI_SOUND_QRCODE_TYPE, miSoundLoginCallBack);
+
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.BUBUGAO.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
+            //京东方、联想pad、步步高、义方
+            Intent intent = new Intent(context, LoginQRAlertActivity.class);
+            context.startActivity(intent);
+
         }
     }
 
@@ -203,7 +204,9 @@ public class EfunboxUtil {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //百度渠道调用百度的支付
             BotRegisterListener.payBaiDuVip();
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode()) || Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode()) ||
+                Consts.getUmengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode())) {
             //义方调用普通版支付,联想也用
             Intent topay = new Intent(activity, PayActivity.class);
             activity.startActivity(topay);
@@ -344,6 +347,7 @@ public class EfunboxUtil {
                 } catch (Exception e) {
                     e.printStackTrace();
                 } finally {
+                    Logger.e("发送了设置index的广播");
                     Intent intent = new Intent("com.edufound.reader.main.setindex");
                     context.sendBroadcast(intent);
                 }

+ 80 - 0
app/src/main/java/com/edufound/reader/util/LongClickUtils.java

@@ -0,0 +1,80 @@
+package com.edufound.reader.util;
+
+import android.os.Handler;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnLongClickListener;
+import android.view.View.OnTouchListener;
+
+public class LongClickUtils {
+
+
+    /**
+     * @param handler           外界handler(为了减少handler的泛滥使用,最好全局传handler引用,如果没有就直接传 new Handler())
+     * @param longClickView     被长按的视图(任意控件)
+     * @param delayMillis       长按时间,毫秒
+     * @param longClickListener 长按回调的返回事件
+     */
+    public static void setLongClick(final Handler handler, final View longClickView, final long delayMillis, final OnLongClickListener longClickListener, View.OnClickListener clickListener) {
+        longClickView.setOnTouchListener(new OnTouchListener() {
+            private int TOUCH_MAX = 50;
+            private int mLastMotionX;
+            private int mLastMotionY;
+            private long time;
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                int x = (int) event.getX();
+                int y = (int) event.getY();
+
+                switch (event.getAction()) {
+                    case MotionEvent.ACTION_UP:
+                        // 抬起时,移除已有Runnable回调,抬起就算长按了(不需要考虑用户是否长按了超过预设的时间)
+                        if (System.currentTimeMillis() - time < 400) {
+                            handler.postDelayed(clickR, 20);
+                        }
+                        handler.removeCallbacks(longClickR);
+                        break;
+                    case MotionEvent.ACTION_MOVE:
+                        if (Math.abs(mLastMotionX - x) > TOUCH_MAX
+                                || Math.abs(mLastMotionY - y) > TOUCH_MAX) {
+                            // 移动误差阈值
+                            // xy方向判断
+                            // 移动超过阈值,则表示移动了,就不是长按(看需求),移除 已有的Runnable回调
+                            handler.removeCallbacks(longClickR);
+                        }
+                        break;
+                    case MotionEvent.ACTION_DOWN:
+                        // 每次按下重新计时
+                        // 按下前,先移除 已有的Runnable回调,防止用户多次单击导致多次回调长按事件的bug
+                        time = System.currentTimeMillis();
+                        handler.removeCallbacks(longClickR);
+                        mLastMotionX = x;
+                        mLastMotionY = y;
+                        // 按下时,开始计时
+                        handler.postDelayed(longClickR, delayMillis);
+                        break;
+                }
+                return true;//onclick等其他事件不能用请改这里
+            }
+
+            private Runnable longClickR = new Runnable() {
+                @Override
+                public void run() {
+                    if (longClickListener != null) {// 回调给用户,用户可能传null,需要判断null
+                        longClickListener.onLongClick(longClickView);
+                    }
+                }
+            };
+
+            private Runnable clickR = new Runnable() {
+                @Override
+                public void run() {
+                    if (clickListener != null) {// 回调给用户,用户可能传null,需要判断null
+                        clickListener.onClick(longClickView);
+                    }
+                }
+            };
+        });
+    }
+}

+ 17 - 5
app/src/main/java/com/edufound/reader/util/OkHttpClient.java

@@ -62,12 +62,24 @@ public class OkHttpClient {
 
 
     public static void doGetAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) {
-        if (!info.build().getUrl().contains("posts/list")
-                && !info.build().getUrl().contains("/userRead/check")
-                && !info.build().getUrl().contains("/order/info/")) {
-            Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW);
-            Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent);
+
+        if (activity.getLocalClassName().contains("LoginQRAlertActivity")) {
+            //登录界面
+            if (!info.build().getUrl().contains("/user/isLogin")) {
+                //不是二维码一直查找是否登录,才出现loading
+                Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW);
+                Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent);
+            }
+        } else {
+            if (!info.build().getUrl().contains("posts/list")
+                    && !info.build().getUrl().contains("/userRead/check")
+                    && !info.build().getUrl().contains("/order/info/")) {
+                Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW);
+                Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent);
+            }
         }
+
+
         refHeader();
         OkHttpUtil.getDefault(activity).doGetAsync(info.addHeads(mHeaders).build(), new EfunboxCallBack(callback));
     }

二進制
app/src/main/res/drawable/activity_agreement_btngb.png


+ 121 - 1
app/src/main/res/layout/activity_splash.xml

@@ -1,7 +1,127 @@
 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@drawable/splash_bg">
+    android:background="#50AE74">
+
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/activity_splash_agreement_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#50AE74"
+        android:visibility="gone">
+
+        <com.edufound.reader.cusview.RoundFrameLayout
+            android:layout_width="964dp"
+            android:layout_height="430dp"
+            android:background="@color/white"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:radio="50">
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/white">
+
+                <TextView
+                    android:id="@+id/textView7"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="20dp"
+                    android:background="@color/white"
+                    android:gravity="center"
+                    android:text="用户协议和隐私政策"
+                    android:textColor="@color/black"
+                    android:textSize="22dp"
+                    android:textStyle="bold"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"></TextView>
+
+
+                <TextView
+                    android:id="@+id/activity_splash_server_text"
+                    android:layout_width="820dp"
+                    android:layout_height="190dp"
+                    android:background="@color/white"
+                    android:lineSpacingMultiplier="1.8"
+                    android:textColor="@color/black"
+                    android:textSize="23dp"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/textView7"
+                    app:layout_constraintVertical_bias="0.18"></TextView>
+
+
+                <FrameLayout
+                    android:id="@+id/frameLayout2"
+                    android:layout_width="820dp"
+                    android:layout_height="2dp"
+                    android:background="#DFDFDF"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="@+id/activity_splash_server_text"
+                    app:layout_constraintStart_toStartOf="@+id/activity_splash_server_text"
+                    app:layout_constraintTop_toBottomOf="@+id/activity_splash_server_text"></FrameLayout>
+
+
+                <FrameLayout
+                    android:id="@+id/activity_splash_agreement_cancel"
+                    android:layout_width="163dp"
+                    android:layout_height="52dp"
+                    android:layout_marginStart="150dp"
+                    android:background="@drawable/activity_agreement_btngb"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintHorizontal_bias="0.0"
+                    app:layout_constraintStart_toStartOf="@+id/frameLayout2"
+                    app:layout_constraintTop_toBottomOf="@+id/frameLayout2">
+
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@drawable/activity_agreement_btngb"
+                        android:gravity="center"
+                        android:text="暂不使用"
+                        android:textColor="@color/black"
+                        android:textSize="22dp"></TextView>
+
+                </FrameLayout>
+
+
+                <FrameLayout
+                    android:id="@+id/activity_splash_agreement_ok"
+                    android:layout_width="163dp"
+                    android:layout_height="52dp"
+                    android:layout_marginEnd="150dp"
+                    android:background="@drawable/activity_agreement_btngb"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="@+id/frameLayout2"
+                    app:layout_constraintHorizontal_bias="1.0"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/frameLayout2">
+
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@drawable/activity_agreement_btngb"
+                        android:gravity="center"
+                        android:text="同意"
+                        android:textColor="#0292FF"
+                        android:textSize="22dp"></TextView>
+
+                </FrameLayout>
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </com.edufound.reader.cusview.RoundFrameLayout>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
 
 </FrameLayout>