فهرست منبع

1.小度白金会员支付回调刷新问题(支付共10次)
2.视频操作之后页面返回导致崩溃问题
3.绑定微信二维码
4.视频播放接口
5.我的收藏、我的关注页面刷新列表

FailedToRead 3 سال پیش
والد
کامیت
faed455cfc
43فایلهای تغییر یافته به همراه630 افزوده شده و 270 حذف شده
  1. 1 0
      .idea/misc.xml
  2. 4 0
      app/build.gradle
  3. 2 1
      app/src/fragmentUser/layout/popupwindow_bind_wechat.xml
  4. 1 2
      app/src/main/AndroidManifest.xml
  5. 11 2
      app/src/main/java/com/edufound/reader/activity/CommentActivity.java
  6. 18 0
      app/src/main/java/com/edufound/reader/activity/MainActivity.java
  7. 17 3
      app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java
  8. 0 1
      app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java
  9. 35 11
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  10. 0 1
      app/src/main/java/com/edufound/reader/adapter/CommentItemAdapter.java
  11. 6 0
      app/src/main/java/com/edufound/reader/adapter/MyCollectionItemAdapter.java
  12. 17 2
      app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java
  13. 7 0
      app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java
  14. 7 13
      app/src/main/java/com/edufound/reader/base/BaseActivity.java
  15. 15 4
      app/src/main/java/com/edufound/reader/base/BaseFragment.java
  16. 5 4
      app/src/main/java/com/edufound/reader/base/BaseMvpFragment.java
  17. 18 4
      app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java
  18. 3 0
      app/src/main/java/com/edufound/reader/contract/CommentContract.java
  19. 2 0
      app/src/main/java/com/edufound/reader/contract/MainContract.java
  20. 2 0
      app/src/main/java/com/edufound/reader/contract/MyCollectionContract.java
  21. 2 0
      app/src/main/java/com/edufound/reader/contract/MyTabFragmentContract.java
  22. 1 0
      app/src/main/java/com/edufound/reader/contract/RecommendFragmentContract.java
  23. 6 0
      app/src/main/java/com/edufound/reader/contract/SmallFullVideoContract.java
  24. 9 0
      app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java
  25. 15 3
      app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java
  26. 3 1
      app/src/main/java/com/edufound/reader/model/MyCollectionModel.java
  27. 0 1
      app/src/main/java/com/edufound/reader/model/PopWindowModelImpl.java
  28. 3 1
      app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java
  29. 1 0
      app/src/main/java/com/edufound/reader/presenter/CharacterFragmentPresenter.java
  30. 10 1
      app/src/main/java/com/edufound/reader/presenter/CommentPresenter.java
  31. 13 0
      app/src/main/java/com/edufound/reader/presenter/MainPresenter.java
  32. 0 6
      app/src/main/java/com/edufound/reader/presenter/MessagePresenter.java
  33. 48 20
      app/src/main/java/com/edufound/reader/presenter/MyCollectionPresenter.java
  34. 3 0
      app/src/main/java/com/edufound/reader/presenter/MyFollowPresenter.java
  35. 116 149
      app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java
  36. 1 3
      app/src/main/java/com/edufound/reader/presenter/OthersRecordPresenter.java
  37. 25 1
      app/src/main/java/com/edufound/reader/presenter/PopWindowPresneter.java
  38. 23 24
      app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java
  39. 24 0
      app/src/main/java/com/edufound/reader/presenter/SmallFullVideoPresenter.java
  40. 8 4
      app/src/main/java/com/edufound/reader/receiver/BackPageReceiver.java
  41. 0 2
      app/src/main/java/com/edufound/reader/services/RecordServices.java
  42. 0 6
      app/src/main/java/com/edufound/reader/util/OkHttpClient.java
  43. 148 0
      app/src/main/java/com/edufound/reader/util/QRCodeUtil.java

+ 1 - 0
.idea/misc.xml

@@ -38,6 +38,7 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/adapter_item_record_authority.xml" value="0.75" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/fragment_user_rv_bottom.xml" value="0.2771317829457364" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/popup_window_bind_wechat.xml" value="0.25" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_bind_wechat.xml" value="0.5" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_cancellation_account.xml" value="0.5" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_exit_login.xml" value="0.25" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/fragmentUser/layout/popupwindow_select_grade.xml" value="0.5" />

+ 4 - 0
app/build.gradle

@@ -160,4 +160,8 @@ dependencies {
     implementation 'com.baidu.duer.botsdk:bot-sdk-android:1.56.1'
     // 3rd Party
     implementation "com.alibaba:fastjson:${FASTJSON_VERSION}"
+
+    //zxing
+    implementation 'com.google.zxing:android-core:3.3.0'
+    implementation 'com.google.zxing:core:3.3.2'
 }

+ 2 - 1
app/src/fragmentUser/layout/popupwindow_bind_wechat.xml

@@ -76,10 +76,11 @@
                     android:background="@drawable/popup_window_bind_wechat_qrcode_bg">
 
                 <ImageView
+                        android:id="@+id/popupwindow_bind_wechat_image"
                         android:layout_width="203dp"
                         android:layout_height="203dp"
                         android:layout_gravity="center"
-                        android:src="@color/red"></ImageView>
+                        android:src="@color/translucent_background"></ImageView>
             </FrameLayout>
 
 

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

@@ -37,7 +37,7 @@
         <activity
                 android:name=".activity.MainActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
-                android:launchMode="singleTask"
+                android:launchMode="singleTop"
                 android:maxAspectRatio="2.1"
                 android:resizeableActivity="true"
                 android:screenOrientation="landscape"
@@ -171,7 +171,6 @@
         <activity
                 android:name=".activity.SmallFullVideoActivity"
                 android:configChanges="screenLayout|screenSize|keyboardHidden|keyboard|orientation"
-                android:label=""
                 android:launchMode="singleTask"
                 android:maxAspectRatio="2.1"
                 android:resizeableActivity="true"

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

@@ -20,6 +20,7 @@ import com.baidu.duer.bot.directive.payload.AmountInfo;
 import com.baidu.duer.botsdk.BotIntent;
 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.CommentContract;
 import com.edufound.reader.presenter.CommentPresenter;
@@ -71,6 +72,7 @@ public class CommentActivity extends BaseMvpActivity<CommentPresenter> implement
     FrameLayout mQuickItem2;
     @BindView(id = R.id.comment_quick_layout_item3)
     FrameLayout mQuickItem3;
+    private String backName;
 
     @Override
     public int getLayoutId() {
@@ -83,8 +85,12 @@ public class CommentActivity extends BaseMvpActivity<CommentPresenter> implement
         mActivity = this;
         mPresenter = new CommentPresenter();
         mPresenter.attachView(this);
-
+        backName = EApplication.mActivityList.get(EApplication.mActivityList.size() - 2).getLocalClassName();
         addUiClickListener(mBack, o -> {
+            Logger.e("backName:" + backName);
+            if (backName.contains("SmallFullVideoActivity")) {
+                mPresenter.sendBackReceiver();
+            }
             mActivity.finish();
         });
         addUiClickListener(mCloseKuaijie, o -> {
@@ -127,7 +133,6 @@ public class CommentActivity extends BaseMvpActivity<CommentPresenter> implement
         Bundle params = getIntent().getBundleExtra("params_bundle");
         String exampleId = params.getString("id");
         if (TextUtils.isEmpty(exampleId)) {
-            Logger.e("获取参数失败");
         } else {
             mPresenter.getAllComment(String.valueOf(exampleId), String.valueOf(1));
         }
@@ -210,6 +215,10 @@ public class CommentActivity extends BaseMvpActivity<CommentPresenter> implement
     @Override
     protected void onDestroy() {
         mPresenter.activityDestory();
+        Logger.e("backName:" + backName);
+        if (backName.contains("MainActivity")) {
+            mPresenter.sendBackReceiver();
+        }
         super.onDestroy();
     }
 }

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

@@ -2,6 +2,9 @@ package com.edufound.reader.activity;
 
 import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
 import android.net.Uri;
 import android.view.KeyEvent;
 import android.view.ViewGroup;
@@ -15,6 +18,7 @@ import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.MainContract;
 import com.edufound.reader.presenter.MainPresenter;
+import com.edufound.reader.receiver.BackPageReceiver;
 import com.orhanobut.logger.Logger;
 
 import java.util.HashMap;
@@ -114,11 +118,14 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
     @Override
     protected void onPause() {
         super.onPause();
+        BackPageReceiver.unRegisterReceiver(this);
     }
 
     @Override
     protected void onResume() {
         super.onResume();
+        BackPageReceiver.registerReceiver(this, BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
+        BackPageReceiver.registerBackPageReceiverListener(backListener);
     }
 
     @Override
@@ -127,6 +134,17 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         mPresenter.activityDestroy();
     }
 
+    BackPageReceiver.onBackPage backListener = new BackPageReceiver.onBackPage() {
+        @Override
+        public void pageBack(Intent intent) {
+            if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM)) {
+                //从其他页面回来了。查询一下单独的item数据,然后赋值
+                mPresenter.refRecordById(intent.getStringExtra("recordId"));
+            }
+        }
+    };
+
+
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         return mPresenter.onKeyDown(keyCode, event);

