Procházet zdrojové kódy

1.增加所有版本ijkplayer的so包
2.修改各种monkey跑出来的bug

FailedToRead před 1 rokem
rodič
revize
4db8ab0fc2
54 změnil soubory, kde provedl 447 přidání a 405 odebrání
  1. 0 1
      .idea/gradle.xml
  2. 14 3
      app/build.gradle
  3. binární
      app/libs/arm64-v8a/libijkffmpeg.so
  4. binární
      app/libs/arm64-v8a/libijkplayer.so
  5. binární
      app/libs/arm64-v8a/libijksdl.so
  6. binární
      app/libs/armeabi-v7a/libijkffmpeg.so
  7. binární
      app/libs/armeabi-v7a/libijkplayer.so
  8. binární
      app/libs/armeabi-v7a/libijksdl.so
  9. binární
      app/libs/armeabi/libijkffmpeg.so
  10. binární
      app/libs/armeabi/libijkplayer.so
  11. binární
      app/libs/armeabi/libijksdl.so
  12. binární
      app/libs/x86/libijkffmpeg.so
  13. binární
      app/libs/x86/libijkplayer.so
  14. binární
      app/libs/x86/libijksdl.so
  15. binární
      app/libs/x86_64/libijkffmpeg.so
  16. binární
      app/libs/x86_64/libijkplayer.so
  17. binární
      app/libs/x86_64/libijksdl.so
  18. 1 2
      app/src/main/AndroidManifest.xml
  19. 2 2
      app/src/main/java/com/edufound/reader/activity/CrashDialogActivity.java
  20. 1 0
      app/src/main/java/com/edufound/reader/activity/MainActivity.java
  21. 7 1
      app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java
  22. 10 3
      app/src/main/java/com/edufound/reader/activity/RecordActivity.java
  23. 0 1
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  24. 57 34
      app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java
  25. 0 2
      app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java
  26. 10 0
      app/src/main/java/com/edufound/reader/apiserver/OrderApiServerImpl.java
  27. 10 0
      app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java
  28. 20 9
      app/src/main/java/com/edufound/reader/application/EApplication.java
  29. 3 3
      app/src/main/java/com/edufound/reader/base/BaseActivity.java
  30. 8 0
      app/src/main/java/com/edufound/reader/bean/ChannelCodeEnum.java
  31. 2 0
      app/src/main/java/com/edufound/reader/contract/CharacterFragmentContract.java
  32. 11 11
      app/src/main/java/com/edufound/reader/cusview/RvListJzvdStd.java
  33. 8 1
      app/src/main/java/com/edufound/reader/fragment/CharacterFragment3.java
  34. 0 1
      app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java
  35. 3 1
      app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java
  36. 1 0
      app/src/main/java/com/edufound/reader/model/CharacterFragmentModel.java
  37. 8 0
      app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java
  38. 5 0
      app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenter.java
  39. 114 57
      app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenterVersionThree.java
  40. 6 7
      app/src/main/java/com/edufound/reader/presenter/MainPresenter.java
  41. 2 1
      app/src/main/java/com/edufound/reader/presenter/MyCollectionPresenter.java
  42. 2 3
      app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java
  43. 5 4
      app/src/main/java/com/edufound/reader/presenter/OthersRecordPresenter.java
  44. 61 38
      app/src/main/java/com/edufound/reader/presenter/PayPresenter.java
  45. 21 7
      app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java
  46. 34 16
      app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java
  47. 0 2
      app/src/main/java/com/edufound/reader/presenter/SmallFullVideoPresenter.java
  48. 12 0
      app/src/main/java/com/edufound/reader/presenter/SplashPresenter.java
  49. 1 1
      app/src/main/java/com/edufound/reader/presenter/UserInfoSettingPresenter.java
  50. 0 1
      app/src/main/java/com/edufound/reader/presenter/WebPresenter.java
  51. 4 1
      app/src/main/java/com/edufound/reader/support/CrashLog.java
  52. 0 188
      app/src/main/java/com/edufound/reader/util/CrashHandler.java
  53. 1 1
      app/src/main/java/com/edufound/reader/util/DeviceUtil.java
  54. 3 3
      app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

+ 0 - 1
.idea/gradle.xml

@@ -16,7 +16,6 @@
             <option value="$PROJECT_DIR$/app" />
           </set>
         </option>
-        <option name="resolveModulePerSourceSet" value="false" />
       </GradleProjectSettings>
     </option>
   </component>

+ 14 - 3
app/build.gradle

@@ -13,12 +13,13 @@ android {
         applicationId "com.edufound.reader"
         minSdkVersion 21 //>23导致无法直接签名
         targetSdkVersion 30
-        versionCode 30
-        versionName "3.0"
+        versionCode 31
+        versionName "3.1"
         flavorDimensions "versionCode"
         manifestPlaceholders = [UMENG_CHANNEL_VALUE: "2006"]//添加一个默认渠道号
         ndk {
-            abiFilters "armeabi-v7a"
+            //只有联想pad需要arm64-v8a,小米音箱、天猫音箱、百度音箱、不需要arm64-v8a
+            abiFilters "armeabi-v7a", "arm64-v8a", "armeabi", "x86", "x86_64"
         }
         multiDexEnabled true
     }
@@ -55,6 +56,8 @@ android {
                             newoutputFile = "\\小度音响\\"
                         } else if (channel == ("2016")) {
                             newoutputFile = "\\小爱音响\\"
+                        } else if (channel == ("3004")) {
+                            newoutputFile = "\\联想pad\\"
                         }
                         output.outputFileName = new File(newoutputFile, fileName)
                     }
@@ -120,6 +123,14 @@ android {
                     appIcon: "@drawable/icon",
             ]
         }
+        //联想渠道
+        channel_lenovo {
+            signingConfig signingConfigs.efunboxKey
+            manifestPlaceholders = [
+                    appCode: "3004",
+                    appIcon: "@drawable/icon",
+            ]
+        }
     }
     productFlavors.all {
         flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: manifestPlaceholders.appCode, icon: manifestPlaceholders.appIcon]

binární
app/libs/arm64-v8a/libijkffmpeg.so


binární
app/libs/arm64-v8a/libijkplayer.so


binární
app/libs/arm64-v8a/libijksdl.so


binární
app/libs/armeabi-v7a/libijkffmpeg.so


binární
app/libs/armeabi-v7a/libijkplayer.so


binární
app/libs/armeabi-v7a/libijksdl.so


binární
app/libs/armeabi/libijkffmpeg.so


binární
app/libs/armeabi/libijkplayer.so


binární
app/libs/armeabi/libijksdl.so


binární
app/libs/x86/libijkffmpeg.so


binární
app/libs/x86/libijkplayer.so


binární
app/libs/x86/libijksdl.so


binární
app/libs/x86_64/libijkffmpeg.so


binární
app/libs/x86_64/libijkplayer.so


binární
app/libs/x86_64/libijksdl.so


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

@@ -9,8 +9,7 @@
     <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状态,解决国内机型移动⽹络权限问题需要 -->

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

@@ -41,9 +41,9 @@ public class CrashDialogActivity extends BaseMvpActivity<CrashDialogPresenter> i
         return R.layout.activity_crash_dialog;
     }
 