+ 17 - 3
app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java

@@ -1,6 +1,7 @@
 package com.edufound.reader.activity;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.os.Build;
 import android.view.ViewGroup;
 import android.widget.ImageView;
@@ -12,14 +13,16 @@ import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.MyCollectionContract;
+import com.edufound.reader.model.MyCollectionModel;
+import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.presenter.MyCollectionPresenter;
 
 import java.util.HashMap;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 import androidx.recyclerview.widget.RecyclerView;
-import io.reactivex.rxjava3.annotations.Nullable;
 
 public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter> implements MyCollectionContract.View {
 
@@ -46,13 +49,12 @@ public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter>
         addUiClickListener(mBack, o -> {
             mActivity.finish();
         });
-
         mPresenter.getFavoritesData();
+
     }
 
     @Override
     protected void onStart() {
-        mPresenter.activityOnStart();
         super.onStart();
     }
 
@@ -109,6 +111,18 @@ public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter>
 
     @Override
     protected void onResume() {
+        mPresenter.activityOnStart();
         super.onResume();
     }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        switch (resultCode) {
+            case MyCollectionModel.ACTIVITY_BACK_RESULT:
+                mPresenter.clearData();
+                mPresenter.getFavoritesData();
+                break;
+        }
+        super.onActivityResult(requestCode, resultCode, data);
+    }
 }

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