-    @RequiresApi(api = Build.VERSION_CODES.N)
     @Override
     public void initView() {
+        Logger.e("CrashDialogActivity");
         mPresenter = new CrashDialogPresenter();
         mPresenter.attachView(this);
         mActivity = this;
@@ -62,7 +62,7 @@ public class CrashDialogActivity extends BaseMvpActivity<CrashDialogPresenter> i
 //        builder.create().show();
 
         addUiClickListener(mRestart, o -> {
-            EApplication.reloadApp(1);
+            EApplication.reloadApp(2);
         });
         addUiClickListener(mExitApp, o -> {
             EApplication.killAppProcess(getActivity());

+ 1 - 0
app/src/main/java/com/edufound/reader/activity/MainActivity.java

@@ -94,6 +94,7 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         addUiClickListener(mExitApp, o -> {
             PopWindowUtil.showExitAppWindow(getActivity(), getRootView());
         });
+        
         mTabLayout.setVisibility(View.GONE);
         mPresenter.userIsLogin();
         mPresenter.checkModelIsDebug();

+ 7 - 1
app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java

@@ -111,13 +111,19 @@ public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter>
     }
 
 
-    @RequiresApi(api = Build.VERSION_CODES.N)
     @Override
     protected void onResume() {
         mPresenter.activityOnResume();
         super.onResume();
     }
 
+
+    @Override
+    protected void onDestroy() {
+        mPresenter.activityDestory();
+        super.onDestroy();
+    }
+
     @Override
     protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         switch (resultCode) {

+ 10 - 3
app/src/main/java/com/edufound/reader/activity/RecordActivity.java

@@ -110,9 +110,13 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
                     //一次都没有出来过
                     PermissionsUtil.verifyAudioPermissions(this);
                 } else if (isgranted.equals("-1")) {
-                    Uri packageURI = Uri.parse("package:" + mActivity.getPackageName());
-                    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
-                    startActivity(intent);
+                    if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
+                        PermissionsUtil.verifyAudioPermissions(this);
+                    } else {
+                        Uri packageURI = Uri.parse("package:" + mActivity.getPackageName());
+                        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
+                        startActivity(intent);
+                    }
                 }
                 return;
             } else {
@@ -262,6 +266,9 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
         if (requestCode == PermissionsUtil.GET_RECODE_AUDIO) {
+            if (grantResults == null || grantResults.length == 0) {
+                return;
+            }
             if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                 //获取成功
                 MMKVUtil.getInstance().encode("record_granted", "1");

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

@@ -173,7 +173,6 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
     @Override
     protected void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
-        Logger.e("重复利用页面");
         isNewIntent = true;
         into_Page = "";
         data_Json = "";

+ 57 - 34
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -158,11 +158,13 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
                     });
                 }
             });
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())){
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
             mBindPhoneNumLayout.setVisibility(View.GONE);
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
+            //联想pad
+            mBindWeChat.setVisibility(View.GONE);
         }
         addUiClickListener(mLoginOut, o -> {
-            Logger.e("mLoginOut");
             if (mNickName.hasFocus()) {
                 mNickName.clearFocus();
                 return;
@@ -180,6 +182,9 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
                 }
             });
         });
+
+        //隐藏注销按钮,都不要
+        mCancellationLayout.setVisibility(View.GONE);
         addUiClickListener(mCancellationLayout, o -> {
             Logger.e("註銷按鈕");
             if (mNickName.hasFocus()) {
@@ -239,8 +244,10 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             }
             mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
             mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
-            Consts.getmConstsUserBean().setGender("1");
-            mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+            if (Consts.getmConstsUserBean() != null) {
+                Consts.getmConstsUserBean().setGender("1");
+                mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+            }
 
         });
         addUiClickListener(mGenderFeMale, o -> {
@@ -250,42 +257,59 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             }
             mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
             mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
-            Consts.getmConstsUserBean().setGender("0");
-            mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
-        });
-        addUiClickListener(mGrade, o -> {
-            if (mNickName.hasFocus()) {
-                mNickName.clearFocus();
-                return;
+            if (Consts.getmConstsUserBean() != null) {
+                Consts.getmConstsUserBean().setGender("0");
+                mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
             }
-            PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
-                @Override
-                public void clickCancel() {
 
-                }
+        });
+        mGrade.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                try {
+                    if (mNickName.hasFocus()) {
+                        mNickName.clearFocus();
+                        return;
+                    }
+                    PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
+                        @Override
+                        public void clickCancel() {
 
-                @Override
-                public void clickSubmit(Object object) {
-//                    Toast.makeText(getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
-                    Consts.getmConstsUserBean().setGrade(EfunboxUtil.getEnumByCNGrade(object.toString()));
-                    mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+                        }
+
+                        @Override
+                        public void clickSubmit(Object object) {
+//                             Toast.makeText(getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
+                            Consts.getmConstsUserBean().setGrade(EfunboxUtil.getEnumByCNGrade(object.toString()));
+                            mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+                        }
+                    });
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
-            });
+            }
         });