@@ -186,7 +186,6 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
         if (mBottomView.getLocalVisibleRect(mScreenRect) || mGridLayout.getChildCount() <= 2) {
             if (isNeedLoad) {
                 isNeedLoad = false;
-                Logger.e("加载数据");
                 mPresenter.setGridData(mGridLayout, mNoRecordLayout);
             }
         } else {

+ 35 - 11
app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java

@@ -1,29 +1,22 @@
 package com.edufound.reader.activity;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.os.Bundle;
 import android.view.KeyEvent;
-import android.widget.FrameLayout;
 import android.widget.ImageView;
-import android.widget.Toast;
 
-import com.baidu.duer.bot.directive.payload.AmountInfo;
-import com.baidu.duer.botsdk.BotIntent;
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.SmallFullVideoContract;
+import com.edufound.reader.model.MyCollectionModel;
+import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.presenter.SmallFullVideoPresenter;
+import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.util.MMKVUtil;
 import com.orhanobut.logger.Logger;
 
-import java.util.HashMap;
-
-import androidx.annotation.NonNull;
-import cn.jzvd.Jzvd;
-import cn.jzvd.JzvdStd;
-import io.reactivex.rxjava3.annotations.Nullable;
-
 public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresenter> implements SmallFullVideoContract.View {
 
 
@@ -32,6 +25,7 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
 
     @BindView(id = R.id.activity_smallfull_video_back)
     ImageView mBack;
+    private String into_Page;
 
     @Override
     public int getLayoutId() {
@@ -40,18 +34,27 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
 
     @Override
     public void initView() {
+        Logger.e("创建smallFullVideoActivity");
         mActivity = this;
         mPresenter = new SmallFullVideoPresenter(getSupportFragmentManager());
         mPresenter.attachView(this);
         addUiClickListener(mBack, o -> {
+            if (into_Page.equals("MyCollection")) {
+                Intent i = new Intent();
+                setResult(MyCollectionModel.ACTIVITY_BACK_RESULT, i);
+            }
             mActivity.finish();
         });
         Bundle params = getIntent().getBundleExtra("params_bundle");
         int index = Integer.valueOf(params.getString("index"));
+        into_Page = params.getString("intoPage");
         String dataJson = params.getString("dataJson");
         if (dataJson.equals("getmmkv")) {
             dataJson = MMKVUtil.getInstance().decodeString("video_data");
         }
+        mPresenter.setInfoPage(into_Page);
+        BackPageReceiver.registerReceiver(this, BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
+        BackPageReceiver.registerBackPageReceiverListener(backListener);
         mPresenter.initFragment(index, dataJson);
     }
 
@@ -99,7 +102,28 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
     @Override
     protected void onDestroy() {
         MMKVUtil.getInstance().removeKey("video_data");
+        BackPageReceiver.unRegisterReceiver(this);
+        mPresenter.activityDestory();
         super.onDestroy();
     }
 
+    @Override
+    protected void onResume() {
+
+        super.onResume();
+    }
+
+
+    BackPageReceiver.onBackPage backListener = new BackPageReceiver.onBackPage() {
+        @Override
+        public void pageBack(Intent intent) {
+            if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM)) {
+                //从其他页面回来了。查询一下单独的item数据,然后赋值
+                Logger.e("收到了回来的广播了:SmallFullVideoActivity");
+                Logger.e("收到了回来的广播了:--------SmallFullVideoActivity");
+                mPresenter.refRecordById(intent.getStringExtra("recordId"));
+            }
+        }
+    };
+
 }

+ 0 - 1
app/src/main/java/com/edufound/reader/adapter/CommentItemAdapter.java

@@ -74,7 +74,6 @@ public class CommentItemAdapter extends RecyclerView.Adapter<CommentItemHolder>
         if (mListData.get(position).getGmtCreated() != null) {
             holder.mItemTime.setText("" + TimeUtil.timeStamp2Date(Long.valueOf(mListData.get(position).getGmtCreated()), "MM-dd"));
         }
-        Logger.e("index=" + position + "--mListData.get(position).getIsLike():" + mListData.get(position).getIsLike());
         if (mListData.get(position).getIsLike()) {
             holder.mThumbStatus.setImageResource(R.drawable.adapter_item_comment_item_thumb_true);
         } else {

+ 6 - 0
app/src/main/java/com/edufound/reader/adapter/MyCollectionItemAdapter.java

@@ -54,6 +54,12 @@ public class MyCollectionItemAdapter extends RecyclerView.Adapter<RecyclerView.V
         notifyDataSetChanged();
     }
 
+    public void addByPosition(int position, UserRecordBean bean) {
+        mListData.add(position, bean);
+        notifyItemRangeInserted(position, 1);
+        notifyDataSetChanged();
+    }
+
     public void setOnItemClickListener(RecyclerItemClickListener listener) {
         mRecyclerItemClickListener = listener;
     }

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

@@ -64,6 +64,7 @@ public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
         holder.mVideo.setUp(new JZDataSource(mListData.get(position).getUserRead().getVideoPath()), JzvdStd.SCREEN_FULLSCREEN, JZMediaIjk.class);
         GlideUtils.loadImageSizeKipMemoryCache(mContext, mListData.get(position).getUserRead().getCoverImg(), holder.mVideo.posterImageView);
         holder.initDanMu(mListData.get(position).getUserRead().getId());
+        holder.postPlayLog(mListData.get(position).getUserRead().getId());
         holder.mVideo.startPreloading();
         holder.mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override
@@ -113,7 +114,7 @@ class VideoHolder extends RecyclerView.ViewHolder {
         mVideo = itemView.findViewById((R.id.slidevideo_video));
         mMarqueen = itemView.findViewById(R.id.slidevideo_video_marqueen);
         mSwitch = itemView.findViewById(R.id.slidevideo_video_switch);
-        mSwitch.setChecked(false);
+        mSwitch.setChecked(true);
 
         if (mSwitch.isChecked()) {
             mMarqueen.setVisibility(View.VISIBLE);
@@ -124,6 +125,21 @@ class VideoHolder extends RecyclerView.ViewHolder {
         }
     }
 
+
+    public void postPlayLog(String readid) {
+        OkHttpClient.doPostAsync(mContext, new HttpInfo.Builder().setUrl(Consts.getFinalApi() + "/playLog").addParamJson("{\"userReadId\":\"" + readid + "\",\"playStopTime\":\"0\",\"channel\":\"" + Consts.getUmengChannel() + "\"}"), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+            }
+        });
+    }
+
+
     public void initDanMu(String exampleId) {
         OkHttpClient.doGetAsync(mContext, new HttpInfo.Builder().setUrl(Consts.getFinalApi() + "/posts/list").addParam("columnId", exampleId).addParam("pageNo", String.valueOf(1)).addParam("pageSize", "1000"), new Callback() {
             @Override
@@ -131,7 +147,6 @@ class VideoHolder extends RecyclerView.ViewHolder {
                 HttpResultBean<HttpResultDataListBean<CommentListBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<CommentListBean>>>() {
                 }.getType());
 
-                Logger.e("弹幕:" + bean.getData().getList().size());
                 if (bean.getData().getList() == null || bean.getData().getList().size() == 0) {
                     Logger.e("没有弹幕");
                     mSwitch.setVisibility(View.INVISIBLE);

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

@@ -86,6 +86,11 @@ public class UserApiServerImpl implements userApiServer {
     public void getBaiDuUserPhone(Activity activity, String token, Callback callback) {
         OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(BotConstants.GET_USER_PHONE).addHead("Authorization", "Bearer " + token), callback);
     }
+
+    @Override
+    public void getBindWeChatPath(Activity activity, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/user/bindWxQrCode"), callback);
+    }
 }
 
 
@@ -134,4 +139,6 @@ interface userApiServer {
 
     void getBaiDuUserPhone(Activity activity, String token, Callback callback);
 
+    void getBindWeChatPath(Activity activity, Callback callback);
+
 }

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

@@ -113,14 +113,15 @@ public abstract class BaseActivity extends AppCompatActivity {
         NetworkChangeReceiver.registerObserver(NetStateChangeObserver);
         //注册登录广播
         registerReceiver(loginReceiver, new IntentFilter(LOGIN_SUCCESS_ACTION));
-
         BotRegisterListener.registerListener(mBotIntentCallBack, mIAccountChargeMsgListener);
+
     }
 
 
     @Override
     protected void onDestroy() {
         super.onDestroy();
+        EApplication.mActivityList.remove(this);
         BotRegisterListener.removeListener(mBotIntentCallBack);
         clearDisposable();
         unregisterReceiver(mHomeReceiver);
@@ -228,6 +229,11 @@ public abstract class BaseActivity extends AppCompatActivity {
         }
     };
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+    }
 
     protected void onLoginSuccess() {
     }
@@ -342,7 +348,6 @@ public abstract class BaseActivity extends AppCompatActivity {
     IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() {
         @Override
         public void handleIntent(BotIntent intent, String customData) {
-            Logger.e("activity---intent.name:" + intent.name);
             if (intent.name.equals("all_login")) {
                 //用户主动要求登录
                 EfunboxUtil.userLogin(EApplication.mActivityList.get(EApplication.mActivityList.size() - 1));
@@ -350,17 +355,14 @@ public abstract class BaseActivity extends AppCompatActivity {
             } else if (intent.name.equals("user_info")) {
                 //获取是不是百度VIP
                 Consts.setmConstsBaiDuUserBean(mGson.fromJson(customData, BaiDuUserInfo.class));
-                Logger.e("json----" + mGson.toJson(Consts.getmConstsBaiDuUserBean()));
                 BotRegisterListener.BaiDuLogin();
                 return;
             }
             if (BotRegisterListener.isNoLoginIntent(intent)) {
                 //不是获取手机号
-                Logger.e("不是获取手机号--不是获取手机号");
                 botHandleIntent(intent, customData);
             } else {
                 //是获取手机号
-                Logger.e("是获取手机号--是获取手机号");
                 if (intent.slots.get(0).value.equals("SUCCESS")) {
                     //获取手机号Token成功
                     String token = intent.slots.get(1).value;
@@ -371,14 +373,12 @@ public abstract class BaseActivity extends AppCompatActivity {
                         public void onSuccess(HttpInfo info) throws IOException {
                             JSONObject object = JSONObject.parseObject(info.getRetDetail().toString());
                             String phone = JSONObject.parseObject(object.getString("data")).getString("phone");
-                            Logger.e("获取的手机号:" + phone);
                             if (EfunboxUtil.isMobileNO(phone)) {
                                 Map<String, String> map = new HashMap<>();
                                 map.put("deviceCode", DeviceUuidFactory.getUuid());
                                 map.put("channel", Consts.getUmengChannel());
                                 map.put("mobileNo", phone);
                                 map.put("nickName", EfunboxUtil.setPhoneMiddle(phone));
-                                Logger.e("Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId():" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
                                 map.put("userId", Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
                                 if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
                                     //如果没有,默认给一年级
@@ -387,11 +387,9 @@ public abstract class BaseActivity extends AppCompatActivity {
                                     map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE));
                                 }
                                 String json = getGson().toJson(map);
-                                Logger.e("json:" + json);
                                 userApiServer.registerUserId(topActivity, json, new Callback() {
                                     @Override
                                     public void onSuccess(HttpInfo info) throws IOException {
-                                        Logger.e("手机号注册成功:" + info.getRetDetail());
                                         HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
                                         }.getType());
                                         Consts.setUID(bean.getData().getUid());
@@ -428,13 +426,11 @@ public abstract class BaseActivity extends AppCompatActivity {
 
         @Override
         public void onClickLink(String url, HashMap<String, String> paramMap) {
-            Logger.e("onClickLink");
             botOnClickLink(url, paramMap);
         }
 
         @Override
         public void onHandleScreenNavigatorEvent(int event) {
-            Logger.e("onHandleScreenNavigatorEvent");
             botOnHandleScreenNavigatorEvent(event);
         }
     };
@@ -443,7 +439,6 @@ public abstract class BaseActivity extends AppCompatActivity {
     IAccountChargeMsgListener mIAccountChargeMsgListener = new IAccountChargeMsgListener() {
         @Override
         public void onLinkAccountSucceed(String s, String s1) {
-            Logger.e("onLinkAccountSucceed:s--" + s + "---s1:" + s1);
             botOnLinkAccountSucceed(s, s1);
         }
 
@@ -451,7 +446,6 @@ public abstract class BaseActivity extends AppCompatActivity {
         public void onChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount,
                                           AmountInfo capturedAmount, long creationTimestamp,
                                           String baiduOrderReferenceId, String sellerOrderId, String msg) {
-            Logger.e("baseActivity---onChargeStatusUpdated");
             botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
         }
 

+ 15 - 4
app/src/main/java/com/edufound/reader/base/BaseFragment.java

@@ -4,6 +4,8 @@ import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -58,15 +60,16 @@ public abstract class BaseFragment extends Fragment {
         // 注册网络广播
         NetworkChangeReceiver.registerReceiver(getContext());
         NetworkChangeReceiver.registerObserver(NetStateChangeObserver);
+
     }
 
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
         View view = inflater.inflate(this.getLayoutId(), container, false);
-
         initView(view);
         initViewListener();
+
         return view;
     }
 
@@ -121,7 +124,6 @@ public abstract class BaseFragment extends Fragment {
 
     @Override
     public void onDestroy() {
-        Logger.e("base fragment onDestroy");
         BotRegisterListener.removeListener(mBotIntentCallBack);
         clearDisposable();
         super.onDestroy();
@@ -319,8 +321,7 @@ public abstract class BaseFragment extends Fragment {
             Logger.e("msg:" + msg);
             Logger.e("token:" + token);
             if (purchaseResult.equals("SUCCESS")) {
-                //成功,但是重新获取信息没有给返回
-                BotRegisterListener.getBaiDuVipInfo();
+                //成功
             } else if (purchaseResult.equals("ERROR")) {
                 //支付失败
             }
@@ -328,4 +329,14 @@ public abstract class BaseFragment extends Fragment {
 
         }
     };
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        if (!isNeedLogin) {
+            BotRegisterListener.getBaiDuVipInfo();
+        }
+    }
+
 }

+ 5 - 4
app/src/main/java/com/edufound/reader/base/BaseMvpFragment.java

@@ -15,10 +15,11 @@ public abstract class BaseMvpFragment<T extends BasePresenter> extends BaseFragm
     @Override
     public void onDestroyView() {
         super.onDestroyView();
-        if (mPresenter != null) {
-            mPresenter.detachView();
-        }
-        super.onDestroyView();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
     }
 
     /**

+ 18 - 4
app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java

@@ -11,13 +11,21 @@ import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.util.Consts;
 import com.orhanobut.logger.Logger;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class BotRegisterListener {
+
+
+    private static List<IAccountChargeMsgListener> mIAccountListener = new ArrayList<>();
+
+
     public static void registerListener(IBotIntentCallback iBotIntentCallback, IAccountChargeMsgListener iAccountChargeMsgListener) {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //如果是百度。就注册百度的接口
             BotMessageListener.getInstance().addCallback(iBotIntentCallback);
-            Logger.e("注册百度接口:"+(iAccountChargeMsgListener==null));
-            BotSdk.getInstance().setAccountAndChargeListener(iAccountChargeMsgListener);
+            mIAccountListener.add(iAccountChargeMsgListener);
+            BotSdk.getInstance().setAccountAndChargeListener(mIAccountListener.get(mIAccountListener.size() - 1));
         }
     }
 
@@ -25,12 +33,18 @@ public class BotRegisterListener {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //如果是百度。就删除百度
             BotMessageListener.getInstance().removeCallback(iBotIntentCallback);
-            BotSdk.getInstance().setAccountAndChargeListener(null);
+            if (mIAccountListener.size() > 0) {
+                mIAccountListener.remove(mIAccountListener.get(mIAccountListener.size() - 1));
+                if (mIAccountListener.size() > 0) {
+                    BotSdk.getInstance().setAccountAndChargeListener(mIAccountListener.get(mIAccountListener.size() - 1));
+                } else {
+                    BotSdk.getInstance().setAccountAndChargeListener(null);
+                }
+            }
         }
     }
 
     public static void BaiDuLogin() {
-        Logger.e("申请百度账号");
         LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
         linkClickedEventPayload.url = mockGrantPhoneNumberUrl();
         BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);

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

@@ -31,6 +31,7 @@ public interface CommentContract {
         void moveRecyclearView(int scroll);
 
         void doPostsSuccess();
+
     }
 
     interface Presenter {
@@ -49,5 +50,7 @@ public interface CommentContract {
         void clearReCommentId();
 
         void activityDestory();
+
+        void sendBackReceiver();
     }
 }

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

@@ -38,5 +38,7 @@ public interface MainContract {
         void userIsLogin();
 
         void registerMobile(String mobileNo);
+
+        void refRecordById(String id);
     }
 }

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

@@ -28,5 +28,7 @@ public interface MyCollectionContract {
 
         void activityOnStart();
 
+        void clearData();
+
     }
 }

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

@@ -33,6 +33,7 @@ public interface MyTabFragmentContract {
 
         void getIsBuySuccess(String date);
 
+        void changeRecordStatusSuccess(int position, String status);
     }
 
     interface Presenter {
@@ -52,5 +53,6 @@ public interface MyTabFragmentContract {
         void changeMyRecordStatusById(String json);
 
 
+
     }
 }

+ 1 - 0
app/src/main/java/com/edufound/reader/contract/RecommendFragmentContract.java

@@ -42,6 +42,7 @@ public interface RecommendFragmentContract {
         void setLikes(String count);
 
         String getDataJson();
+
     }
 
     interface Presenter {

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

@@ -11,5 +11,11 @@ public interface SmallFullVideoContract {
 
     interface Presenter {
         void initFragment(int index, String dataJson);
+
+        void activityDestory();
+
+        void setInfoPage(String page);
+
+        void refRecordById(String id);
     }
 }

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

@@ -283,4 +283,13 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
             mOverDate.setText("到期时间:" + date);
         }
     }
+
+    @Override
+    public void changeRecordStatusSuccess(int position, String status) {
+        if (status.equals("DISABLE")) {
+            ((ImageView) mGridLayout.getChildAt(position).getTag()).setImageResource(R.drawable.adapter_item_record_pri);
+        } else if (status.equals("NORMAL")) {
+            ((ImageView) mGridLayout.getChildAt(position).getTag()).setImageResource(R.drawable.adapter_item_record_pub);
+        }
+    }
 }

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

@@ -30,8 +30,6 @@ import java.util.HashMap;
 
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
-import cn.jzvd.Jzvd;
-import cn.jzvd.JzvdStd;
 import io.reactivex.rxjava3.annotations.Nullable;
 
 public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresenter> implements RecommendFragmentContract.View {
@@ -71,6 +69,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     String mDataJson = null;
 
+    String intoPage;
 
     public RecommendFragment(int type) {
         mFragmentType = type;
@@ -121,6 +120,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         AnimatorSet animatorSet = new AnimatorSet();
         animatorSet.play(mToRecordScaleXAnim).with(mToRecordScaleYAnim);
         animatorSet.start();
+        mPresenter.setIntoPage(intoPage);
     }
 
     @Override
@@ -128,6 +128,11 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         return R.layout.fragment_main_recommend;
     }
 
+
+    public RecommendFragmentPresenter getPresenter() {
+        return mPresenter;
+    }
+
     @Override
     protected void initViewListener() {
 
@@ -202,6 +207,10 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         mDataJson = json;
     }
 
+    public void setInToPage(String page) {
+        intoPage = page;
+    }
+
 
     @Override
     public void setTopStatus(UserRecordBean bean) {
@@ -288,9 +297,11 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         return mDataJson;
     }
 
+
     @Override
     public void onDestroy() {
         mPresenter.activityDestory();
+        mPresenter.detachView();
         super.onDestroy();
     }
 
@@ -312,7 +323,6 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     @Override
     public void onDestroyView() {
-        mPresenter.activityDestory();
         super.onDestroyView();
     }
 
@@ -351,4 +361,6 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
         Logger.e("botOnBuyStatusUpdated:");
     }
+
+
 }

+ 3 - 1
app/src/main/java/com/edufound/reader/model/MyCollectionModel.java

@@ -9,10 +9,12 @@ import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 
 public class MyCollectionModel implements MyCollectionContract.Model {
+    public static final int ACTIVITY_BACK_RESULT = 0x3322;
+
     private String API = Consts.getFinalApi();
 
     @Override
-    public void getFavorites(Activity activity, int pageIndex,  Callback callback) {
+    public void getFavorites(Activity activity, int pageIndex, Callback callback) {
         OkHttpClient.doGetAsync(activity, HttpInfo.Builder().setUrl(API + "/favorites").addParam("pageNo", String.valueOf(pageIndex)).addParam("pageSize", "100"), callback);
     }
 

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

@@ -15,7 +15,6 @@ public class PopWindowModelImpl implements PopWindowModel {
 
     @Override
     public void upLoadRecord(Activity activity, String path, ProgressCallback callback) {
-        Logger.e("上传的:" + path);
         OkHttpClient.doUploadFile(activity, new HttpInfo.Builder().setUrl(API + "/file/upload").addUploadFile("uploadFile", path, callback));
     }
 

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

@@ -194,7 +194,7 @@ public class PopWindowUtil {
     }
 
 
-    public static void showBindWeChatWindow(Context context, View parent, PopUtilClickListener listener) {
+    public static void showBindWeChatWindow(Activity context, View parent, PopUtilClickListener listener) {
         initPresenter();
         if (checkWindowShoing()) {
             return;
@@ -202,10 +202,12 @@ public class PopWindowUtil {
         View dialog_view = LayoutInflater.from(context).inflate(R.layout.popupwindow_bind_wechat, null);
         dialog_view.setFocusable(true);
         ImageView back = dialog_view.findViewById(R.id.popupwindow_bindwechat_back);
+        ImageView image = dialog_view.findViewById(R.id.popupwindow_bind_wechat_image);
         setClickListener(back, o -> {
             mPopupWindow.dismiss();
             listener.clickCancel();
         });
+        mPresenter.getBindWeChatPath(context, image);
         mPopupWindow = new PopupWindow(dialog_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         mPopupWindow.setFocusable(true);
         mPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);

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

@@ -134,6 +134,7 @@ public class CharacterFragmentPresenter extends BasePresenter<CharacterFragmentC
             Bundle bundle = new Bundle();
             bundle.putString("index", index + "");
             bundle.putString("dataJson", "getmmkv");
+            bundle.putString("intoPage", "Character");
             //数据太多了。直接传不过去,通过MMKV写一下再读一下
             MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
             ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);

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

@@ -146,7 +146,10 @@ public class CommentPresenter extends BasePresenter<CommentContract.View> implem
                     public void run() {
                         mCommentItemAdapter.notifyDataSetChanged();
                         mView.moveRecyclearView(0);
-                        mView.setMaxCommentCount(commentSize++);
+                        Logger.e("之前的--commentSize:" + commentSize);
+                        commentSize = commentSize + 1;
+                        mView.setMaxCommentCount(commentSize);
+                        Logger.e("之后的---commentSize:" + commentSize);
                         mView.doPostsSuccess();
                     }
                 });
@@ -231,6 +234,12 @@ public class CommentPresenter extends BasePresenter<CommentContract.View> implem
 
     @Override
     public void activityDestory() {
+
+    }
+
+    @Override
+    public void sendBackReceiver() {
+        Logger.e("发送广播");
         Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
         intent.putExtra("recordId", this.exampleId);
         mView.getActivity().sendBroadcast(intent);

+ 13 - 0
app/src/main/java/com/edufound/reader/presenter/MainPresenter.java

@@ -242,6 +242,19 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
 
     }
 
+    @Override
+    public void refRecordById(String id) {
+        switch (mRadioCheckIndex) {
+            case 1:
+                mRecommendFragment.getPresenter().getRecordInfoById(id);
+                break;
+            case 2:
+                mFollowFragment.getPresenter().getRecordInfoById(id);
+                break;
+        }
+
+    }
+
 
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         switch (keyCode) {

+ 0 - 6
app/src/main/java/com/edufound/reader/presenter/MessagePresenter.java

@@ -83,7 +83,6 @@ public class MessagePresenter extends BasePresenter<MessageContract.View> implem
         mModel.getAllMessage(mView.getActivity(), String.valueOf(mPageIndex), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("info:" + info.getRetDetail());
                 HttpResultBean<HttpResultDataListBean<MessageBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<MessageBean>>>() {
                 }.getType());
                 if (mDataList == null || mDataList.size() <= 0) {
@@ -103,7 +102,6 @@ public class MessagePresenter extends BasePresenter<MessageContract.View> implem
 
             @Override
             public void onFailure(HttpInfo info) throws IOException {
-                Logger.e("info-onFailure:" + info.getRetDetail());
             }
         });
     }
@@ -113,7 +111,6 @@ public class MessagePresenter extends BasePresenter<MessageContract.View> implem
         mModel.doReadMessage(mView.getActivity(), "{\"id\":\"" + id + "\"}", new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("已读消息:info:" + info.getRetDetail());
                 mView.getRootView().post(new Runnable() {
                     @Override
                     public void run() {
@@ -125,7 +122,6 @@ public class MessagePresenter extends BasePresenter<MessageContract.View> implem
 
             @Override
             public void onFailure(HttpInfo info) throws IOException {
-                Logger.e("已读消息失败:info:" + info.getRetDetail());
             }
         });
     }
@@ -135,12 +131,10 @@ public class MessagePresenter extends BasePresenter<MessageContract.View> implem
         mModel.doReadAllMessage(mView.getActivity(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("全部已读成功:" + info.getRetDetail());
             }
 
             @Override
             public void onFailure(HttpInfo info) throws IOException {
-                Logger.e("全部已读失败:" + info.getRetDetail());
             }
         });
     }

+ 48 - 20
app/src/main/java/com/edufound/reader/presenter/MyCollectionPresenter.java

@@ -1,11 +1,15 @@
 package com.edufound.reader.presenter;
 
+import android.content.BroadcastReceiver;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.graphics.Rect;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Toast;
 
+import com.edufound.reader.activity.OthersRecordActivity;
 import com.edufound.reader.activity.SmallFullVideoActivity;
 import com.edufound.reader.adapter.MyCollectionItemAdapter;
 import com.edufound.reader.base.BaseActivity;
@@ -17,6 +21,7 @@ import com.edufound.reader.bean.UserRecordBean;
 import com.edufound.reader.contract.MyCollectionContract;
 import com.edufound.reader.listener.RecyclerItemClickListener;
 import com.edufound.reader.model.MyCollectionModel;
+import com.edufound.reader.model.MyFollowModel;
 import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.MMKVUtil;
@@ -42,6 +47,7 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
     int mTotalSize = 0;
     int mPageIndex = 1;
     boolean loadOver = false;
+    boolean rvAdditemDecoration = false;
 
     public MyCollectionPresenter() {
         mModel = new MyCollectionModel();
@@ -61,9 +67,13 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
         myCollectionItemAdapter = new MyCollectionItemAdapter(mView.getActivity(), mDataList);
         GridLayoutManager gridLayoutManager = new GridLayoutManager(mView.getActivity(), 2);
         gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
-        rv.addItemDecoration(new MyCollectionItemDecoration(
-                SizeUtils.dp2px(mView.getActivity(), 27f),
-                SizeUtils.dp2px(mView.getActivity(), 27f)));
+        if (!rvAdditemDecoration) {
+            rv.addItemDecoration(new MyCollectionItemDecoration(
+                    SizeUtils.dp2px(mView.getActivity(), 27f),
+                    SizeUtils.dp2px(mView.getActivity(), 27f)));
+            rvAdditemDecoration = true;
+        }
+
         rv.setLayoutManager(gridLayoutManager);
         rv.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
             @Override
@@ -82,10 +92,12 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
                 Bundle bundle = new Bundle();
                 bundle.putString("index", position + "");
                 bundle.putString("dataJson", "getmmkv");
+                bundle.putString("intoPage", "MyCollection");
                 //数据太多了。直接传不过去,通过MMKV写一下再读一下
                 MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
 //            bundle.putString("dataJson", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
-                ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
+//                ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
+                ((BaseActivity) mView.getActivity()).toNextActivityForResult(SmallFullVideoActivity.class, bundle, MyCollectionModel.ACTIVITY_BACK_RESULT);
             }
         });
         rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@@ -108,7 +120,6 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
         mModel.getFavorites(mView.getActivity(), mPageIndex, new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("获取收藏列表成功:" + info.getRetDetail());
                 HttpResultBean<HttpResultDataListBean<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<UserRecordBean>>>() {
                 }.getType());
                 if (mDataList == null || mDataList.size() <= 0) {
@@ -137,14 +148,23 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
     @Override
     public void activityDestory() {
         Consts.setIsNeedRemoveBR(false);
-        BackPageReceiver.unRegisterReceiver(mView.getActivity());
+        mView.getActivity().unregisterReceiver(receiver);
     }
 
     @Override
     public void activityOnStart() {
         Logger.e("注册广播");
-        BackPageReceiver.registerReceiver(mView.getActivity(), BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM);
-        BackPageReceiver.registerBackPageReceiverListener(backListener);
+        IntentFilter intentFilter = new IntentFilter(BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM);
+        mView.getActivity().registerReceiver(receiver, intentFilter);
+    }
+
+    @Override
+    public void clearData() {
+        mDataList = null;
+        myCollectionItemAdapter = null;
+        mTotalSize = 0;
+        mPageIndex = 1;
+        loadOver = false;
     }
 
 
@@ -166,21 +186,29 @@ public class MyCollectionPresenter extends BasePresenter<MyCollectionContract.Vi
         }
     }
 
-    BackPageReceiver.onBackPage backListener = new BackPageReceiver.onBackPage() {
+
+    BroadcastReceiver receiver = new BroadcastReceiver() {
         @Override
-        public void pageBack(Intent intent) {
-            Logger.e("收的到广播吗");
-            if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM)) {
-                //删除item
-                int position = Integer.valueOf(intent.getStringExtra("removePosition"));
-                Logger.e("position:" + position);
-                myCollectionItemAdapter.removeByPosition(position);
-                if (mTotalSize > 0) {
-                    mTotalSize--;
-                }
-            }
+        public void onReceive(Context context, Intent intent) {
+//            if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REMOVE_VIDEO_ITEM)) {
+//                //删除item
+//                int position = Integer.valueOf(intent.getStringExtra("removePosition"));
+//                Logger.e("position:" + position);
+//                myCollectionItemAdapter.removeByPosition(position);
+//                if (mTotalSize > 0) {
+//                    mTotalSize--;
+//                }
+//            } else if (intent.getAction().equals(BackPageReceiver.BACK_HOME_ADD_VIDEO_ITEM)) {
+//                int position = Integer.valueOf(intent.getStringExtra("addPosition"));
+//                Logger.e("position:" + position);
+////                myCollectionItemAdapter.removeByPosition(position);
+////                if (mTotalSize > 0) {
+////                    mTotalSize--;
+////                }
+//            }
         }
     };
+
 }
 
 class MyCollectionItemDecoration extends RecyclerView.ItemDecoration {

+ 3 - 0
app/src/main/java/com/edufound/reader/presenter/MyFollowPresenter.java

@@ -109,6 +109,7 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
 
     @Override
     public void getFollowAll() {
+        Logger.e("getFollowAll");
         if (mDataList != null && mDataList.size() >= mTotalSize) {
             loadOver = true;
             Toast.makeText(mView.getActivity(), "没有更多了", Toast.LENGTH_SHORT).show();
@@ -157,6 +158,8 @@ public class MyFollowPresenter extends BasePresenter<MyFollowContract.View> impl
         myFollowItemAdapter.removeData(position);
         if (mTotalSize > 0) {
             mTotalSize--;
+        } else {
+            mView.getNoFollow().setVisibility(View.VISIBLE);
         }
     }
 

+ 116 - 149
app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java

@@ -49,6 +49,7 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
     List<UserRecordBean> mDataList;
     int mListStart = 0;
     int mListEnd = 6;
+    int curPosition = 0;
 
     public MyTabFragmentPresenter(Context context) {
         mContext = context;
@@ -100,116 +101,6 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         }
     }
 
-
-    @Override
-    public void onDestory(GridLayout layout) {
-        BackPageReceiver.unRegisterReceiver(mView.getActivity());
-        if (mUserFragmentHandler != null) {
-            mUserFragmentHandler.removeMessages(MyTabFragmentModel.LOAD_GRID);
-            mUserFragmentHandler = null;
-        }
-        layout.removeAllViews();
-        layout = null;
-        mView = null;
-    }
-
-    @Override
-    public void getMyRecords() {
-        mModel.getMyRecords(mView.getActivity(), new Callback() {
-            @Override
-            public void onSuccess(HttpInfo info) throws IOException {
-                HttpResultBean<List<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<UserRecordBean>>>() {
-                }.getType());
-                mDataList = bean.getData();
-                mView.loadMoreItem();
-                mView.setRecordSize(mDataList.size());
-
-            }
-
-            @Override
-            public void onFailure(HttpInfo info) throws IOException {
-                Logger.e("获取我的朗读列表错误:" + info.getRetDetail());
-            }
-        });
-    }
-
-    @Override
-    public void getMyInfo() {
-        Logger.e("获取个人信息");
-        if (mView == null) {
-            return;
-        }
-        mModel.getMyInfo(mView.getActivity(), new Callback() {
-            @Override
-            public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("获取用户中心信息接口成功:" + info.getRetDetail());
-                HttpResultBean<MyInfoBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<MyInfoBean>>() {
-                }.getType());
-                mView.setUserInfo(bean.getData());
-            }
-
-            @Override
-            public void onFailure(HttpInfo info) throws IOException {
-
-            }
-        });
-    }
-
-    @Override
-    public void getIsBuy() {
-        mOrderApi.isBuy(mView.getActivity(), new Callback() {
-            @Override
-            public void onSuccess(HttpInfo info) throws IOException {
-                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
-                }.getType());
-                if (Boolean.valueOf(bean.getData())) {
-
-                } else {
-                    Logger.e("没有购买");
-                }
-//                mView.getIsBuySuccess(Boolean.valueOf(bean.getData()));
-            }
-
-            @Override
-            public void onFailure(HttpInfo info) throws IOException {
-
-            }
-        });
-    }
-
-    @Override
-    public void getAuth() {
-        mOrderApi.getAuth(mView.getActivity(), new Callback() {
-            @Override
-            public void onSuccess(HttpInfo info) throws IOException {
-                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
-                }.getType());
-                mView.getIsBuySuccess(bean.getData());
-            }
-
-            @Override
-            public void onFailure(HttpInfo info) throws IOException {
-
-            }
-        });
-    }
-
-    @Override
-    public void changeMyRecordStatusById(String json) {
-        mModel.changeMyRecordStatusById(mView.getActivity(), json, new Callback() {
-            @Override
-            public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("改变状态成功:" + info.getRetDetail());
-            }
-
-            @Override
-            public void onFailure(HttpInfo info) throws IOException {
-                Logger.e("改变状态失败");
-            }
-        });
-    }
-
-
     private void setGridItemView(GridLayout gridLayout, int index) {
 
         if (mView == null) {
@@ -263,7 +154,8 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
                         public void onAnimationEnd(Animator animator) {
                             gridLayout.removeView(view);
                             mView.loadMoreItem();
-                            mView.setRecordSize(mDataList.size() - 1);
+                            mDataList.remove(index);
+                            mView.setRecordSize(mDataList.size());
                             changeMyRecordStatusById("{\"id\": " + reader.getId() + ", \t\"status\": \"DEL\" }");
 
                         }
@@ -289,13 +181,16 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         } else if (reader.getStatus().equals("NORMAL")) {
             imgPriv.setImageResource(R.drawable.adapter_item_record_pub);
         }
+        view.setTag(imgPriv);
         mView.addUiClick(imgPriv, o -> {
             if (reader.getStatus().equals("DISABLE")) {
                 //当前是隐藏状态,需要公开
+                curPosition = index;
                 changeMyRecordStatusById("{\"id\": " + reader.getId() + ", \t\"status\": \"NORMAL\" }");
                 imgPriv.setImageResource(R.drawable.adapter_item_record_pub);
             } else if (reader.getStatus().equals("NORMAL")) {
                 //当前正常状态,需要隐藏
+                curPosition = index;
                 changeMyRecordStatusById("{\"id\": " + reader.getId() + ", \t\"status\": \"DISABLE\" }");
                 imgPriv.setImageResource(R.drawable.adapter_item_record_pri);
             }
@@ -304,6 +199,7 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
             Bundle bundle = new Bundle();
             bundle.putString("index", index + "");
             bundle.putString("dataJson", "getmmkv");
+            bundle.putString("intoPage", "MyTab");
             //数据太多了。直接传不过去,通过MMKV写一下再读一下
             MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
             ((BaseActivity) mView.getActivity()).toNextActivity(SmallFullVideoActivity.class, bundle);
@@ -321,6 +217,115 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         gridLayout.addView(view);
     }
 
+    @Override
+    public void onDestory(GridLayout layout) {
+        BackPageReceiver.unRegisterReceiver(mView.getActivity());
+        if (mUserFragmentHandler != null) {
+            mUserFragmentHandler.removeMessages(MyTabFragmentModel.LOAD_GRID);
+            mUserFragmentHandler = null;
+        }
+        layout.removeAllViews();
+        layout = null;
+        mView = null;
+    }
+
+    @Override
+    public void getMyRecords() {
+        mModel.getMyRecords(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<List<UserRecordBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<UserRecordBean>>>() {
+                }.getType());
+                mDataList = bean.getData();
+                mView.loadMoreItem();
+                mView.setRecordSize(mDataList.size());
+
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("获取我的朗读列表错误:" + info.getRetDetail());
+            }
+        });
+    }
+
+    @Override
+    public void getMyInfo() {
+        if (mView == null) {
+            return;
+        }
+        mModel.getMyInfo(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<MyInfoBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<MyInfoBean>>() {
+                }.getType());
+                mView.setUserInfo(bean.getData());
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+    @Override
+    public void getIsBuy() {
+        mOrderApi.isBuy(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                }.getType());
+                if (Boolean.valueOf(bean.getData())) {
+
+                } else {
+                    Logger.e("没有购买");
+                }
+//                mView.getIsBuySuccess(Boolean.valueOf(bean.getData()));
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+    @Override
+    public void getAuth() {
+        mOrderApi.getAuth(mView.getActivity(), new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                }.getType());
+                mView.getIsBuySuccess(bean.getData());
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+
+            }
+        });
+    }
+
+    @Override
+    public void changeMyRecordStatusById(String json) {
+        mModel.changeMyRecordStatusById(mView.getActivity(), json, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                HttpResultBean<UserRecordBean.UserRead> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserRecordBean.UserRead>>() {
+                }.getType());
+                mDataList.get(curPosition).getUserRead().setStatus(bean.getData().getStatus());
+                mView.changeRecordStatusSuccess(curPosition, bean.getData().getStatus());
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("改变状态失败");
+            }
+        });
+    }
+
 
     Handler mUserFragmentHandler = new Handler(new Handler.Callback() {
         @Override
@@ -339,10 +344,8 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
     BackPageReceiver.onBackPage backListener = new BackPageReceiver.onBackPage() {
         @Override
         public void pageBack(Intent intent) {
-            Logger.e("收到数据了");
             if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REF_USER_INFO)) {
                 //刷新一下用户信息
-                Logger.e("刷新用户数据");
                 getMyInfo();
             }
 
@@ -353,40 +356,4 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
 }
 
 
-////平均分item,rv的itemdecoration
-//class GridSpaceItemDecoration extends RecyclerView.ItemDecoration {
-//
-//    private int mSpanCount;//横条目数量
-//    private int mRowSpacing;//行间距
-//    private int mColumnSpacing;// 列间距
-//
-//    /**
-//     * @param spanCount     列数
-//     * @param rowSpacing    行间距
-//     * @param columnSpacing 列间距
-//     */
-//    public GridSpaceItemDecoration(int spanCount, int rowSpacing, int columnSpacing) {
-//        this.mSpanCount = spanCount;
-//        this.mRowSpacing = rowSpacing;
-//        this.mColumnSpacing = columnSpacing;
-//    }
-//
-//    @Override
-//    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
-//        int position = parent.getChildAdapterPosition(view); // 获取view 在adapter中的位置。
-//        int column = position % mSpanCount; // view 所在的列
-//
-//        // 列间距
-//        outRect.left = mColumnSpacing;
-//
-//        // 如果position > 行数,说明不是在第一行,则不指定行高,其他行的上间距为 top=mRowSpacing
-//        if (position >= mSpanCount) {
-//            outRect.top = mRowSpacing; // item top
-//        }
-//
-////        if ((position % 2) != 0) {
-////            outRect.top = mRowSpacing + SizeUtils.dp2px(Consts.getmApplicAtion(), 50);
-////        }
-//    }
-//}
 

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

@@ -96,6 +96,7 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
             Bundle bundle = new Bundle();
             bundle.putString("index", index + "");
             bundle.putString("dataJson", "getmmkv");
+            bundle.putString("intoPage", "OthersRecord");
             //数据太多了。直接传不过去,通过MMKV写一下再读一下
             MMKVUtil.getInstance().encode("video_data", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
 //            bundle.putString("dataJson", ((BaseActivity) mView.getActivity()).getGson().toJson(mDataList));
@@ -171,7 +172,6 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
         mModel.doFollow(mView.getActivity(), json, new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("关注接口成功:" + info.getRetDetail());
                 HttpResultBean<FansBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<FansBean>>() {
                 }.getType());
                 if (bean.getData().getStatus().equals("NORMAL")) {
@@ -185,7 +185,6 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
 
             @Override
             public void onFailure(HttpInfo info) throws IOException {
-                Logger.e("关注接口失败:" + info.getRetDetail());
             }
         });
     }
@@ -217,7 +216,6 @@ public class OthersRecordPresenter extends BasePresenter<OthersRecordContract.Vi
         mUserApi.getOtherUserInfo(mView.getActivity(), uid, new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
-                Logger.e("获取他人信息成功:" + info.getRetDetail());
                 HttpResultBean<MyInfoBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<MyInfoBean>>() {
                 }.getType());
                 mView.setLeftUserInfo(bean.getData());

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

@@ -17,6 +17,7 @@ import android.widget.Toast;
 import com.edufound.reader.R;
 import com.edufound.reader.activity.MainActivity;
 import com.edufound.reader.adapter.PopupMyOrderAdapter;
+import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.application.EApplication;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.RecordResultBean;
@@ -25,6 +26,10 @@ import com.edufound.reader.listener.PopupRecordStatusListener;
 import com.edufound.reader.model.PopWindowModelImpl;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.GlideUtils;
+import com.edufound.reader.util.OkHttpClient;
+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;
@@ -47,8 +52,10 @@ public class PopWindowPresneter {
     PopWindowModelImpl mModel;
     ProgressCallback mUploadProgressBack;
     Gson mGson;
+    UserApiServerImpl userApi;
 
     public PopWindowPresneter() {
+        userApi = new UserApiServerImpl();
         mModel = new PopWindowModelImpl();
         mGson = new Gson();
     }
@@ -165,7 +172,7 @@ public class PopWindowPresneter {
                 @Override
                 public void onResponseMain(String filePath, HttpInfo info) {
                     super.onResponseMain(filePath, info);
-                    Logger.e("onResponseMain");
+                    Logger.e("onResponseMain:" + info.getRetDetail());
                     Logger.e("onResponseMain--netCode:" + info.getNetCode());
 
                     if (info.getNetCode() == 200) {
@@ -321,6 +328,23 @@ public class PopWindowPresneter {
     }
 
 
+    public void getBindWeChatPath(Activity activity, ImageView imageView) {
+        userApi.getBindWeChatPath(activity, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                Logger.e("获取绑定微信成功:" + info.getRetDetail());
+                HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
+                }.getType());
+                imageView.setImageBitmap(QRCodeUtil.createQRCode(bean.getData(), SizeUtils.dp2px(activity, 900)));
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("获取绑定微信失败:" + info.getRetDetail());
+            }
+        });
+    }
+
     private static Handler handler = new Handler(new Handler.Callback() {
         @Override
         public boolean handleMessage(@NonNull Message message) {

+ 23 - 24
app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java

@@ -56,6 +56,8 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
     int mTotalSize = 0;
     int mPageIndex = 1;
     boolean loadOver = false;
+    private String intoPage;
+
 
     public RecommendFragmentPresenter(Context context) {
         mModel = new RecommendFragmentModel();
@@ -63,6 +65,11 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     }
 
+
+    public void setIntoPage(String name) {
+        intoPage = name;
+    }
+
     @Override
     public void initVideoList(RecyclerView rv, int type, int startPosition) {
         rv.setOutlineProvider(new ViewOutlineProvider() {
@@ -76,7 +83,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
             }
         });
         rv.setClipToOutline(true);
-        initBroadcastReceiver();
+
         loadType = type;
         if (type == 0) {
             //推荐的接口
@@ -103,12 +110,6 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
     }
 
 
-    public void initBroadcastReceiver() {
-        BackPageReceiver.registerReceiver(mContext, BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
-        BackPageReceiver.registerBackPageReceiverListener(backListener);
-    }
-
-
     public void initVideoDate(RecyclerView rv, int startPosition) {
 
         rv.setLayoutManager(new LinearLayoutManager(mView.getActivity()));
@@ -186,7 +187,6 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void fragmentPause(RecyclerView rv) {
-        Logger.e("fragmentPause");
         Jzvd.releaseAllVideos();
         JzvdStd.goOnPlayOnPause();
         if (rv.getChildCount() > 0) {
@@ -197,12 +197,11 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void fragmentResume(RecyclerView rv) {
-        Logger.e("fragmentResume---loadType:" + loadType);
+
         mView.getRootView().postDelayed(new Runnable() {
             @Override
             public void run() {
                 if (rv.getChildCount() > 0) {
-                    Logger.e("rv.getChildCount() > 0");
                     RvListJzvdStd player = rv.getChildAt(0).findViewById(R.id.slidevideo_video);
                     if (player == null) {
                         Logger.e("竟然是空的");
@@ -290,6 +289,11 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                     mDataList.get(mCurrentPosition).setFavorites(true);
                     mDataList.get(mCurrentPosition).setFavoritesBean(null);
                     mView.setFavorites(true);
+                    if (Consts.isIsNeedRemoveBR()) {
+                        Intent intent = new Intent(BackPageReceiver.BACK_HOME_ADD_VIDEO_ITEM);
+                        intent.putExtra("addPosition", String.valueOf(mCurrentPosition));
+                        mContext.sendBroadcast(intent);
+                    }
                 }
             }
 
@@ -319,9 +323,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void activityDestory() {
-        if (mView != null && mView.getActivity() != null && (loadType == 0 || loadType == 1)) {
-            BackPageReceiver.unRegisterReceiver(mView.getActivity());
-        }
+
         mDataList = null;
         mAdapter = null;
         Jzvd.releaseAllVideos();
@@ -330,11 +332,19 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void getRecordInfoById(String id) {
+
+        if (mView == null) {
+            Logger.e("mView==null了");
+            Logger.e("activityName==" + intoPage);
+            Logger.e("loadtype:" + loadType);
+            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());
+                Logger.e("mCurrentPosition:" + mCurrentPosition);
                 mDataList.set(mCurrentPosition, bean.getData());
                 mView.getRootView().post(new Runnable() {
                     @Override
@@ -479,16 +489,5 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     }
 
-    BackPageReceiver.onBackPage backListener = new BackPageReceiver.onBackPage() {
-        @Override
-        public void pageBack(Intent intent) {
-            if (intent.getAction().equals(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM)) {
-                //从其他页面回来了。查询一下单独的item数据,然后赋值
-                Logger.e("收到了回来的广播了");
-                getRecordInfoById(intent.getStringExtra("recordId"));
-            }
-        }
-    };
-
 
 }

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

@@ -7,6 +7,7 @@ import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.contract.SmallFullVideoContract;
 import com.edufound.reader.fragment.RecommendFragment;
 import com.edufound.reader.model.SmallFullVideoModel;
+import com.edufound.reader.receiver.BackPageReceiver;
 
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
@@ -16,6 +17,7 @@ public class SmallFullVideoPresenter extends BasePresenter<SmallFullVideoContrac
     SmallFullVideoModel mModel;
     RecommendFragment mRecommendFragment;
     FragmentManager mFragmentManager;
+    private String intoPage;
 
     public SmallFullVideoPresenter(FragmentManager fragmentManager) {
         mModel = new SmallFullVideoModel();
@@ -27,14 +29,36 @@ public class SmallFullVideoPresenter extends BasePresenter<SmallFullVideoContrac
 
     @Override
     public void initFragment(int index, String dataJson) {
+
         FragmentTransaction transaction = mFragmentManager.beginTransaction();
         transaction.addToBackStack(null);
         transaction.replace(R.id.smallfull_fragment_layout, mRecommendFragment);
         mRecommendFragment.scrollPosition(index);
+        mRecommendFragment.setInToPage(intoPage);
         mRecommendFragment.setDataJson(dataJson);
         transaction.commit();
     }
 
+    @Override
+    public void activityDestory() {
+
+        mFragmentManager.beginTransaction().remove(mRecommendFragment);
+        mRecommendFragment = null;
+    }
+
+    @Override
+    public void setInfoPage(String page) {
+        if (page == null || page.equals("")) {
+            page = mView.getActivity().getLocalClassName();
+        }
+        intoPage = page;
+    }
+
+    @Override
+    public void refRecordById(String id) {
+        mRecommendFragment.getPresenter().getRecordInfoById(id);
+    }
+
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         switch (keyCode) {
             case KeyEvent.KEYCODE_BACK:

+ 8 - 4
app/src/main/java/com/edufound/reader/receiver/BackPageReceiver.java

@@ -26,9 +26,12 @@ public class BackPageReceiver extends BroadcastReceiver {
 
     /**
      * 通知删除item
-     * */
-    public static final String BACK_HOME_REMOVE_VIDEO_ITEM="com.edufound.reader.back.home.remove.video.item";
-
+     */
+    public static final String BACK_HOME_REMOVE_VIDEO_ITEM = "com.edufound.reader.back.home.remove.video.item";
+    /**
+     * 通知添加item
+     */
+    public static final String BACK_HOME_ADD_VIDEO_ITEM = "com.edufound.reader.back.home.add.video.item";
 
     private static boolean isRegister = false;
 
@@ -45,7 +48,7 @@ public class BackPageReceiver extends BroadcastReceiver {
 
     public static void registerReceiver(Context context, String action) {
 
-        if(action.equals(BACK_HOME_REMOVE_VIDEO_ITEM)){
+        if (action.equals(BACK_HOME_REMOVE_VIDEO_ITEM)) {
             Logger.e("注册删除广播");
         }
         IntentFilter intentFilter = new IntentFilter(action);
@@ -61,6 +64,7 @@ public class BackPageReceiver extends BroadcastReceiver {
     public static void unRegisterReceiver(Context context) {
         if (isRegister) {
             context.unregisterReceiver(BackPageReceiver.InstanceHolder.INSTANCE);
+            mBackListener = null;
             isRegister = false;
         }
     }

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

@@ -150,10 +150,8 @@ public class RecordServices extends Service {
 
                 @Override
                 public void onEvalResult(String tokenid, EvalResult evalResult) {
-                    Logger.e("recordServices---onEvalResult");
                     mRecordCallBack.onRecordResult(tokenid, evalResult);
                     recFilePath = evalResult.recFilePath();
-                    Logger.e("recFilePath:" + recFilePath);
                     Consts.setRecordUpLoadFileUrl(recFilePath);
                 }
 

+ 0 - 6
app/src/main/java/com/edufound/reader/util/OkHttpClient.java

@@ -51,12 +51,6 @@ public class OkHttpClient {
     }
 
 
-    public static void doGetUidAsync(Activity activity, String uid, HttpInfo.Builder info, BaseCallback callback) {
-        Logger.e("postUid:" + Consts.getUID());
-        OkHttpUtil.getDefault(activity).doGetAsync(info.addHead("uid", uid).build(), callback);
-    }
-
-
     public static void doPostAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) {
         Logger.e("postUid:" + Consts.getUID());
         OkHttpUtil.getDefault(activity).doPostAsync(info.addHead("uid", Consts.getUID()).build(), callback);

+ 148 - 0
app/src/main/java/com/edufound/reader/util/QRCodeUtil.java

@@ -0,0 +1,148 @@
+package com.edufound.reader.util;
+
+import android.graphics.Bitmap;
+import android.graphics.Matrix;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
+import java.util.Hashtable;
+
+public class QRCodeUtil {
+    private static int IMAGE_HALFWIDTH = 50;//宽度值,影响中间图片大小
+
+    /**
+     * 生成二维码,默认大小为500*500
+     *
+     * @return bitmap
+     */
+    public static Bitmap createQRCode() {
+        return createQRCode();
+    }
+
+    /**
+     * 生成二维码,默认大小为500*500
+     *
+     * @param text 需要生成二维码的文字、网址等
+     * @return bitmap
+     */
+    public static Bitmap createQRCode(String text) {
+        return createQRCode(text, 500);
+    }
+
+    /**
+     * 生成二维码
+     *
+     * @param text 需要生成二维码的文字、网址等
+     * @param size 需要生成二维码的大小()
+     * @return bitmap
+     */
+    public static Bitmap createQRCode(String text, int size) {
+        try {
+            Hashtable<EncodeHintType, String> hints = new Hashtable<>();
+            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
+            hints.put(EncodeHintType.MARGIN, "1");
+            BitMatrix bitMatrix = new QRCodeWriter().encode(text,
+                    BarcodeFormat.QR_CODE, size, size, hints);
+            int[] pixels = new int[size * size];
+            for (int y = 0; y < size; y++) {
+                for (int x = 0; x < size; x++) {
+                    if (bitMatrix.get(x, y)) {
+                        pixels[y * size + x] = 0xff000000;
+                    } else {
+                        pixels[y * size + x] = 0xffffffff;
+                    }
+
+                }
+            }
+            Bitmap bitmap = Bitmap.createBitmap(size, size,
+                    Bitmap.Config.ARGB_8888);
+            bitmap.setPixels(pixels, 0, size, 0, 0, size, size);
+            return bitmap;
+        } catch (WriterException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 生成带logo的二维码,默认二维码的大小为500,logo为二维码的1/5
+     *
+     * @param text    需要生成二维码的文字、网址等
+     * @param mBitmap logo文件
+     * @return bitmap
+     */
+    public static Bitmap createQRCodeWithLogo(String text, Bitmap mBitmap) {
+        return createQRCodeWithLogo(text, 500, mBitmap);
+    }
+
+    /**
+     * 生成带logo的二维码,logo默认为二维码的1/5
+     *
+     * @param text    需要生成二维码的文字、网址等
+     * @param size    需要生成二维码的大小()
+     * @param mBitmap logo文件
+     * @return bitmap
+     */
+    public static Bitmap createQRCodeWithLogo(String text, int size, Bitmap mBitmap) {
+        try {
+            IMAGE_HALFWIDTH = size / 10;
+            Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
+            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
+            /*
+             * 设置容错级别,默认为ErrorCorrectionLevel.L
+             * 因为中间加入logo所以建议你把容错级别调至H,否则可能会出现识别不了
+             */
+            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+            BitMatrix bitMatrix = new QRCodeWriter().encode(text,
+                    BarcodeFormat.QR_CODE, size, size, hints);
+
+            int width = bitMatrix.getWidth();//矩阵高度
+            int height = bitMatrix.getHeight();//矩阵宽度
+            int halfW = width / 2;
+            int halfH = height / 2;
+
+            Matrix m = new Matrix();
+            float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth();
+            float sy = (float) 2 * IMAGE_HALFWIDTH
+                    / mBitmap.getHeight();
+            m.setScale(sx, sy);
+            //设置缩放信息
+            //将logo图片按martix设置的信息缩放
+            mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,
+                    mBitmap.getWidth(), mBitmap.getHeight(), m, false);
+
+            int[] pixels = new int[size * size];
+            for (int y = 0; y < size; y++) {
+                for (int x = 0; x < size; x++) {
+                    if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH
+                            && y > halfH - IMAGE_HALFWIDTH
+                            && y < halfH + IMAGE_HALFWIDTH) {
+                        //该位置用于存放图片信息
+                        //记录图片每个像素信息
+                        pixels[y * width + x] = mBitmap.getPixel(x - halfW
+                                + IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH);
+                    } else {
+                        if (bitMatrix.get(x, y)) {
+                            pixels[y * size + x] = 0xff000000;
+                        } else {
+                            pixels[y * size + x] = 0xffffffff;
+                        }
+                    }
+                }
+            }
+            Bitmap bitmap = Bitmap.createBitmap(size, size,
+                    Bitmap.Config.ARGB_8888);
+            bitmap.setPixels(pixels, 0, size, 0, 0, size, size);
+            return bitmap;
+        } catch (WriterException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+}