-        RxView.focusChanges(mNickName).subscribe(hasFocus -> {
-            if (!hasFocus) {
-                if (TextUtils.isEmpty(mNickName.getText().toString())) {
+//        addUiClickListener(mGrade, o -> {
+//
+//        });
+        RxView.focusChanges(mNickName).
+
+                subscribe(hasFocus ->
+
+                {
+                    if (!hasFocus) {
+                        if (TextUtils.isEmpty(mNickName.getText().toString())) {
 //                    Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
-                    return;
-                }
-                hideSoftInput();
-                Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
-                mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
-            } else {
-                mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
-            }
+                            return;
+                        }
+                        hideSoftInput();
+                        Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
+                        mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+                    } else {
+                        mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
+                    }
 
-        });
+                });
         mNickName.setOnEditorActionListener(new TextView.OnEditorActionListener() {
             @Override
             public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
@@ -385,7 +409,6 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             GlideUtils.loadImage(getActivity(), R.drawable.activity_userinfo_setting_girl, mUserHead);
         }
 
-        Logger.e("bean.getAvatar():" + bean.getAvatar());
         if (bean.getAvatar() == null || bean.getAvatar().equals("")) {
 
         } else {

+ 0 - 2
app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java

@@ -311,7 +311,6 @@ class VideoHolder extends RecyclerView.ViewHolder {
                 }.getType());
 
                 if (bean.getData().getList() == null || bean.getData().getList().size() == 0) {
-                    Logger.e("没有弹幕");
                     mSwitch.setVisibility(View.INVISIBLE);
                     return;
                 }
@@ -343,7 +342,6 @@ class VideoHolder extends RecyclerView.ViewHolder {
                         //判断是否滑动栏到底了,如果是,就让iv这个图片隐藏,否则显示
                         if (view.getMeasuredWidth() <= v.getScrollX() + v.getWidth()) {
                             //滑动到底部了
-                            Logger.e("滑动到最后了");
                             mScrollView.postDelayed(new Runnable() {
                                 @Override
                                 public void run() {

+ 10 - 0
app/src/main/java/com/edufound/reader/apiserver/OrderApiServerImpl.java

@@ -51,6 +51,12 @@ public class OrderApiServerImpl implements OrderApiServer {
     }
 
     @Override
+    public void createdOrderByLianXiang(Activity activity, String json, Callback callback) {
+        //联想渠道创建订单
+        OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/order/lianxiang").addParamJson(json), callback);
+    }
+
+    @Override
     public void getAuth(Activity activity, Callback callback) {
         if (activity == null) {
             OkHttpClient.doGetAsync(new HttpInfo.Builder().setUrl(API + "/auth"), callback);
@@ -78,4 +84,8 @@ interface OrderApiServer {
     void getFlowerEventProductList(Activity activity, Callback callback);
 
     void zeroPay(Activity activity, String orderId, Callback callback);
+
+
+    void createdOrderByLianXiang(Activity activity, String json, Callback callback);
+
 }

+ 10 - 0
app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java

@@ -166,6 +166,11 @@ public class UserApiServerImpl implements userApiServer {
     public void getRankList(String id, Callback callback) {
         OkHttpClient.doGetAsync(HttpInfo.Builder().addParam("channelCode", Consts.getUmengChannel()).addParam("deviceCode", DeviceUuidFactory.getUuid()).addParam("activityRaceReadId", id).setUrl(API + "/activity/rank"), callback);
     }
+
+    @Override
+    public void postFirstEnter(Callback callback) {
+        OkHttpClient.doGetAsync(HttpInfo.Builder().addParam("channelCode", Consts.getUmengChannel()).addParam("deviceCode", DeviceUuidFactory.getUuid()).setUrl(API + "/userEvent/enter"), callback);
+    }
 }
 
 
@@ -275,4 +280,9 @@ interface userApiServer {
     void getRankList(String id, Callback callback);
 
 
+    /**
+     * 统计设备首次访问
+     */
+    void postFirstEnter(Callback callback);
+
 }

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

@@ -11,14 +11,12 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.widget.Toast;
 
 import androidx.annotation.RequiresApi;
 
 import com.baidu.duer.botsdk.BotSdk;
 import com.baidu.duer.botsdk.util.HeartBeatReporter;
 import com.edufound.reader.activity.CrashDialogActivity;
-import com.edufound.reader.activity.MainActivity;
 import com.edufound.reader.activity.SplashActivity;
 import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.botsdk.BotConstants;
@@ -29,7 +27,6 @@ import com.edufound.reader.support.DebugSafeModeTipActivity;
 import com.edufound.reader.support.DebugSafeModeUI;
 import com.edufound.reader.util.Cockroach;
 import com.edufound.reader.util.Consts;
-import com.edufound.reader.util.CrashHandler;
 import com.edufound.reader.util.DeviceUuidFactory;
 import com.edufound.reader.util.ExceptionHandler;
 import com.edufound.reader.util.OkHttpClient;
@@ -48,6 +45,9 @@ import org.xmlpull.v1.XmlPullParserFactory;
 import java.util.ArrayList;
 import java.util.List;
 
+import io.reactivex.rxjava3.functions.Consumer;
+import io.reactivex.rxjava3.plugins.RxJavaPlugins;
+
 public class EApplication extends Application {
 
     private int activityAount = 0;
@@ -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);
 
@@ -131,12 +131,14 @@ public class EApplication extends Application {
         MobclickAgent.onKillProcess(context.getApplicationContext());
         ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
         List<ActivityManager.RunningAppProcessInfo> mList = mActivityManager.getRunningAppProcesses();
-        for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : mList) {
-            if (runningAppProcessInfo.pid != android.os.Process.myPid()) {
-                android.os.Process.killProcess(runningAppProcessInfo.pid);
+        if (mList != null) {
+            for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : mList) {
+                if (runningAppProcessInfo.pid != android.os.Process.myPid()) {
+                    android.os.Process.killProcess(runningAppProcessInfo.pid);
+                }
             }
+            android.os.Process.killProcess(android.os.Process.myPid());
         }
-        android.os.Process.killProcess(android.os.Process.myPid());
 //        System.exit(0);
     }
 
@@ -183,8 +185,16 @@ public class EApplication extends Application {
     };
 
     private void initException() {
+
+        RxJavaPlugins.setErrorHandler(new Consumer<Throwable>() {
+            @Override
+            public void accept(Throwable throwable) throws Exception {
+                throwable.printStackTrace();//这里处理所有的Rxjava异常
+                CrashLog.saveCrashLog(getApplicationContext(), throwable);
+            }
+        });
+
         final Thread.UncaughtExceptionHandler sysExcepHandler = Thread.getDefaultUncaughtExceptionHandler();
-        final Toast toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
         DebugSafeModeUI.init(this);
         Cockroach.install(this, new ExceptionHandler() {
             @Override
@@ -287,6 +297,7 @@ public class EApplication extends Application {
         for (int i = 0; i < EApplication.mActivityList.size(); i++) {
             EApplication.mActivityList.get(i).finish();
         }
+        System.gc();
         Intent intent = new Intent(Consts.getmApplicAtion(), SplashActivity.class);
         if (defaultIndex != -1) {
             intent.putExtra("defaultIndex", defaultIndex);

+ 3 - 3
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -50,6 +50,7 @@ import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.botsdk.IBotIntentCallback;
 import com.edufound.reader.cusview.CusToast;
+import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.receiver.HomeKeyEventReceiver;
 import com.edufound.reader.receiver.NetworkChangeReceiver;
 import com.edufound.reader.receiver.ScreenListener;
@@ -108,6 +109,7 @@ public abstract class BaseActivity extends AppCompatActivity {
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 //        EfunboxUtil.setCustomDensity(this, Consts.getmApplicAtion());
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
         EApplication.mActivityList.add(this);
         EfunboxUtil.initDesignSize(this);
         setContentView(this.getLayoutId());
@@ -157,20 +159,17 @@ public abstract class BaseActivity extends AppCompatActivity {
         screenListener.begin(new ScreenListener.ScreenStateListener() {
             @Override
             public void onScreenOn() {
-                Logger.e("onScreenOn");
 
             }
 
             @Override
             public void onScreenOff() {
-                Logger.e("onScreenOff");
                 onAppScreenOff();
 
             }
 
             @Override
             public void onUserPresent() {
-                Logger.e("onUserPresent");
                 onScreenUserPresent();
             }
         });
@@ -541,6 +540,7 @@ public abstract class BaseActivity extends AppCompatActivity {
     @Override
     protected void onDestroy() {
         super.onDestroy();
+        PopWindowUtil.hidePopupWindow();
         Runtime.getRuntime().gc();
         System.gc();
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {

+ 8 - 0
app/src/main/java/com/edufound/reader/bean/ChannelCodeEnum.java

@@ -23,7 +23,15 @@ public enum ChannelCodeEnum {
         public String getChannelCode() {//枚举对象实现抽象方法
             return "2016";
         }
+    },
+
+    LENOVO {
+        //小米
+        public String getChannelCode() {//枚举对象实现抽象方法
+            return "3004";
+        }
     };
 
+
     public abstract String getChannelCode();//定义抽象方法
 }

+ 2 - 0
app/src/main/java/com/edufound/reader/contract/CharacterFragmentContract.java

@@ -49,5 +49,7 @@ public interface CharacterFragmentContract {
 
         void getRecordInfoByIdSetCharacter3(String id);
 
+        void onPause();
+
     }
 }

+ 11 - 11
app/src/main/java/com/edufound/reader/cusview/RvListJzvdStd.java

@@ -1112,7 +1112,7 @@ public class RvListJzvdStd extends Jzvd {
     @Override
     public void reset() {
         cancelDismissControlViewTimer();
-        unregisterWifiListener(getApplicationContext());
+//        unregisterWifiListener(getApplicationContext());
         Log.i(TAG, "reset " + " [" + this.hashCode() + "] ");
         cancelProgressTimer();
         dismissBrightnessDialog();
@@ -1143,19 +1143,19 @@ public class RvListJzvdStd extends Jzvd {
     }
 
     public void registerWifiListener(Context context) {
-        if (context == null) return;
-        mIsWifi = JZUtils.isWifiConnected(context);
-        IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
-        context.registerReceiver(wifiReceiver, intentFilter);
+//        if (context == null) return;
+//        mIsWifi = JZUtils.isWifiConnected(context);
+//        IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
+//        context.registerReceiver(wifiReceiver, intentFilter);
     }
 
     public void unregisterWifiListener(Context context) {
-        if (context == null) return;
-        try {
-            context.unregisterReceiver(wifiReceiver);
-        } catch (IllegalArgumentException e) {
-            e.printStackTrace();
-        }
+//        if (context == null) return;
+//        try {
+//            context.unregisterReceiver(wifiReceiver);
+//        } catch (IllegalArgumentException e) {
+//            e.printStackTrace();
+//        }
     }
 
     public void setHideAllUI(boolean hideALl) {

+ 8 - 1
app/src/main/java/com/edufound/reader/fragment/CharacterFragment3.java

@@ -82,7 +82,6 @@ public class CharacterFragment3 extends BaseMvpFragment<CharacterFragmentPresent
     @Override
     protected void initViewListener() {
 
-
         RxView.scrollChangeEvents(mScrollView).subscribe(viewScrollChangeEvent -> {
 //            Logger.e("滑动滑动");
             if (mBottomView.getLocalVisibleRect(mScreenRect)) {
@@ -116,6 +115,14 @@ public class CharacterFragment3 extends BaseMvpFragment<CharacterFragmentPresent
     }
 
     @Override
+    public void onPause() {
+        super.onPause();
+        mPresenter.onPause();
+    }
+
+
+
+    @Override
     public ViewGroup getRootView() {
         return (ViewGroup) mRootView;
     }

+ 0 - 1
app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java

@@ -250,7 +250,6 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
         mHeadUserFans.setText(String.valueOf(bean.getFansAmount()));
         mHeadUserPlayCount.setText(String.valueOf(bean.getPlayAmount()));
         mFlowerCount.setText(String.valueOf(bean.getIntegralAmount()));
-        Logger.e("bean.getUnreadAmount():-" + bean.getUnreadAmount());
         if (Integer.valueOf(bean.getUnreadAmount()) <= 0) {
             mUnReadIcon.setVisibility(View.INVISIBLE);
         } else {

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

@@ -342,7 +342,6 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
             addUiClickListener(mUserReadCountLayout, o -> {
                 mPresenter.getListByExampleId(bean.getUserRead().getExampleId());
             });
-            Logger.e("mUserReadNum:" + bean.getUserRead().getReadAmount());
             mUserReadNum.setText(EfunboxUtil.checkNum10000(bean.getUserRead().getReadAmount()));
         }
         if (bean.getIsFavorites() || bean.getFavoritesBean() != null) {
@@ -477,6 +476,9 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     @Override
     public ImageView getisViewUI() {
+        if (isUserVip == null) {
+            return null;
+        }
         return isUserVip;
     }
 

+ 1 - 0
app/src/main/java/com/edufound/reader/model/CharacterFragmentModel.java

@@ -11,6 +11,7 @@ import com.okhttplib.callback.Callback;
 public class CharacterFragmentModel implements CharacterFragmentContract.Model {
     public static final int LOAD_GRID = 0x1231;
     public static final int LOAD_LINEARLAYOUT = 0x1232;
+    public static final int LOAD_LINEARLAYOUT_OVER = 0x1233;
     private String API = Consts.getFinalApi();
 
     @Override

+ 8 - 0
app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java

@@ -89,6 +89,9 @@ public class PopWindowUtil {
         if (recordPopupWindow != null && recordPopupWindow.isShowing()) {
             recordPopupWindow.dismiss();
         }
+        if (eventPopupWindow != null && eventPopupWindow.isShowing()) {
+            eventPopupWindow.dismiss();
+        }
     }
 
     public static void showExitAppWindow(Activity context, View parent) {
@@ -564,6 +567,7 @@ public class PopWindowUtil {
         StringBuffer buffer = new StringBuffer();
         buffer.append("\tchannel:\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");
         buffer.append("\t型号:\t" + "\t" + DeviceUtil.getSystemModel() + "\n");
         buffer.append("\t系统版本号:\t" + "\t" + DeviceUtil.getSystemVersion() + "\n");
@@ -601,6 +605,10 @@ public class PopWindowUtil {
     }
 
     private static void newPopupWindow(View parent, boolean nedFocus) {
+        if (parent == null) {
+            Logger.e("newPopupWindow-parent=null");
+            return;
+        }
         mPopupWindow = new PopupWindow(dialog_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         mPopupWindow.setFocusable(nedFocus);
         mPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);

+ 5 - 0
app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenter.java

@@ -144,6 +144,11 @@ public class CharacterFragmentPresenter extends BasePresenter<CharacterFragmentC
 
     }
 
+    @Override
+    public void onPause() {
+        
+    }
+
 
     private void setGridItemView(GridLayout gridLayout, int index) {
 

+ 114 - 57
app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenterVersionThree.java

@@ -79,6 +79,7 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
     public void initGridLayout(GridLayout gridLayout) {
     }
 
+
     @Override
     public void initLinearLayout(LinearLayout linearLayout) {
         if (mLoadDataList == null || mLoadDataList.size() <= 0) {
@@ -91,6 +92,9 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
             message.obj = linearLayout;
             message.what = CharacterFragmentModel.LOAD_LINEARLAYOUT;
             message.arg1 = j;
+            if (timeCount == (mListEnd - mListStart)) {
+                mCharacterHandler.sendEmptyMessageDelayed(CharacterFragmentModel.LOAD_LINEARLAYOUT_OVER, 1000);
+            }
             mCharacterHandler.sendMessageDelayed(message, 50 * timeCount);
         }
         mListStart = mListEnd;
@@ -137,7 +141,8 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
 
             @Override
             public void onFailure(HttpInfo info) throws IOException {
-
+                Logger.e("获取任务失败:" + info.getRetDetail());
+                getExampleAll();
             }
         });
     }
@@ -193,48 +198,19 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
 //                MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
 //                ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
 //                CusToast.getInstance(mContext).show(finalI + "", 3000);
-                if (mRecommendFragment != null) {
-                    mFragmentManager.beginTransaction().remove(mRecommendFragment);
-                    mRecommendFragment = null;
-                }
-                mRecommendFragment = new RecommendFragment(2);
-                FragmentTransaction transaction = mFragmentManager.beginTransaction();
-                transaction.addToBackStack(null);
-                transaction.replace(R.id.character_version_three_fragment_layout, mRecommendFragment);
-                List<UserRecordBean> list = new ArrayList<>();
-                list.add(data.get(finalI));
-                mRecommendFragment.setDataJson(new Gson().toJson(list));
-                mRecommendFragment.hiddenBottomView();
-                mRecommendFragment.showUserReadCount(true);
-                mRecommendFragment.setLayoutViewScale(0.92f, 0.92f);
-                mRecommendFragment.setChangeCharacterListener(new RecommendFragment.ChangeCharacterListener() {
-                    @Override
-                    public void changeDataList(UserRecordBean list) {
-                        list.getUserRead().setReadAmount(data.get(finalI).getUserRead().getReadAmount());
-                        data.remove(finalI);
-                        data.add(finalI, list);
-                        mRecommendFragment.setTopStatus(list);
-                    }
-                });
-
-                transaction.commit();
-//                mView.getFragmentLayout().setBackgroundColor(Color.RED);
-                linearLayout.removeView(mView.getFragmentLayout());
-                if (index - 1 < 0) {
-                    linearLayout.addView(mView.getFragmentLayout(), 0);
-                } else {
-                    linearLayout.addView(mView.getFragmentLayout(), index);
-                }
-                mView.getFragmentLayout().setVisibility(View.VISIBLE);
-
-                mView.getScrllView().postDelayed(new Runnable() {
-                    @Override
-                    public void run() {
-                        //- SizeUtils.dp2px(mContext, 100)
-                        mView.getScrllView().smoothScrollTo(mView.getFragmentLayout().getLeft() + view.getWidth() - (view.getWidth() / 6), 0);
-                    }
-                }, 200);
 
+                mCharacterHandler.removeMessages(0x33312);
+
+                Message message = new Message();
+                TestBean ttt = new TestBean();
+                ttt.data = data;
+                ttt.i = finalI;
+                ttt.index = index;
+                ttt.linearLayout = linearLayout;
+                ttt.view = view;
+                message.obj = ttt;
+                message.what = 0x33312;
+                mCharacterHandler.sendMessageDelayed(message, 100);
             });
 
 
@@ -249,23 +225,27 @@ 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());
-            }
+//        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());
+//            }
+//        });
 
-            @Override
-            public void onFailure(HttpInfo info) throws IOException {
-                Logger.e("获取单独的失敗了:" + info.getRetDetail());
-            }
-        });
+    }
 
+    @Override
+    public void onPause() {
     }
 
     Handler mCharacterHandler = new Handler(new Handler.Callback() {
@@ -275,6 +255,74 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
                 case CharacterFragmentModel.LOAD_LINEARLAYOUT:
                     setLinearLayoutItem((LinearLayout) msg.obj, msg.arg1);
                     break;
+                case CharacterFragmentModel.LOAD_LINEARLAYOUT_OVER:
+                    break;
+                case 0x33312:
+                    if (mRecommendFragment != null) {
+                        mFragmentManager.beginTransaction().remove(mRecommendFragment);
+                        mRecommendFragment = null;
+                    }
+
+                    TestBean ttt = (TestBean) msg.obj;
+                    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 {
+                                HttpResultBean<UserRecordBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean>>() {
+                                }.getType());
+
+//                        mRecommendFragment.getChangeCharacterListener().changeDataList(bean.getData());
+
+                                mRecommendFragment = new RecommendFragment(2);
+                                FragmentTransaction transaction = mFragmentManager.beginTransaction();
+                                transaction.addToBackStack(null);
+                                transaction.replace(R.id.character_version_three_fragment_layout, mRecommendFragment);
+                                List<UserRecordBean> sss = new ArrayList<>();
+                                sss.add(bean.getData());
+                                mRecommendFragment.setDataJson(new Gson().toJson(sss));
+                                mRecommendFragment.hiddenBottomView();
+                                mRecommendFragment.showUserReadCount(true);
+                                mRecommendFragment.setLayoutViewScale(0.92f, 0.92f);
+                                mRecommendFragment.setChangeCharacterListener(new RecommendFragment.ChangeCharacterListener() {
+                                    @Override
+                                    public void changeDataList(UserRecordBean list) {
+                                        mRecommendFragment.setTopStatus(list);
+                                    }
+                                });
+                                transaction.commit();
+                                ttt.linearLayout.removeView(mView.getFragmentLayout());
+                                if (ttt.index - 1 < 0) {
+                                    ttt.linearLayout.addView(mView.getFragmentLayout(), 0);
+                                } else {
+                                    ttt.linearLayout.addView(mView.getFragmentLayout(), ttt.index);
+                                }
+                                mView.getFragmentLayout().setVisibility(View.VISIBLE);
+
+                                mView.getScrllView().postDelayed(new Runnable() {
+                                    @Override
+                                    public void run() {
+                                        //- SizeUtils.dp2px(mContext, 100)
+                                        if (mView != null) {
+                                            if (mView.getScrllView() != null) {
+                                                mView.getScrllView().smoothScrollTo(mView.getFragmentLayout().getLeft() + ttt.view.getWidth() - (ttt.view.getWidth() / 6), 0);
+                                            }
+                                        }
+                                    }
+                                }, 200);
+                            }
+
+                            @Override
+                            public void onFailure(HttpInfo info) throws IOException {
+                                Logger.e("获取单独的失敗了:" + info.getRetDetail());
+                                CusToast.getInstance(mContext).show("获取数据失败", 3000);
+                            }
+                        });
+                    }
+                    break;
                 default:
                     throw new IllegalStateException("Unexpected value: " + msg.what);
             }
@@ -282,4 +330,13 @@ public class CharacterFragmentPresenterVersionThree extends BasePresenter<Charac
         }
     });
 
+
 }
+
+class TestBean {
+    LinearLayout linearLayout;
+    List<UserRecordBean> data;
+    int index;
+    int i;
+    View view;
+}

+ 6 - 7
app/src/main/java/com/edufound/reader/presenter/MainPresenter.java

@@ -99,7 +99,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
         switch (id) {
             case R.id.main_left_tab_layout_myinfo:
                 //我的
-                Logger.e("我的");
                 if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
                     mRadioCheckIndex = 0;
                     mRecommendFragment = null;
@@ -113,7 +112,11 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                     mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
                 } else {
                     Logger.e("");
-                    ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
+                    if (radioGroup != null) {
+                        if (radioGroup.getChildAt(mRadioCheckIndex) != null) {
+                            ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
+                        }
+                    }
                 }
                 break;
 
@@ -132,7 +135,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 break;
             case R.id.main_left_tab_layout_recommend:
                 //推荐
-                Logger.e("推荐");
                 mRadioCheckIndex = 2;
 //                ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
                 mUserFragment = null;
@@ -147,7 +149,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                 break;
             case R.id.main_left_tab_layout_follow:
                 //关注
-                Logger.e("关注");
                 if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
                     mRadioCheckIndex = 3;
                     mUserFragment = null;
@@ -203,6 +204,7 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
     @Override
     public void activityResume() {
         refMyFragment();
+        getYFVip();
     }
 
     @Override
@@ -385,7 +387,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
     }
 
     private void getYFVip() {
-
         if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //不是百度渠道,检查是否是义方VIP
             if (Consts.getmConstsUserBean() != null) {
@@ -449,8 +450,6 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
 
     @Override
     public void refRecordById(String id) {
-        Logger.e("重新刷新播放的视频");
-        Logger.e("重新刷新播放的视频mRadioCheckIndex:" + mRadioCheckIndex);
         switch (mRadioCheckIndex) {
             case 2:
                 if (mRecommendFragment != null) {

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

@@ -36,6 +36,7 @@ import androidx.annotation.RequiresApi;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
+
 import io.reactivex.rxjava3.annotations.NonNull;
 
 public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.View> implements MyCollectionContract.Presenter {
@@ -170,6 +171,7 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
             if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM)) {
                 //删除item
                 int position = Integer.valueOf(intent.getStringExtra("position"));
+                Logger.e("删除第几个:" + position);
                 mRemovMap.put("del" + position, position);
             } else if (intent.getAction().equals(BackPageReceiver.BACK_HOME_ADD_VIDEO_ITEM)) {
                 //添加item
@@ -190,7 +192,6 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
         loadOver = false;
     }
 
-    @RequiresApi(api = Build.VERSION_CODES.N)
     @Override
     public void activityOnResume() {
         if (mRemovMap != null && mRemovMap.size() > 0) {

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

@@ -281,7 +281,6 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
 
     @Override
     public void getMyRecords() {
-        Logger.e("获取我的朗读列表");
         mModel.getMyRecords(mView.getActivity(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
@@ -314,7 +313,6 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
                 mView.setUserInfo(bean.getData());
                 getMyRecords();
                 getCheckNum();
-                Logger.e("获取我的信息:" + info.getRetDetail());
             }
 
             @Override
@@ -351,9 +349,9 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         mOrderApi.getAuth(mView.getActivity(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("获取是否有权限:" + info.getRetDetail());
                 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"));
@@ -441,6 +439,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())
         ) {
             getAuth();
         }

+ 5 - 4
app/src/main/java/com/edufound/reader/presenter/OthersRecordPresenter.java

@@ -31,6 +31,7 @@ import com.edufound.reader.model.CharacterFragmentModel;
 import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.model.OthersRecordModel;
 import com.edufound.reader.receiver.BackPageReceiver;
+import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.MMKVUtil;
 import com.edufound.reader.util.SizeUtils;
@@ -92,10 +93,10 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
 //        GlideUtils.loadRoundCircleImage(mView.getActivity(), reader.getCoverImg(), imgIcon, SizeUtils.dp2px(mView.getActivity(), 20));
         GlideUtils.loadImage(mView.getActivity(), reader.getCoverImg(), imgIcon);
         name.setText(reader.getTitle());
-        lookAmount.setText(reader.getPlayAmount());
-        likeAmount.setText(reader.getLikeAmount());
-        commentAmount.setText(reader.getCommentAmount());
-        favoritesAmount.setText(reader.getFavoritesAmount());
+        lookAmount.setText(EfunboxUtil.checkNum10000(reader.getPlayAmount()));
+        likeAmount.setText(EfunboxUtil.checkNum10000(reader.getLikeAmount()));
+        commentAmount.setText(EfunboxUtil.checkNum10000(reader.getCommentAmount()));
+        favoritesAmount.setText(EfunboxUtil.checkNum10000(reader.getFavoritesAmount()));
         imgDel.setVisibility(View.GONE);
         imgPriv.setVisibility(View.GONE);
         checkLayout.setVisibility(View.GONE);

+ 61 - 38
app/src/main/java/com/edufound/reader/presenter/PayPresenter.java

@@ -15,10 +15,12 @@ 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;
@@ -81,7 +83,6 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
 
     @Override
     public void initPayItem(LinearLayout itemFrame) {
-        Logger.e("initPayItem");
         for (int i = 0; i < mPayResult.size(); i++) {
             Message message = new Message();
             message.obj = itemFrame;
@@ -99,9 +100,9 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
             public void onSuccess(HttpInfo info) throws IOException {
                 HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
                 }.getType());
-                Logger.e("bean.get:" + info.getRetDetail());
-                Logger.e("status:" + bean.getData().getPayStatus());
                 if (bean.getData().getPayStatus().equals("SUCCESS")) {
+                    CusToast.getInstance(mView.getActivity()).show("支付成功", 3000);
+                    mView.getActivity().finish();
                     handler.removeMessages(2);
                 } else {
                     handler.sendEmptyMessageDelayed(2, 3000);
@@ -140,7 +141,6 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
                 ((PayItemHolder) itemFrame.getChildAt(j).getTag()).mIsCheck.setVisibility(View.INVISIBLE);
             }
             ((PayItemHolder) view.getTag()).mIsCheck.setVisibility(View.VISIBLE);
-            Logger.e("选择了...." + ((PayItemHolder) view.getTag()).mPayMoney.getText().toString());
 
             Map<String, String> createOrderMap = new HashMap<>();
             createOrderMap.put("channel", Consts.getUmengChannel());
@@ -150,48 +150,71 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
             createOrderMap.put("productId", mPayResult.get(position).getId());
             createOrderMap.put("uid", Consts.getUID());
 
-            //创建订单
-            mOrderApi.createdOrder(mView.getActivity(), new Gson().toJson(createOrderMap), new Callback() {
-                @Override
-                public void onSuccess(HttpInfo info) throws IOException {
-                    try {
-                        Logger.e("创建订单成功:" + info.getRetDetail());
-                        JSONObject object = new JSONObject(info.getRetDetail());
-                        JSONObject json = object.getJSONObject("data");
-                        Logger.e("json:" + json);
-                        nowOrderId = json.getString("orderId");
-                        mModel.getPayQRCode(mView.getActivity(), mPayResult.get(position).getId(), new Callback() {
-                            @Override
-                            public void onSuccess(HttpInfo info) throws IOException {
-                                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
-                                }.getType());
-                                mView.setQRCode(bean.getData().toString());
-                                handler.sendEmptyMessage(2);
-                            }
-
-                            @Override
-                            public void onFailure(HttpInfo info) throws IOException {
-
-                            }
-                        });
-                    } catch (Exception e) {
-                        e.printStackTrace();
+            if (Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
+                //创建联想订单
+                Logger.e("创建联想订单");
+                mOrderApi.createdOrderByLianXiang(mView.getActivity(), new Gson().toJson(createOrderMap), new Callback() {
+                    @Override
+                    public void onSuccess(HttpInfo info) throws IOException {
+                        try {
+                            JSONObject object = new JSONObject(info.getRetDetail());
+                            JSONObject json = object.getJSONObject("data");
+                            String qrCode = json.getString("qrCode");
+                            nowOrderId = json.getString("orderId");
+                            Logger.e("二维码地址:" + qrCode.toString());
+                            mView.setQRCode(qrCode);
+                            handler.sendEmptyMessage(2);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+
                     }
 
-                }
+                    @Override
+                    public void onFailure(HttpInfo info) throws IOException {
+                        Logger.e("创建订单失败:" + info.getRetDetail());
+                    }
+                });
+            } else {
+                //创建普通订单
+                mOrderApi.createdOrder(mView.getActivity(), new Gson().toJson(createOrderMap), new Callback() {
+                    @Override
+                    public void onSuccess(HttpInfo info) throws IOException {
+                        try {
+                            JSONObject object = new JSONObject(info.getRetDetail());
+                            JSONObject json = object.getJSONObject("data");
+                            nowOrderId = json.getString("orderId");
+                            mModel.getPayQRCode(mView.getActivity(), mPayResult.get(position).getId(), new Callback() {
+                                @Override
+                                public void onSuccess(HttpInfo info) throws IOException {
+                                    HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                                    }.getType());
+                                    mView.setQRCode(bean.getData().toString());
+                                    handler.sendEmptyMessage(2);
+                                }
+
+                                @Override
+                                public void onFailure(HttpInfo info) throws IOException {
+
+                                }
+                            });
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
 
-                @Override
-                public void onFailure(HttpInfo info) throws IOException {
-                    Logger.e("创建订单失败:" + info.getRetDetail());
-                }
-            });
+                    }
+
+                    @Override
+                    public void onFailure(HttpInfo info) throws IOException {
+                        Logger.e("创建订单失败:" + info.getRetDetail());
+                    }
+                });
+            }
 
 
         });
         itemFrame.addView(view);
         if (position >= mPayResult.size() - 1) {
-            Logger.e("position:" + position);
-            Logger.e("mPayResult.size():" + mPayResult.size());
             itemFrame.getChildAt(0).performClick();
         }
     }

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

@@ -663,12 +663,8 @@ public class PopWindowPresneter {
 
                             try {
                                 JSONObject object = new JSONObject(info.getRetDetail());
-                                if (object.getString("code").equals("300") || object.getInt("code") == 300) {
-                                    //暂无数据
-                                    Logger.e("暂无数据");
-                                    handler.sendEmptyMessageDelayed(0x1313, 1000);
-                                    return;
-                                } else {
+                                if (object.getString("code").equals("200") || object.getInt("code") == 200) {
+                                    //200算成功
                                     handler.removeMessages(0x1313);
                                     loginSuccess = true;
                                     HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
@@ -690,7 +686,8 @@ 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.MISOUND.getChannelCode())||
+                                                        Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())
                                                 ) {
                                                     //义方渠道检查权限
                                                     if (Consts.getmConstsUserBean() != null) {
@@ -724,18 +721,35 @@ public class PopWindowPresneter {
                                         @Override
                                         public void onFailure(HttpInfo info) throws IOException {
                                             Logger.e("info:" + info.getRetDetail());
+                                            Logger.e("info.getResponse().code():" + info.getResponse().code());
+                                            CusToast.getInstance(Consts.getmApplicAtion()).show("其他错误:" + info.getRetDetail(), 2000);
+                                            miSoundLoginCallback.closeWindow();
                                         }
                                     });
+                                } else if (object.getString("code").equals("300") || object.getInt("code") == 300) {
+                                    //暂无数据
+                                    Logger.e("暂无数据");
+                                    handler.sendEmptyMessageDelayed(0x1313, 1000);
+                                    return;
+                                } else {
+                                    Logger.e("object.getString(\"code\"):" + object.getString("code"));
+                                    CusToast.getInstance(Consts.getmApplicAtion()).show(object.getString("code"), 2000);
+                                    Logger.e("其他错误---" + object.getString("code"));
                                 }
                             } catch (Exception e) {
                                 e.printStackTrace();
+                                CusToast.getInstance(Consts.getmApplicAtion()).show(e.getMessage(), 2000);
+                                miSoundLoginCallback.closeWindow();
                             } finally {
+
                             }
                         }
 
                         @Override
                         public void onFailure(HttpInfo info) throws IOException {
                             Logger.e("misound_login_error_info.get:" + info.getRetDetail());
+                            CusToast.getInstance(Consts.getmApplicAtion()).show(info.getRetDetail(), 2000);
+                            miSoundLoginCallback.closeWindow();
                         }
                     });
                     break;

+ 34 - 16
app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java

@@ -125,16 +125,20 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
             //上级页面传的json
             mDataList = ((BaseActivity) mView.getActivity()).getGson().fromJson(mView.getDataJson(), new TypeToken<List<UserRecordBean>>() {
             }.getType());
-            initVideoDate(rv, startPosition);
-            mTotalSize = mDataList.size();
-            mView.getRootView().setVisibility(View.VISIBLE);
-            mView.showFirstIntoView();
-            mView.getRootView().post(new Runnable() {
-                @Override
-                public void run() {
-                    mAdapter.notifyDataSetChanged();
-                }
-            });
+            if (mDataList != null) {
+                initVideoDate(rv, startPosition);
+                mTotalSize = mDataList.size();
+                mView.getRootView().setVisibility(View.VISIBLE);
+                mView.showFirstIntoView();
+                mView.getRootView().post(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (mAdapter != null) {
+                            mAdapter.notifyDataSetChanged();
+                        }
+                    }
+                });
+            }
         }
 
 
@@ -222,7 +226,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void fragmentPause(RecyclerView rv) {
-        Jzvd.releaseAllVideos();
+//        Jzvd.releaseAllVideos();
         JzvdStd.goOnPlayOnPause();
 
     }
@@ -252,14 +256,24 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
             }
         } else {
             //除了百度都走这里
+            if (mView == null) {
+                return;
+            }
             mView.getisViewUI().setEnabled(false);
             mView.getisViewUI().postDelayed(new Runnable() {
                 @Override
                 public void run() {
                     if (Consts.isIsYFVip()) {
-                        mView.getisViewUI().setVisibility(View.INVISIBLE);
+                        if (mView.getisViewUI() != null) {
+                            mView.getisViewUI().setVisibility(View.INVISIBLE);
+                        }
                     }
-                    mView.getisViewUI().setEnabled(true);
+                    if (mView != null) {
+                        if (mView.getisViewUI() != null) {
+                            mView.getisViewUI().setEnabled(true);
+                        }
+                    }
+
                 }
             }, 500);
         }
@@ -314,7 +328,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                 Logger.e("info:" + info.getRetDetail());
                 Logger.e("info-getRetCode:" + info.getRetCode());
                 //getRetCode==6
-                if (info.getRetCode() == 6) {
+                if (info.getRetCode() == 6 || info.getRetCode() == 4) {
                     getRecommendDataList();
                 }
 
@@ -334,6 +348,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
             public void onSuccess(HttpInfo info) throws IOException {
                 HttpResultBean<FavoritesBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<FavoritesBean>>() {
                 }.getType());
+                Logger.e("bean.getData().getStatus():" + bean.getData().getStatus());
                 Intent intent = new Intent();
                 if (bean.getData().getStatus().equals("DEL")) {
                     mDataList.get(mCurrentPosition).setFavorites(false);
@@ -346,9 +361,12 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                     mView.setFavorites(true);
                     intent.setAction(BackPageReceiver.BACK_HOME_ADD_VIDEO_ITEM);
                 }
-                mView.getChangeCharacterListener().changeDataList(mDataList.get(mCurrentPosition));
+                if (mView.getChangeCharacterListener() != null) {
+                    mView.getChangeCharacterListener().changeDataList(mDataList.get(mCurrentPosition));
+                }
                 intent.putExtra("position", String.valueOf(mCurrentPosition));
-                mContext.sendBroadcast(intent);
+                Logger.e("发送广播-----");
+                mView.getActivity().sendBroadcast(intent);
             }
 
             @Override

+ 0 - 2
app/src/main/java/com/edufound/reader/presenter/SmallFullVideoPresenter.java

@@ -51,10 +51,8 @@ public class SmallFullVideoPresenter extends BasePresenter<SmallFullVideoContrac
         FragmentTransaction transaction = mFragmentManager.beginTransaction();
         transaction.addToBackStack(null);
         transaction.replace(R.id.smallfull_fragment_layout, mRecommendFragment);
-        Logger.e("index:" + index);
         mRecommendFragment.scrollPosition(index);
         mRecommendFragment.setInToPage(intoPage);
-        Log.e("dataJson:", dataJson);
         mRecommendFragment.setDataJson(dataJson);
         transaction.commit();
     }

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

@@ -135,6 +135,18 @@ public class SplashPresenter extends BasePresenter implements SplashContract.Pre
 
 
     public void getUserInfo(Intent intent) {
+        mUserApi.postFirstEnter(new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                Logger.e("postFirstEnter-success-info.get:" + info.getRetDetail());
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("postFirstEnter-onFailure--info.get:" + info.getRetDetail());
+            }
+        });
+
         mUserApi.isLogin(mView.getActivity(), DeviceUuidFactory.getUuid(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {

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

@@ -48,7 +48,6 @@ public class UserInfoSettingPresenter extends BasePresenter<UserInfoSettingContr
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
 
-                Logger.e("info:" + info.getRetDetail());
                 HttpResultBean<MyInfoBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<MyInfoBean>>() {
                 }.getType());
                 Consts.setmConstsUserBean(bean.getData().getUser());
@@ -78,6 +77,7 @@ public class UserInfoSettingPresenter extends BasePresenter<UserInfoSettingContr
                 }.getType());
                 Consts.setmConstsUserBean(bean.getData());
                 mView.getUserInfoSuccess(bean.getData());
+                mGradeEnum = bean.getData().getGrade();
 
             }
 

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

@@ -190,7 +190,6 @@ public class WebPresenter extends BasePresenter<WebContract.View> implements Web
             buffer.append("&height=" + DeviceUtil.getHeight(mView.getActivity()));
         }
         url += buffer.toString();
-        Logger.e("webactivity-loadurl:" + url);
         webview.loadUrl(url);
         Intent hideLoading = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_HIDE);
         Consts.getmApplicAtion().getApplicationContext().sendBroadcast(hideLoading);

+ 4 - 1
app/src/main/java/com/edufound/reader/support/CrashLog.java

@@ -5,6 +5,8 @@ import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.os.Build;
 
+import com.orhanobut.logger.Logger;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.PrintWriter;
@@ -17,6 +19,7 @@ import java.util.Map;
 import java.util.TreeMap;
 
 /**
+ *
  */
 public class CrashLog {
     public static final String TAG = "CrashLog";
@@ -78,7 +81,7 @@ public class CrashLog {
             String time = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date());
             String fileName = "crash-" + time + "-" + timestamp + ".log";
             String cachePath = crashLogDir(context);
-
+            Logger.e("efunboxReader-LogPath:" + cachePath);
             File dir = new File(cachePath);
             dir.mkdirs();
             FileOutputStream fos = new FileOutputStream(cachePath + fileName);

+ 0 - 188
app/src/main/java/com/edufound/reader/util/CrashHandler.java

@@ -1,188 +0,0 @@
-package com.edufound.reader.util;
-
-import android.app.ActivityManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.os.Environment;
-import android.os.Looper;
-import android.widget.Toast;
-
-import com.edufound.reader.activity.CrashDialogActivity;
-import com.orhanobut.logger.Logger;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.reflect.Field;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-public class CrashHandler implements Thread.UncaughtExceptionHandler {
-
-    private String LOG_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + "efunbox_crash";
-
-    //系统默认的UncaughtException处理类
-    private Thread.UncaughtExceptionHandler mDefaultHandler;
-    //CrashHandler实例
-    private static CrashHandler INSTANCE = new CrashHandler();
-    //程序的Context对象
-    private Context mContext;
-    //用来存储设备信息和异常信息
-    private Map<String, String> infos = new HashMap<String, String>();
-    //用于格式化日期,作为日志文件名的一部分
-    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-    /**
-     * 保证只有一个CrashHandler实例
-     */
-    private CrashHandler() {
-    }
-
-    /**
-     * 获取CrashHandler实例 ,单例模式
-     */
-    public static CrashHandler getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * 初始化
-     *
-     * @param context
-     */
-    public void init(Context context) {
-        mContext = context;
-        //获取系统默认的UncaughtException处理器
-        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
-        //设置该CrashHandler为程序的默认处理器
-        Thread.setDefaultUncaughtExceptionHandler(this);
-    }
-
-    /**
-     * 当UncaughtException发生时会转入该函数来处理
-     */
-    @Override
-    public void uncaughtException(Thread thread, Throwable ex) {
-        if (!handleException(ex) && mDefaultHandler != null) {
-            // 如果用户没有处理则让系统默认的异常处理器来处
-            mDefaultHandler.uncaughtException(thread, ex);
-        } else {
-            // 跳转到崩溃提示Activity
-            Intent intent = new Intent(mContext, CrashDialogActivity.class);
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            mContext.startActivity(intent);
-            System.exit(0);// 关闭已奔溃的app进程
-        }
-    }
-
-    /**
-     * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
-     *
-     * @param ex
-     * @return true:如果处理了该异常信息;否则返回false.
-     */
-    private boolean handleException(Throwable ex) {
-        if (ex == null) {
-            return false;
-        }
-        new Thread() {
-            @Override
-            public void run() {
-                Looper.prepare();
-//                Toast.makeText(mContext, "很抱歉,出现异常.", Toast.LENGTH_LONG).show();
-                Looper.loop();
-            }
-        }.start();
-        //收集设备参数信息
-//        collectDeviceInfo(mContext);
-        //保存日志文件
-//        saveCrashInfo2File(ex);
-        return true;
-    }
-
-    /**
-     * 收集设备参数信息
-     *
-     * @param ctx
-     */
-    public void collectDeviceInfo(Context ctx) {
-        try {
-            PackageManager pm = ctx.getPackageManager();
-            PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(), PackageManager.GET_ACTIVITIES);
-            if (pi != null) {
-                String versionName = pi.versionName == null ? "null" : pi.versionName;
-                String versionCode = pi.versionCode + "";
-                infos.put("versionName", versionName);
-                infos.put("versionCode", versionCode);
-            }
-        } catch (PackageManager.NameNotFoundException e) {
-            Logger.e(e.getMessage());
-        }
-        Field[] fields = Build.class.getDeclaredFields();
-        for (Field field : fields) {
-            try {
-                field.setAccessible(true);
-                infos.put(field.getName(), field.get(null).toString());
-            } catch (Exception e) {
-                Logger.e(e.getMessage());
-            }
-        }
-    }
-
-    /**
-     * 保存错误信息到文件中
-     *
-     * @param ex
-     * @return 返回文件名称, 便于将文件传送到服务器
-     */
-    private String saveCrashInfo2File(Throwable ex) {
-
-        StringBuffer sb = new StringBuffer();
-        for (Map.Entry<String, String> entry : infos.entrySet()) {
-            String key = entry.getKey();
-            String value = entry.getValue();
-            sb.append(key + "=" + value + "\n");
-        }
-
-        Writer writer = new StringWriter();
-        PrintWriter printWriter = new PrintWriter(writer);
-        ex.printStackTrace(printWriter);
-        Throwable cause = ex.getCause();
-        while (cause != null) {
-            cause.printStackTrace(printWriter);
-            cause = cause.getCause();
-        }
-        printWriter.close();
-        String result = writer.toString();
-        sb.append(result);
-        try {
-            long timestamp = System.currentTimeMillis();
-            String time = formatter.format(new Date());
-            String fileName = "log-" + time + "-" + timestamp + ".txt";
-            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
-                //日志存放路径
-                String path = LOG_PATH;
-                File dir = new File(path);
-                dir.mkdirs();
-                FileOutputStream fos = new FileOutputStream(path + "/" + fileName);
-                fos.write(sb.toString().getBytes());
-                fos.close();
-            }
-            return fileName;
-        } catch (Exception e) {
-            Logger.e(e.getMessage());
-        } finally {
-            System.exit(0);
-        }
-        return null;
-    }
-}

+ 1 - 1
app/src/main/java/com/edufound/reader/util/DeviceUtil.java

@@ -33,7 +33,7 @@ public class DeviceUtil {
 
 
     public static String getSerialNumber() {
-        String serial = null;
+        String serial = "获取失败";
         try {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { // 9.0 +
                 serial = Build.getSerial();

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

@@ -180,7 +180,7 @@ public class EfunboxUtil {
             context.startActivity(tologin);
         } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
             TMailSDKUtil.TMailLogin(context);
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode()) || Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
             //小米音响--
 //            Intent tologin = new Intent(context, LoginAlertActivity.class);
 //            context.startActivity(tologin);
@@ -203,8 +203,8 @@ public class EfunboxUtil {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //百度渠道调用百度的支付
             BotRegisterListener.payBaiDuVip();
-        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
-            //义方调用普通版支付
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode()) || Consts.getUmengChannel().equals(ChannelCodeEnum.LENOVO.getChannelCode())) {
+            //义方调用普通版支付,联想也用
             Intent topay = new Intent(activity, PayActivity.class);
             activity.startActivity(topay);
         } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {