Explorar o código

Merge remote-tracking branch 'origin/sheep_develop' into sheep_develop_jenkins

# Conflicts:
#	app/build.gradle
zengjiebin %!s(int64=7) %!d(string=hai) anos
pai
achega
a92086dc10
Modificáronse 100 ficheiros con 1740 adicións e 948 borrados
  1. 1 17
      .idea/compiler.xml
  2. 0 3
      .idea/copyright/profiles_settings.xml
  3. 1 1
      .idea/vcs.xml
  4. 131 48
      app/build.gradle
  5. BIN=BIN
      app/libs/FileDownloader-1.0.0.aar
  6. BIN=BIN
      app/libs/mdsdk-201810121334.jar
  7. BIN=BIN
      app/libs/mdsdk_1123_1.2.1.12.jar
  8. 0 3
      app/src/developSheeptest/res/values/strings.xml
  9. 22 25
      app/src/main/AndroidManifest.xml
  10. 0 65
      app/src/main/assets/aria_config.xml
  11. 2 2
      app/src/main/java/com/kfzs/duanduan/fragment/FgtBorrowPlay.java
  12. 15 15
      app/src/main/java/com/kfzs/duanduan/utils/ApkUtils.java
  13. 33 0
      app/src/main/java/com/sheep/gamegroup/absBase/AbsFocus.java
  14. 30 0
      app/src/main/java/com/sheep/gamegroup/absBase/AbsObserver.java
  15. 5 6
      app/src/main/java/com/sheep/gamegroup/absBase/BaseActivity.java
  16. 5 5
      app/src/main/java/com/sheep/gamegroup/absBase/BaseListActivity2.java
  17. 6 4
      app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java
  18. 1 1
      app/src/main/java/com/sheep/gamegroup/event/EventDownloadHandler.java
  19. 69 96
      app/src/main/java/com/sheep/gamegroup/greendao/DDProviderHelper.java
  20. 1 1
      app/src/main/java/com/sheep/gamegroup/helper/DownloadHelper.java
  21. 2 2
      app/src/main/java/com/sheep/gamegroup/helper/FindAppHelper.java
  22. 2 2
      app/src/main/java/com/sheep/gamegroup/helper/TaskHelper.java
  23. 31 2
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  24. 36 0
      app/src/main/java/com/sheep/gamegroup/model/entity/AppInfoExtDetail.java
  25. 16 16
      app/src/main/java/com/sheep/gamegroup/model/entity/Applications.java
  26. 4 0
      app/src/main/java/com/sheep/gamegroup/model/entity/GameListType.java
  27. 2 4
      app/src/main/java/com/sheep/gamegroup/model/entity/SheepSignResult.java
  28. 0 9
      app/src/main/java/com/sheep/gamegroup/model/entity/SlideshowEty.java
  29. 10 0
      app/src/main/java/com/sheep/gamegroup/model/entity/UserCommentReply.java
  30. 56 0
      app/src/main/java/com/sheep/gamegroup/model/entity/UserFocusGame.java
  31. 145 0
      app/src/main/java/com/sheep/gamegroup/model/entity/UserFocusLog.java
  32. 0 19
      app/src/main/java/com/sheep/gamegroup/model/util/AbsSubscriber.java
  33. 0 27
      app/src/main/java/com/sheep/gamegroup/model/util/DateTimeTypeAdapter.java
  34. 0 7
      app/src/main/java/com/sheep/gamegroup/model/util/EntityUtils.java
  35. 4 4
      app/src/main/java/com/sheep/gamegroup/model/util/ExceptionHandle.java
  36. 0 27
      app/src/main/java/com/sheep/gamegroup/model/util/HttpUtils.java
  37. 0 38
      app/src/main/java/com/sheep/gamegroup/model/util/RxBus.java
  38. 8 11
      app/src/main/java/com/sheep/gamegroup/model/util/SheepSubscriber.java
  39. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/BindOrChangeWeixinPresenter.java
  40. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/CommitWxCodeMakeMoneyPresenter.java
  41. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/CommitWxMakeMoneyPresenter.java
  42. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/LieMakeMoneyPresenter.java
  43. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/LoginPresenter.java
  44. 2 4
      app/src/main/java/com/sheep/gamegroup/presenter/PhonePresenter.java
  45. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/ReNamePresenter.java
  46. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/RealNameAutherPresenter.java
  47. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/RechargeQPresenter.java
  48. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/SignCardPresenter.java
  49. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/SignRankingsPresenter.java
  50. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/SignRecordPresenter.java
  51. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/SmallSheepPresenter.java
  52. 3 3
      app/src/main/java/com/sheep/gamegroup/presenter/TaskDetailPresenter.java
  53. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/TaskDialogPresenter.java
  54. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/TaskListPresenter.java
  55. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyPresenter.java
  56. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/WithdrawalListPresenter.java
  57. 2 2
      app/src/main/java/com/sheep/gamegroup/presenter/WithdrawalPresenter.java
  58. 1 2
      app/src/main/java/com/sheep/gamegroup/receiver/ExampleUtil.java
  59. 31 31
      app/src/main/java/com/sheep/gamegroup/receiver/TagAliasOperatorHelper.java
  60. 2 2
      app/src/main/java/com/sheep/gamegroup/statistics/AppStatistics.java
  61. 3 3
      app/src/main/java/com/sheep/gamegroup/util/ApiJSONUtil.java
  62. 6 5
      app/src/main/java/com/sheep/gamegroup/util/ApiUtil.java
  63. 3 3
      app/src/main/java/com/sheep/gamegroup/util/CertificationUtil.java
  64. 36 31
      app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java
  65. 2 2
      app/src/main/java/com/sheep/gamegroup/util/DataUtil.java
  66. 90 0
      app/src/main/java/com/sheep/gamegroup/util/DetailImageGetter.java
  67. 65 0
      app/src/main/java/com/sheep/gamegroup/util/DetailTagHandler.java
  68. 14 17
      app/src/main/java/com/sheep/gamegroup/util/DownloadUtil.java
  69. 3 2
      app/src/main/java/com/sheep/gamegroup/util/GlideImageLoader.java
  70. 52 22
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  71. 7 5
      app/src/main/java/com/sheep/gamegroup/util/LogUtil.java
  72. 1 1
      app/src/main/java/com/sheep/gamegroup/util/ObservableUtil.java
  73. 0 72
      app/src/main/java/com/sheep/gamegroup/util/ResImageGetter.java
  74. 23 0
      app/src/main/java/com/sheep/gamegroup/util/ResourceUtils.java
  75. 25 0
      app/src/main/java/com/sheep/gamegroup/util/StringUtils.java
  76. 22 23
      app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java
  77. 14 4
      app/src/main/java/com/sheep/gamegroup/util/TagListUtil.java
  78. 124 9
      app/src/main/java/com/sheep/gamegroup/util/TestUtil.java
  79. 2 2
      app/src/main/java/com/sheep/gamegroup/util/UMConfigUtils.java
  80. 111 40
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  81. 23 24
      app/src/main/java/com/sheep/gamegroup/util/WebviewJs.java
  82. 21 0
      app/src/main/java/com/sheep/gamegroup/util/js/BaseActWeb.java
  83. 159 0
      app/src/main/java/com/sheep/gamegroup/util/js/KFZSJs.java
  84. 7 7
      app/src/main/java/com/sheep/gamegroup/view/activity/ActArticle.java
  85. 35 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActArticleComment.java
  86. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActBindMobileRegister.java
  87. 3 3
      app/src/main/java/com/sheep/gamegroup/view/activity/ActCommentGameApp.java
  88. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActCreditCardTaskList.java
  89. 4 6
      app/src/main/java/com/sheep/gamegroup/view/activity/ActCreditCardWeb.java
  90. 1 1
      app/src/main/java/com/sheep/gamegroup/view/activity/ActDownloadMgr.java
  91. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActFindGame.java
  92. 20 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActFootMark.java
  93. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGameAccount.java
  94. 33 8
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGcGameAppDetail.java
  95. 0 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActGuideDeblocked.java
  96. 102 103
      app/src/main/java/com/sheep/gamegroup/view/activity/ActInvitation.java
  97. 6 5
      app/src/main/java/com/sheep/gamegroup/view/activity/ActMain.java
  98. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActMiDong.java
  99. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActModifyThird.java
  100. 0 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActMyFocus.java

+ 1 - 17
.idea/compiler.xml

@@ -1,22 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="CompilerConfiguration">
-    <resourceExtensions />
-    <wildcardResourcePatterns>
-      <entry name="!?*.java" />
-      <entry name="!?*.form" />
-      <entry name="!?*.class" />
-      <entry name="!?*.groovy" />
-      <entry name="!?*.scala" />
-      <entry name="!?*.flex" />
-      <entry name="!?*.kt" />
-      <entry name="!?*.clj" />
-      <entry name="!?*.aj" />
-    </wildcardResourcePatterns>
-    <annotationProcessing>
-      <profile default="true" name="Default" enabled="false">
-        <processorPath useClasspath="true" />
-      </profile>
-    </annotationProcessing>
+    <bytecodeTargetLevel target="1.9" />
   </component>
 </project>

+ 0 - 3
.idea/copyright/profiles_settings.xml

@@ -1,3 +0,0 @@
-<component name="CopyrightManager">
-  <settings default="" />
-</component>

+ 1 - 1
.idea/vcs.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+    <mapping directory="" vcs="Git" />
   </component>
 </project>

+ 131 - 48
app/build.gradle

@@ -80,7 +80,7 @@ android {
             ]
             buildConfigField "String", "DUANDUAN_DATASHARE", '"sheeptest"'
             buildConfigField "String", "DUANDUAN_GRAPH", '"sheeptest"'
-            buildConfigField "String", "app_name", '"小绵羊测试"'
+            resValue "string", "app_name", "小绵羊测试"
             buildConfigField "boolean", "XXTEA_ENCRYPT", 'true'
             buildConfigField "String", "API_DOMAIN", '"app.ss.kfzs.com"'
             signingConfig signingConfigs.config
@@ -94,7 +94,7 @@ android {
             ]
             buildConfigField "String", "DUANDUAN_DATASHARE", '"sheeptestjiguang"'
             buildConfigField "String", "DUANDUAN_GRAPH", '"sheeptestjiguang"'
-            buildConfigField "String", "app_name", '"小绵羊测试"'
+            resValue "string", "app_name", "小绵羊极光测试"
             buildConfigField "boolean", "XXTEA_ENCRYPT", 'true'
             buildConfigField "String", "API_DOMAIN", '"app.ss.kfzs.com"'
             signingConfig signingConfigs.config
@@ -108,7 +108,7 @@ android {
             ]
             buildConfigField "String", "DUANDUAN_DATASHARE", '"sheep"'
             buildConfigField "String", "DUANDUAN_GRAPH", '"sheep"'
-            buildConfigField "String", "app_name", '"小绵羊"'
+            resValue "string", "app_name", "小绵羊"
             buildConfigField "boolean", "XXTEA_ENCRYPT", 'true'
             buildConfigField "String", "API_DOMAIN", '"app.ss.kfzs.com"'
             signingConfig signingConfigs.config
@@ -130,24 +130,51 @@ repositories {
     }
     google()
 }
+configurations.all {
+    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
+        def requested = details.requested
+        if (requested.group == 'com.android.support') {
+            if (!requested.name.startsWith("multidex")) {
+                details.useVersion "$supportLibVersion"
+            }
+        }
+    }
+}
 
 dependencies {
+    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.2'
+    releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.2'
+    // Optional, if you use support library fragments:
+    debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.2'
+
     //noinspection GradleCompatible
-    implementation 'com.android.support:cardview-v7:28.0.0-rc01'
-    implementation "com.android.support:design:$supportLibVersion"
-    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+    implementation "com.android.support:cardview-v7:$supportLibVersion"
+    implementation ("com.android.support:design:$supportLibVersion") {
+        exclude group: 'com.android.support', module: 'support-annotations'
+        exclude group: 'com.android.support', module: 'support-compat'
+        exclude group: 'com.android.support', module: 'support-core-ui'
+        exclude group: 'com.android.support', module: 'support-core-utils'
+        exclude group: 'com.android.support', module: 'support-fragment'
+        exclude group: 'com.android.support', module: 'transition'
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+        exclude group: 'com.android.support', module: 'cardview-v7'
+        exclude group: 'com.android.support', module: 'recyclerview-v7'
+    }
+    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
     testImplementation 'junit:junit:4.12'
-    implementation 'com.google.code.gson:gson:2.8.2'
+//    implementation 'com.google.code.gson:gson:2.8.2'
+    //    implementation 'com.shark:screencapture:1.0.0'
     implementation('com.jcodecraeer:xrecyclerview:1.5.9') {
-        //    implementation 'com.shark:screencapture:1.0.0'
         exclude group: 'com.android.support', module: 'design'
+        exclude group: 'com.android.support', module: 'recyclerview'
+        exclude group: 'com.android.support', module: 'appcompat'
     }
-    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
+    implementation 'com.squareup.okhttp3:okhttp:3.11.0'
     implementation 'org.greenrobot:eventbus:3.1.1'
-    implementation 'com.zhy:base-adapter:3.0.3'
+//    implementation 'com.zhy:base-adapter:3.0.3'
 
     //    implementation 'com.liulishuo.filedownloader:library:1.6.9'
-    implementation 'com.tencent.bugly:crashreport_upgrade:1.3.4'
+    implementation 'com.tencent.bugly:crashreport_upgrade:1.3.5'
 
     //其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0
     implementation 'com.tencent.bugly:nativecrashreport:3.3.1'
@@ -157,17 +184,24 @@ dependencies {
     implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.1.6'
     debugImplementation('com.readystatesoftware.chuck:library:1.1.0') {
         exclude group: 'com.android.support', module: 'design'
+        exclude group: 'com.google.code.gson', module: 'gson'
+        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
+        exclude group: 'nl.qbusict', module: 'cupboard'
     }
 
     //    implementation 'de.hdodenhof:circleimageview:2.2.0'
     releaseImplementation('com.readystatesoftware.chuck:library-no-op:1.1.0') {
         exclude group: 'com.android.support', module: 'design'
+        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
     }
     implementation 'org.xutils:xutils:3.5.0'
-    implementation 'com.mylhyl:acp:1.1.7'
+//    implementation 'com.mylhyl:acp:1.1.7'
 
-    implementation 'cn.yipianfengye.android:zxing-library:2.2'
-    implementation 'com.github.huburt-Hu:NewbieGuide:v1.2.0'
+    implementation ('cn.yipianfengye.android:zxing-library:2.2') {
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+        exclude group: 'com.android.support', module: 'support-v4'
+    }
+//    implementation 'com.github.huburt-Hu:NewbieGuide:v1.2.0'
     debugImplementation 'com.android.support:multidex:1.0.1'
 
     //不要修改这里,相信我
@@ -175,7 +209,12 @@ dependencies {
     implementation(name: 'com.kfzs.safe-201809211354', ext: 'aar')
 
     //butterknife
-    implementation 'com.jakewharton:butterknife:8.8.1'
+    implementation ('com.jakewharton:butterknife:8.8.1') {
+        exclude group: 'com.android.support', module: 'support-annotations'
+        exclude group: 'com.android.support', module: 'support-compat'
+//        exclude group: 'com.jakewharton', module: 'butterknife-annotations'
+    }
+
     annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
 
     //dagger2
@@ -183,26 +222,47 @@ dependencies {
     //    implementation 'com.google.dagger:dagger:+'
 
     //    implementation 'com.google.dagger:dagger-compiler:+'
-    compileOnly 'org.glassfish:javax.annotation:10.0-b28'
-    implementation 'com.google.dagger:dagger:2.12'
+    compileOnly 'org.glassfish:javax.annotation:10.0-b28'//javax.annotation', module: 'jsr250-api
+    implementation 'com.google.dagger:dagger:2.12'//javax.inject', module: 'javax.inject
     annotationProcessor 'com.google.dagger:dagger-compiler:2.12'
 
     //retrofit
-    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
-    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
-    implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
+    implementation ('com.squareup.retrofit2:retrofit:2.4.0') {
+        exclude group: 'com.google.android', module: 'android'
+        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
+        exclude group: 'org.codehaus.mojo', module: 'animal-sniffer-annotations'
+    }
+
+//    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
+    implementation ('org.ligboy.retrofit2:converter-fastjson-android:2.1.0') {
+        exclude group: 'com.alibaba', module: 'fastjson'
+        exclude group: 'com.squareup.retrofit2', module: 'retrofit'
+    }
+//    implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
 
     //    implementation 'com.squareup.retrofit2:adapter-rxjava2:+'
-    implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
+//    implementation ('com.squareup.retrofit2:adapter-rxjava:2.1.0') {
+//        exclude group: 'com.squareup.retrofit2', module: 'retrofit'
+//    }
+    implementation ('com.squareup.retrofit2:adapter-rxjava2:2.5.0') {
+        exclude group: 'com.squareup.retrofit2', module: 'retrofit'
+        exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
+    }
 
     //rxjava
-    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
-    implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
+    implementation ('io.reactivex.rxjava2:rxandroid:2.1.0') {
+        exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
+    }
+    implementation 'io.reactivex.rxjava2:rxjava:2.2.3'
 
     //获取动态权限三方库
-    implementation 'pub.devrel:easypermissions:1.2.0'
-    implementation 'net.danlew:android.joda:2.9.3'
-    implementation 'com.orhanobut:logger:1.15'
+    implementation ('pub.devrel:easypermissions:1.2.0') {
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+        exclude group: 'com.android.support', module: 'support-compat'
+        exclude group: 'com.android.support', module: 'support-fragment'
+    }
+//    implementation 'net.danlew:android.joda:2.9.3'
+//    implementation 'com.orhanobut:logger:1.15'
 
     //友盟
     implementation 'com.umeng.sdk:common:1.5.3'
@@ -210,15 +270,15 @@ dependencies {
     //implementation 'com.umeng.sdk:analytics:latest.integration'
 
     //fast json
-    implementation 'com.alibaba:fastjson:1.2.47'
+    implementation 'com.alibaba:fastjson:1.2.52'
 
     //添加半袋米相关
     implementation(name: 'appstoreutils-201810101432', ext: 'aar')
     implementation project(':view')
 
     //    implementation(name: 'view-release', ext: 'aar')
-    implementation 'com.flipboard:bottomsheet-core:1.5.3'
-    implementation 'com.flipboard:bottomsheet-commons:1.5.3'
+//    implementation 'com.flipboard:bottomsheet-core:1.5.3'
+//    implementation 'com.flipboard:bottomsheet-commons:1.5.3'
 
     implementation files('libs/open_sdk_r5923_lite.jar')
 //    implementation files('libs/wechat-sdk-android-with-mta-1.1.6.jar')
@@ -229,30 +289,46 @@ dependencies {
     implementation files('libs/umeng_shareboard_widget.jar')
     implementation files('libs/SocialSDK_WeiXin_Full.jar')
     implementation files('libs/SocialSDK_QQ_Full.jar')
-    implementation 'com.zhy:okhttputils:2.6.2'
+    implementation ('com.zhy:okhttputils:2.6.2') {
+        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
+    }
 
     //    implementation 'com.kf.framework:kf-utils:latest.integration@aar'
-    implementation 'com.kf.framework:kf-utils:1.4.5@aar'
+//    implementation 'com.kf.framework:kf-utils:1.4.5@aar'
 
     //    implementation 'com.kf.framework:volleyplus:latest.integration@aar'
-    implementation 'com.kf.framework:volleyplus:1.4.5@aar'
+//    implementation 'com.kf.framework:volleyplus:1.4.5@aar'
     implementation "com.android.support:support-annotations:$supportLibVersion"
-    implementation "com.android.support:recyclerview-v7:$supportLibVersion"
+    implementation ("com.android.support:recyclerview-v7:$supportLibVersion") {
+        exclude group: 'com.android.support', module: 'support-annotations'
+        exclude group: 'com.android.support', module: 'support-compat'
+        exclude group: 'com.android.support', module: 'support-core-ui'
+    }
 //    implementation project(':datashare')
-    implementation files('libs/jackson-core-2.2.1.jar')
-    implementation files('libs/jackson-dataformat-xml-2.1.2.jar')
-    implementation 'io.reactivex:rxandroid:1.2.1'
-    implementation 'com.github.ithedan:TextViewDrawable:v1.0'
+//    implementation files('libs/jackson-core-2.2.1.jar')
+//    implementation files('libs/jackson-dataformat-xml-2.1.2.jar')
+//    implementation 'io.reactivex:rxandroid:1.2.1'
+    implementation ('com.github.ithedan:TextViewDrawable:v1.0') {
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+    }
 //    implementation 'com.github.zhangkexpz:LayoutScroll:v1.0'
 //    implementation 'me.iwf.photopicker:PhotoPicker:0.9.12@aar'
     implementation(name: 'PhotoPicker-release-201810081154', ext: 'aar')
-    implementation 'com.github.bumptech.glide:glide:4.1.1'
+    implementation ('com.github.bumptech.glide:glide:4.1.1') {
+        exclude group: 'com.android.support', module: 'support-fragment'
+//        exclude group: 'com.github.bumptech.glide', module: 'gifdecoder'
+//        exclude group: 'com.github.bumptech.glide', module: 'disklrucache'
+//        exclude group: 'com.github.bumptech.glide', module: 'annotations'
+    }
+    annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
 
     //    implementation 'com.github.yalantis:ucrop:2.2.1-native'
 
     //    implementation 'com.google.zxing:core:3.3.0'
     implementation project(':ucrop')
-    implementation 'com.sunfusheng:marqueeview:1.3.3'
+    implementation ('com.sunfusheng:marqueeview:1.3.3') {
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+    }
     implementation files('libs/alipaySdk-20170922.jar')
     //极光
     implementation files('libs/jcore-android-1.2.0.jar')
@@ -262,7 +338,7 @@ dependencies {
     implementation files('libs/BaiduLBS_Android.jar')
 
     //幂动科技
-    implementation files('libs/mdsdk-201810121334.jar')
+    implementation files('libs/mdsdk_1123_1.2.1.12.jar')
     //轮播图
     implementation 'com.youth.banner:banner:1.4.10'  //最新版本
     //loading
@@ -270,11 +346,14 @@ dependencies {
 //    implementation 'com.github.nanchen2251:CompressHelper:1.0.5'
 //    implementation(name: 'compresshelper-release', ext: 'aar')
     implementation files('libs/compresshelper-release.jar')
-    implementation 'com.haibin:calendarview:3.4.4'
+    implementation ('com.haibin:calendarview:3.4.4') {
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+        exclude group: 'com.android.support', module: 'recyclerview-v7'
+    }
 
     implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
 
-    implementation 'org.greenrobot:greendao:3.2.2'
+    implementation 'org.greenrobot:greendao:3.2.2'//org.greenrobot', module: 'greendao-api
     //okDownload
     // core
     implementation "com.liulishuo.okdownload:okdownload:1.0.5"
@@ -283,11 +362,15 @@ dependencies {
     // provide okhttp to connect to backend
     implementation "com.liulishuo.okdownload:okhttp:1.0.5"
 
-    implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2'
-
-    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
+    implementation ('com.trello.rxlifecycle2:rxlifecycle-components:2.2.2') {
+        exclude group: 'com.android.support', module: 'appcompat-v7'
+//        com.trello.rxlifecycle2', module: 'rxlifecycle-android
+        exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
+    }
+//
+//    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
 
-    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
+    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
     //有米科技
     implementation(name: 'YoumiSdk_v8.3.0_2018-09-20', ext: 'aar')
     implementation project(':WaterWaveProgress')
@@ -303,7 +386,7 @@ android.applicationVariants.all {
     variant ->
         variant.outputs.all {
             output ->
-                outputFileName = productFlavors[0].name + "_" + buildType.name + "_v" + android.defaultConfig.versionName + "_" + android.defaultConfig.versionCode + "-${releaseTime()}.apk"
+                outputFileName = "${productFlavors[0].name}_${buildType.name}_v${versionName}_${versionCode}-${releaseTime()}.apk"
 
         }
-}
+}

BIN=BIN
app/libs/FileDownloader-1.0.0.aar


BIN=BIN
app/libs/mdsdk-201810121334.jar


BIN=BIN
app/libs/mdsdk_1123_1.2.1.12.jar


+ 0 - 3
app/src/developSheeptest/res/values/strings.xml

@@ -1,3 +0,0 @@
-<resources>
-    <string name="app_name">小绵羊测试</string>
-</resources>

+ 22 - 25
app/src/main/AndroidManifest.xml

@@ -398,6 +398,9 @@
             android:name="com.sheep.gamegroup.view.activity.ActWeb"
             android:screenOrientation="portrait" />
         <activity
+            android:name="com.sheep.gamegroup.view.activity.ActWebX5"
+            android:screenOrientation="portrait" />
+        <activity
             android:name="com.sheep.gamegroup.view.activity.ActMyMoney"
             android:screenOrientation="portrait" />
         <activity
@@ -438,10 +441,13 @@
             android:name="com.sheep.gamegroup.view.activity.ActPlayVideo"
             android:configChanges="orientation|keyboardHidden|navigation|screenSize"
             android:screenOrientation="user"
-            android:theme="@style/AppTheme.fullScreen" />
+            android:theme="@style/AppTheme.noTitleBar" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActInputAndPickerImg"
             android:theme="@style/AppTheme.translucent" />
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActOverrideJsWeb"
+            android:screenOrientation="portrait"/>
 
         <!-- 友盟start -->
         <meta-data
@@ -729,15 +735,6 @@
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActMiDong"
             android:screenOrientation="portrait" />
-        <activity
-            android:name="com.sheep.gamegroup.view.activity.GameCertificationActivity"
-            android:exported="true"
-            android:screenOrientation="portrait" />
-        <activity
-            android:name="com.sheep.gamegroup.view.activity.ActPay"
-            android:exported="true"
-            android:screenOrientation="user" />
-
         <service
             android:name="com.mdad.sdk.mdsdk.monitor.MonitorService"
             android:enabled="true"
@@ -765,34 +762,34 @@
             </intent-filter>
         </receiver>
         <!-- end幂动科技 -->
-        <!-- start 有米科技 -->
-
+        <!-- start 小绵羊sdk相关 -->
         <activity
-            android:name="com.youmi.android.offerdemo.PermissionCheckActivity"
-            android:screenOrientation="portrait" />
+            android:name="com.sheep.gamegroup.view.activity.ActPay"
+            android:exported="true"
+            android:screenOrientation="user" />
         <activity
-            android:name="com.youmi.android.offerdemo.YoumiOffersAdsDemo"
+            android:name="com.sheep.gamegroup.view.activity.GameCertificationActivity"
+            android:exported="true"
             android:screenOrientation="portrait" />
-        <!-- end 有米科技 -->
+        <!-- end 小绵羊sdk相关 -->
+
         <!-- 签到 -->
         <activity
             android:name=".ui.activity.SignActivity"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoTitleBar.AlphaStatusBar" />
-        <!-- 用户引导 -->
-        <activity
-            android:name=".ui.activity.UserNavActivity"
-            android:configChanges="orientation|screenSize"
-            android:screenOrientation="portrait" />
         <!-- 活动规则 -->
         <activity
             android:name=".ui.activity.ActiveRuleActivity"
             android:screenOrientation="portrait" />
-        <!-- 全屏视频播放 -->
+        <!-- 小绵羊3.4.5 我的关注  -->
         <activity
-            android:name=".ui.activity.PlayVideoActivity"
-            android:configChanges="orientation|screenSize"
-            android:screenOrientation="landscape" />
+            android:name="com.sheep.gamegroup.view.activity.ActMyFocus"
+            android:screenOrientation="portrait" />
+        <!-- 小绵羊3.4.5 足迹  -->
+        <activity
+            android:name="com.sheep.gamegroup.view.activity.ActFootMark"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 0 - 65
app/src/main/assets/aria_config.xml

@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<aria>
-
-    <!--注意,修改该配置文件中的属性会覆盖代码中所设置的属性-->
-    <download>
-
-        <!--设置下载线程,线程下载数改变后,新的下载任务才会生效,如果任务大小小于1m,该设置也不会生效-->
-        <threadNum value="3"/>
-
-        <!--设置下载队列最大任务数, 默认为2-->
-        <maxTaskNum value="5"/>
-
-        <!--设置下载失败,重试次数,默认为10-->
-        <reTryNum value="10"/>
-
-        <!--设置重试间隔,单位为毫秒,默认2000毫秒-->
-        <reTryInterval value="5000"/>
-
-        <!--设置url连接超时时间,单位为毫秒,默认5000毫秒-->
-        <connectTimeOut value="5000"/>
-
-        <!--设置IO流读取时间,单位为毫秒,默认20000毫秒,该时间不能少于10000毫秒-->
-        <iOTimeOut value="10000"/>
-
-        <!--设置写文件buff大小,该数值大小不能小于2048,数值变小,下载速度会变慢-->
-        <buffSize value="8192"/>
-
-        <!--设置https ca 证书信息;path 为assets目录下的CA证书完整路径,name 为CA证书名-->
-        <ca name="" path=""/>
-
-        <!--是否需要转换速度单位,转换完成后为:1b/s、1kb/s、1mb/s、1gb/s、1tb/s,如果不需要将返回byte长度-->
-        <convertSpeed value="true"/>
-
-        <!--执行队列类型,见com.arialyy.aria.core.QueueMod,默认类型为wait-->
-        <queueMod value="wait"/>
-
-        <!--进度更新更新间隔,默认1000毫秒-->
-        <updateInterval value="1000"/>
-
-    </download>
-
-    <upload>
-        <!--是否需要转换速度单位,转换完成后为:1b/s、1kb/s、1mb/s、1gb/s、1tb/s,如果不需要将返回byte长度-->
-        <convertSpeed value="true"/>
-
-        <!--设置上传队列最大任务数, 默认为2-->
-        <maxTaskNum value="2"/>
-
-        <!--设置上传失败,重试次数,默认为10-->
-        <reTryNum value="2"/>
-
-        <!--设置重试间隔,单位为毫秒-->
-        <reTryInterval value="2000"/>
-
-        <!--设置url连接超时时间,单位为毫秒,默认5000毫秒-->
-        <connectTimeOut value="5000"/>
-
-        <!--执行队列类型,见com.arialyy.aria.core.QueueMod,默认类型为wait-->
-        <queueMod value="wait"/>
-
-        <!--进度更新更新间隔,默认1000毫秒-->
-        <updateInterval value="1000"/>
-    </upload>
-
-</aria>

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

@@ -20,8 +20,8 @@
 //import com.sheep.jiuyan.samllsheep.utils.G;
 //import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 //
-//import rx.android.schedulers.AndroidSchedulers;
-//import rx.schedulers.Schedulers;
+//import io.reactivex.android.schedulers.AndroidSchedulers;
+//import io.reactivex.schedulers.Schedulers;
 //
 ///**
 // * 借着玩界面

+ 15 - 15
app/src/main/java/com/kfzs/duanduan/utils/ApkUtils.java

@@ -13,6 +13,7 @@ import android.text.TextUtils;
 import android.util.Base64;
 import android.view.View;
 
+import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.model.entity.ApkFileInfo;
 import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.util.ActivityManager;
@@ -30,12 +31,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-import rx.Observable;
-import rx.Subscriber;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.functions.Predicate;
+import io.reactivex.schedulers.Schedulers;
 import rx.functions.Action1;
-import rx.functions.Func1;
-import rx.schedulers.Schedulers;
 
 /**
  * apk helper
@@ -97,37 +97,37 @@ public class ApkUtils {
         final ApkFileInfo apkFileInfo = new ApkFileInfo();
         apkFileInfo.setPath(apkPath);
         Observable.just(apkFileInfo)
-                .filter(new Func1<ApkFileInfo, Boolean>() {
+                .filter(new Predicate<ApkFileInfo>() {
                     @Override
-                    public Boolean call(ApkFileInfo item) {
+                    public boolean test(ApkFileInfo item){
                         return !TextUtils.isEmpty(item.getPath());
                     }
                 })
-                .filter(new Func1<ApkFileInfo, Boolean>() {
+                .filter(new Predicate<ApkFileInfo>() {
                     @Override
-                    public Boolean call(ApkFileInfo item) {
+                    public boolean test(ApkFileInfo item) {
                         return item.existsPath();
                     }
                 })
-                .filter(new Func1<ApkFileInfo, Boolean>() {
+                .filter(new Predicate<ApkFileInfo>() {
                     @Override
-                    public Boolean call(ApkFileInfo item) {
+                    public boolean test(ApkFileInfo item) {
                         return !TextUtils.isEmpty(item.initPackageNameFromPath(context).getPackageName());
                     }
                 })
-                .filter(new Func1<ApkFileInfo, Boolean>() {
+                .filter(new Predicate<ApkFileInfo>() {
                     @Override
-                    public Boolean call(ApkFileInfo item) {
+                    public boolean test(ApkFileInfo item) {
                         //已经安装且签名的md5相同,文件与安装应用的md5也相同,则过滤掉
                         return !(item.checkInstall(context) && item.checkApkAndFileSignMd5() && item.checkApkAndFileMd5());
                     }
                 })
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new Subscriber<ApkFileInfo>() {
+                .subscribe(new AbsObserver<ApkFileInfo>() {
                     private boolean doneNext;
                     @Override
-                    public void onCompleted() {
+                    public void onComplete() {
                         if(doneNext)
                             return;
                         if(apkFileInfo.isAppInstalled()){//在onNext中未处理且应用已经安装的情况下,直接打开应用

+ 33 - 0
app/src/main/java/com/sheep/gamegroup/absBase/AbsFocus.java

@@ -0,0 +1,33 @@
+package com.sheep.gamegroup.absBase;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ */
+public abstract class AbsFocus {
+
+    public static final int NONE = -1;
+    public static final int YES = 1;
+    public static final int NO = 0;
+
+    private int focusState = NONE;
+    public boolean isFocus(){
+        switch (focusState){
+            case -1:
+                focusState = initFocusState();
+                break;
+        }
+        return focusState == YES;
+    }
+
+    public abstract int getTheFocusId();
+
+    //初始化关注状态
+    protected int initFocusState(){
+        return getTheFocusId() > 0 ? YES : NO;
+    }
+
+    public void setFocus(boolean focus) {
+        focusState = focus ? YES : NO;
+    }
+}

+ 30 - 0
app/src/main/java/com/sheep/gamegroup/absBase/AbsObserver.java

@@ -0,0 +1,30 @@
+package com.sheep.gamegroup.absBase;
+
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+
+/**
+ * Created by realicing on 2018/11/19.
+ * realicing@sina.com
+ */
+public abstract class AbsObserver<T> implements Observer<T> {
+    @Override
+    public void onSubscribe(Disposable d) {
+
+    }
+
+    @Override
+    public void onNext(T t) {
+
+    }
+
+    @Override
+    public void onError(Throwable e) {
+
+    }
+
+    @Override
+    public void onComplete() {
+
+    }
+}

+ 5 - 6
app/src/main/java/com/sheep/gamegroup/absBase/BaseActivity.java

@@ -11,10 +11,9 @@ import java.util.concurrent.TimeUnit;
 
 import butterknife.ButterKnife;
 import butterknife.Unbinder;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by kemllor on 2017/12/15.
@@ -75,9 +74,9 @@ public abstract class BaseActivity extends RxAppCompatActivity {
             Observable.just(1).delay(50L, TimeUnit.MILLISECONDS)
                     .subscribeOn(Schedulers.io())
                     .observeOn(AndroidSchedulers.mainThread())
-                    .subscribe(new Action1<Integer>() {
+                    .subscribe(new AbsObserver<Integer>() {
                         @Override
-                        public void call(Integer integer) {
+                        public void onNext(Integer integer) {
                             doNextAction(action);
                         }
                     });

+ 5 - 5
app/src/main/java/com/sheep/gamegroup/absBase/BaseListActivity2.java

@@ -20,10 +20,10 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import java.util.List;
 
 import butterknife.BindView;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/9/3.
@@ -130,9 +130,9 @@ public abstract class BaseListActivity2<T> extends BaseActivity implements IRefr
             lastCacheList = DataUtil.getInstance().getCacheList(urlKey, getTClass(), conversion, page);
             loadList(lastCacheList);
         }
-        SysAppUtil.checkNet(new Action1<Integer>() {
+        SysAppUtil.checkNet(new AbsObserver<Integer>() {
             @Override
-            public void call(Integer result) {
+            public void onNext(Integer result) {
                 if (result != 0) {//无网络
                     if (check_net_ll != null)
                         check_net_ll.setVisibility(View.VISIBLE);

+ 6 - 4
app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java

@@ -19,8 +19,9 @@ import dagger.Module;
 import dagger.Provides;
 import okhttp3.OkHttpClient;
 import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
-import retrofit2.converter.gson.GsonConverterFactory;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.fastjson.FastJsonConverterFactory;
+//import retrofit2.converter.gson.GsonConverterFactory;
 
 /**
  * Created by ljy on 2018/3/8.
@@ -50,8 +51,9 @@ public class NetModule {
                 .client(okhttpClient)
                 .baseUrl(SheepApp.getInstance().getConnectAddress().getAppUrl()+"v1/")
                 .addConverterFactory(StringConverterFactory.create())
-                .addConverterFactory(GsonConverterFactory.create(EntityUtils.gson))//
-                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
+                .addConverterFactory(FastJsonConverterFactory.create())
+//                .addConverterFactory(GsonConverterFactory.create(EntityUtils.gson))//
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                 .build();
         return retrofit;
     }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/event/EventDownloadHandler.java

@@ -25,7 +25,7 @@ public class EventDownloadHandler {
     public static EventDownloadHandler newInstance(Context context, OnDownCallback callback) {
         mContext = context;
         eventDownloadHandler = new EventDownloadHandler();
-        downloadTaskService = new DownloadUtil(mContext);
+        downloadTaskService = new DownloadUtil();
         onDownCallback = callback;
         return eventDownloadHandler;
     }

+ 69 - 96
app/src/main/java/com/sheep/gamegroup/greendao/DDProviderHelper.java

@@ -1,7 +1,5 @@
 package com.sheep.gamegroup.greendao;
 
-import android.content.Context;
-
 import com.sheep.gamegroup.greendao.download.AcceptTaskRecord;
 import com.sheep.gamegroup.greendao.download.AcceptTaskRecordDao;
 import com.sheep.gamegroup.greendao.download.DaoMaster;
@@ -18,6 +16,7 @@ import com.sheep.gamegroup.greendao.download.SearchRecord;
 import com.sheep.gamegroup.greendao.download.SearchRecordDao;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.DownloadUtil;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
 
 import java.util.List;
@@ -47,10 +46,10 @@ public class DDProviderHelper {
     private DaoMaster.DevOpenHelper openHelper;
     private DaoSession daoSession;
 
-    private synchronized DaoSession getDaossion(Context context) {
+    private synchronized DaoSession getDaossion() {
         if(daoSession == null) {
             if (openHelper == null) {
-                openHelper = new DaoMaster.DevOpenHelper(context, "dd.db");
+                openHelper = new DaoMaster.DevOpenHelper(SheepApp.getInstance(), "dd.db");
             }
             daoSession = new DaoMaster(openHelper.getReadableDb()).newSession();
         }
@@ -60,11 +59,10 @@ public class DDProviderHelper {
     /**
      * 获取下载任务列表
      *
-     * @param context
      * @return
      */
-    public List<DownLoadInfo> getDownloadList(Context context) {
-        List<DownLoadInfo> list = getDaossion(context).getDownLoadInfoDao().queryBuilder().build().list();
+    public List<DownLoadInfo> getDownloadList() {
+        List<DownLoadInfo> list = getDaossion().getDownLoadInfoDao().queryBuilder().build().list();
         return list;
     }
 
@@ -72,22 +70,20 @@ public class DDProviderHelper {
     /**
      * 更新下载任务状态;
      *
-     * @param context
      * @param info
      */
-    public void updateDownload(Context context, DownLoadInfo info) {
-        DownLoadInfoDao loadInfoDao = getDaossion(context).getDownLoadInfoDao();
+    public void updateDownload(DownLoadInfo info) {
+        DownLoadInfoDao loadInfoDao = getDaossion().getDownLoadInfoDao();
         loadInfoDao.update(info);
     }
 
     /**
      * 添加或更新任务
      *
-     * @param context
      * @param info
      */
-    public boolean addOrUpDataDownloadTask(Context context, DownLoadInfo info) {
-        DownLoadInfoDao infoDao = getDaossion(context).getDownLoadInfoDao();
+    public boolean addOrUpDataDownloadTask(DownLoadInfo info) {
+        DownLoadInfoDao infoDao = getDaossion().getDownLoadInfoDao();
         DownLoadInfo downLoadInfo = infoDao
                 .queryBuilder()
                 .where(DownLoadInfoDao.Properties.MDownloadUrl.eq(info.getMDownloadUrl()))
@@ -110,10 +106,9 @@ public class DDProviderHelper {
     /**
      * 删除所有任务;
      *
-     * @param context
      */
-    public void deleteAllDownloadTask(Context context) {
-        DownLoadInfoDao loadInfoDao = getDaossion(context).getDownLoadInfoDao();
+    public void deleteAllDownloadTask() {
+        DownLoadInfoDao loadInfoDao = getDaossion().getDownLoadInfoDao();
         loadInfoDao.deleteAll();
     }
 
@@ -121,12 +116,11 @@ public class DDProviderHelper {
     /**
      * 删除指定任务;
      *
-     * @param context
      * @param url
      */
-    public boolean deleteDownloadTaskByUrl(Context context, String url) {
+    public boolean deleteDownloadTaskByUrl(String url) {
         try {
-            DownLoadInfoDao loadInfoDao = getDaossion(context).getDownLoadInfoDao();
+            DownLoadInfoDao loadInfoDao = getDaossion().getDownLoadInfoDao();
             DownLoadInfo loadInfo = loadInfoDao.queryBuilder()
                     .where(DownLoadInfoDao.Properties.MDownloadUrl.eq(url))
                     .build()
@@ -142,10 +136,9 @@ public class DDProviderHelper {
     /**
      * 获取下载中的任务;
      *
-     * @param ctx
      */
-    public List<DownLoadInfo> getDownloadingTask(Context ctx) {
-        List<DownLoadInfo> loadInfos = getDaossion(ctx)
+    public List<DownLoadInfo> getDownloadingTask() {
+        List<DownLoadInfo> loadInfos = getDaossion()
                 .getDownLoadInfoDao()
                 .queryBuilder()
                 .where(DownLoadInfoDao.Properties.MStatus.eq(2))
@@ -159,8 +152,8 @@ public class DDProviderHelper {
      *
      * @param downloadUrl
      */
-    public DownLoadInfo getDownloadTask(Context context, String downloadUrl) {
-        DownLoadInfo downLoadInfo = getDaossion(context)
+    public DownLoadInfo getDownloadTask(String downloadUrl) {
+        DownLoadInfo downLoadInfo = getDaossion()
                 .getDownLoadInfoDao()
                 .queryBuilder()
                 .where(DownLoadInfoDao.Properties.MDownloadUrl.eq(downloadUrl))
@@ -174,8 +167,8 @@ public class DDProviderHelper {
      *
      * @param packName
      */
-    public DownLoadInfo getDownloadTaskToPackname(Context context, String packName) {
-        DownLoadInfo downLoadInfo = getDaossion(context)
+    public DownLoadInfo getDownloadTaskToPackname(String packName) {
+        DownLoadInfo downLoadInfo = getDaossion()
                 .getDownLoadInfoDao()
                 .queryBuilder()
                 .where(DownLoadInfoDao.Properties.MPackageName.eq(packName))
@@ -188,16 +181,15 @@ public class DDProviderHelper {
     /**
      * 下载任务完成
      *
-     * @param ctx
      * @param downloadUrl
      * @param apkPath
      */
-    public DownLoadInfo setDownloadTaskFinish(Context ctx, String downloadUrl, String apkPath) {
-        DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
+    public DownLoadInfo setDownloadTaskFinish(String downloadUrl, String apkPath) {
+        DownLoadInfo downloadTask = getDownloadTask(downloadUrl);
         if (downloadTask != null) {
             downloadTask.setMApkPath(apkPath);
             downloadTask.setMStatus(DownloadUtil.STATUS_FINISH);//DownloadTaskService.STATUS_FINISH
-            getDaossion(ctx).getDownLoadInfoDao().update(downloadTask);
+            getDaossion().getDownLoadInfoDao().update(downloadTask);
         }
         return downloadTask;
     }
@@ -205,13 +197,12 @@ public class DDProviderHelper {
     /**
      * 更新任务状态
      *
-     * @param ctx
      * @param downloadedSize
      * @param downloadTaskId
      * @param downloadUrl
      */
-    public DownLoadInfo updateDownloadPercent(Context ctx, double downloadedSize, String averageSpeed, int downloadTaskId, String downloadUrl, int state) {
-        DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
+    public DownLoadInfo updateDownloadPercent(double downloadedSize, String averageSpeed, int downloadTaskId, String downloadUrl, int state) {
+        DownLoadInfo downloadTask = getDownloadTask(downloadUrl);
         if (downloadTask != null) {
             int percent = (int) (downloadedSize * 100 / downloadTask.getMTotalSize());
             downloadTask.setMPercent(percent);
@@ -219,7 +210,7 @@ public class DDProviderHelper {
             downloadTask.setMDownloadedSize(downloadedSize);
             downloadTask.setMDownloadTaskId(downloadTaskId);
             downloadTask.setMStatus(state);//2下载中
-            updateDownload(ctx, downloadTask);
+            updateDownload(downloadTask);
         }
         return downloadTask;
     }
@@ -227,22 +218,21 @@ public class DDProviderHelper {
     /**
      * 更新任务状态
      *
-     * @param ctx
      * @param percent
      * @param downloadedSize
      * @param totalSize
      * @param downloadTaskId
      * @param downloadUrl
      */
-    public void updateDownloadPercent(Context ctx, int percent, double downloadedSize, double totalSize, int downloadTaskId, String downloadUrl, int state) {
-        DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
+    public void updateDownloadPercent(int percent, double downloadedSize, double totalSize, int downloadTaskId, String downloadUrl, int state) {
+        DownLoadInfo downloadTask = getDownloadTask(downloadUrl);
         if (downloadTask != null) {
             downloadTask.setMPercent(percent);
             downloadTask.setMTotalSize(totalSize);
             downloadTask.setMDownloadedSize(downloadedSize);
             downloadTask.setMDownloadTaskId(downloadTaskId);
             downloadTask.setMStatus(state);//2下载中
-            updateDownload(ctx, downloadTask);
+            updateDownload(downloadTask);
         }
     }
 
@@ -250,16 +240,15 @@ public class DDProviderHelper {
     /**
      * 添加文件总长度
      *
-     * @param ctx
      * @param downloadUrl
      * @param totalLength
      */
-    public DownLoadInfo setDownloadTaskTotal(Context ctx, String downloadUrl, double totalLength) {
+    public DownLoadInfo setDownloadTaskTotal(String downloadUrl, double totalLength) {
         try {
-            DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
+            DownLoadInfo downloadTask = getDownloadTask(downloadUrl);
             if (downloadTask != null) {
                 downloadTask.setMTotalSize(totalLength);
-                updateDownload(ctx, downloadTask);
+                updateDownload(downloadTask);
                 return downloadTask;
             }
             return null;
@@ -272,16 +261,15 @@ public class DDProviderHelper {
     /**
      * 改变任务状态
      *
-     * @param ctx
      * @param downloadUrl
      * @param status
      */
-    public DownLoadInfo setDownloadTaskStatus(Context ctx, String downloadUrl, int status) {
+    public DownLoadInfo setDownloadTaskStatus(String downloadUrl, int status) {
         try {
-            DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
+            DownLoadInfo downloadTask = getDownloadTask(downloadUrl);
             if (downloadTask != null) {
                 downloadTask.setMStatus(status);
-                updateDownload(ctx, downloadTask);
+                updateDownload(downloadTask);
                 return downloadTask;
             }
             return null;
@@ -294,10 +282,9 @@ public class DDProviderHelper {
     /**
      * app启动  所有任务全部暂停
      *
-     * @param context
      */
-    public void restoreDownloadTaskStatus(Context context) {
-        DownLoadInfoDao downLoadInfoDao = getDaossion(context).getDownLoadInfoDao();
+    public void restoreDownloadTaskStatus() {
+        DownLoadInfoDao downLoadInfoDao = getDaossion().getDownLoadInfoDao();
         List<DownLoadInfo> list = downLoadInfoDao
                 .queryBuilder()
                 .whereOr(DownLoadInfoDao.Properties.MStatus.eq(0), DownLoadInfoDao.Properties.MStatus.eq(2))
@@ -317,22 +304,20 @@ public class DDProviderHelper {
      * 添加或更新记录
      * 添加成功返回true
      *
-     * @param context
      * @param newInfo
      */
-    public boolean addOrUpdateProcessRecord(Context context, ProcessRecord newInfo) {
-        return addOrUpdateProcessRecord(context, newInfo, null);
+    public boolean addOrUpdateProcessRecord(ProcessRecord newInfo) {
+        return addOrUpdateProcessRecord(newInfo, null);
     }
 
     /**
      * 添加或更新记录
      * 添加成功返回true
      *
-     * @param context
      * @param newInfo
      */
-    public boolean addOrUpdateProcessRecord(Context context, ProcessRecord newInfo, Action1<ProcessRecord> action1) {
-        ProcessRecordDao infoDao = getDaossion(context).getProcessRecordDao();
+    public boolean addOrUpdateProcessRecord(ProcessRecord newInfo, Action1<ProcessRecord> action1) {
+        ProcessRecordDao infoDao = getDaossion().getProcessRecordDao();
         ProcessRecord lastInfo = infoDao
                 .queryBuilder()
                 .where(ProcessRecordDao.Properties.PackageName.eq(newInfo.getPackageName()), ProcessRecordDao.Properties.UserId.eq(newInfo.getUserId()))
@@ -359,8 +344,8 @@ public class DDProviderHelper {
      *
      * @param packageName
      */
-    public ProcessRecord getProcessRecord(Context context, String packageName) {
-        ProcessRecord processRecord = getDaossion(context)
+    public ProcessRecord getProcessRecord(String packageName) {
+        ProcessRecord processRecord = getDaossion()
                 .getProcessRecordDao()
                 .queryBuilder()
                 .where(ProcessRecordDao.Properties.PackageName.eq(packageName))
@@ -373,12 +358,11 @@ public class DDProviderHelper {
      * 添加记录
      * 添加成功返回true
      *
-     * @param context
      * @param newInfo
      */
-    public boolean addAcceptTaskRecord(Context context, AcceptTaskRecord newInfo) {
+    public boolean addAcceptTaskRecord(AcceptTaskRecord newInfo) {
         try {
-            AcceptTaskRecordDao infoDao = getDaossion(context).getAcceptTaskRecordDao();
+            AcceptTaskRecordDao infoDao = getDaossion().getAcceptTaskRecordDao();
             infoDao.insert(newInfo);
         } catch (Exception e) {
             e.printStackTrace();
@@ -391,12 +375,11 @@ public class DDProviderHelper {
      * 更新记录
      * 添加成功返回true
      *
-     * @param context
      * @param newInfo
      */
-    public boolean updateAcceptTaskRecord(Context context, AcceptTaskRecord newInfo) {
+    public boolean updateAcceptTaskRecord(AcceptTaskRecord newInfo) {
         try {
-            AcceptTaskRecordDao infoDao = getDaossion(context).getAcceptTaskRecordDao();
+            AcceptTaskRecordDao infoDao = getDaossion().getAcceptTaskRecordDao();
             infoDao.update(newInfo);
         } catch (Exception e) {
             e.printStackTrace();
@@ -410,8 +393,8 @@ public class DDProviderHelper {
      *
      * @param packageName
      */
-    public AcceptTaskRecord getAcceptTaskRecord(Context context, String packageName) {
-        return getDaossion(context)
+    public AcceptTaskRecord getAcceptTaskRecord(String packageName) {
+        return getDaossion()
                 .getAcceptTaskRecordDao()
                 .queryBuilder()
                 .where(AcceptTaskRecordDao.Properties.PackageName.eq(packageName))
@@ -422,14 +405,13 @@ public class DDProviderHelper {
     /**
      * 删除用户的任务记录数据
      *
-     * @param context
      */
-    public void deleteTaskRecord(Context context) {
+    public void deleteTaskRecord() {
         if (AutoCheckService.IS_USE_THIS_SERVICE) {
-            ProcessRecordDao processRecordDao = getDaossion(context).getProcessRecordDao();
+            ProcessRecordDao processRecordDao = getDaossion().getProcessRecordDao();
             processRecordDao.deleteAll();
         } else {
-            AcceptTaskRecordDao acceptTaskRecordDao = getDaossion(context).getAcceptTaskRecordDao();
+            AcceptTaskRecordDao acceptTaskRecordDao = getDaossion().getAcceptTaskRecordDao();
             acceptTaskRecordDao.deleteAll();
         }
     }
@@ -438,12 +420,11 @@ public class DDProviderHelper {
      * 添加截图记录
      * 添加成功返回true
      *
-     * @param context
      * @param newInfo
      */
-    public boolean addScreenShotRecord(Context context, ScreenShotRecord newInfo) {
+    public boolean addScreenShotRecord(ScreenShotRecord newInfo) {
         try {
-            ScreenShotRecordDao infoDao = getDaossion(context).getScreenShotRecordDao();
+            ScreenShotRecordDao infoDao = getDaossion().getScreenShotRecordDao();
             infoDao.insert(newInfo);
         } catch (Exception e) {
             e.printStackTrace();
@@ -455,10 +436,9 @@ public class DDProviderHelper {
     /**
      * 获取对应包名下的截图列表
      *
-     * @param ctx
      */
-    public List<ScreenShotRecord> getScreenShotRecordList(Context ctx, String packageName) {
-        return getDaossion(ctx)
+    public List<ScreenShotRecord> getScreenShotRecordList(String packageName) {
+        return getDaossion()
                 .getScreenShotRecordDao()
                 .queryBuilder()
                 .where(ScreenShotRecordDao.Properties.PackageName.eq(packageName), ScreenShotRecordDao.Properties.UserId.eq(DataUtil.getInstance().getUserId()))
@@ -469,10 +449,9 @@ public class DDProviderHelper {
     /**
      * 是否监听到该截图
      *
-     * @param ctx
      */
-    public ScreenShotRecord getScreenShotRecord(Context ctx, String packageName, String imagePath) {
-        return getDaossion(ctx)
+    public ScreenShotRecord getScreenShotRecord(String packageName, String imagePath) {
+        return getDaossion()
                 .getScreenShotRecordDao()
                 .queryBuilder()
                 .where(ScreenShotRecordDao.Properties.PackageName.eq(packageName), ScreenShotRecordDao.Properties.Path.eq(imagePath), ScreenShotRecordDao.Properties.UserId.eq(DataUtil.getInstance().getUserId()))
@@ -483,10 +462,9 @@ public class DDProviderHelper {
     /**
      * 获取对应服务器下所有登录过的用户列表
      *
-     * @param ctx
      */
-    public List<SdkLoginUser> getSdkLoginUserList(Context ctx, String serviceName) {
-        return getDaossion(ctx)
+    public List<SdkLoginUser> getSdkLoginUserList(String serviceName) {
+        return getDaossion()
                 .getSdkLoginUserDao()
                 .queryBuilder()
                 .where(SdkLoginUserDao.Properties.ServiceName.eq(serviceName))
@@ -498,11 +476,10 @@ public class DDProviderHelper {
      * 添加或更新记录
      * 添加成功返回true
      *
-     * @param context
      * @param newInfo
      */
-    public boolean addOrUpdateSdkLoginUser(Context context, SdkLoginUser newInfo, Action1<SdkLoginUser> action1) {
-        SdkLoginUserDao infoDao = getDaossion(context).getSdkLoginUserDao();
+    public boolean addOrUpdateSdkLoginUser(SdkLoginUser newInfo, Action1<SdkLoginUser> action1) {
+        SdkLoginUserDao infoDao = getDaossion().getSdkLoginUserDao();
         SdkLoginUser lastInfo = infoDao
                 .queryBuilder()
                 .where(SdkLoginUserDao.Properties.ServiceName.eq(newInfo.getServiceName()), SdkLoginUserDao.Properties.Token.eq(newInfo.getToken()))
@@ -528,12 +505,11 @@ public class DDProviderHelper {
      * 删除sdkLoginUser记录
      * 删除成功返回true
      *
-     * @param context
      * @param oldInfo
      */
-    public boolean deleteSdkLoginUser(Context context, SdkLoginUser oldInfo) {
+    public boolean deleteSdkLoginUser(SdkLoginUser oldInfo) {
         if (oldInfo != null) {
-            SdkLoginUserDao loadInfoDao = getDaossion(context).getSdkLoginUserDao();
+            SdkLoginUserDao loadInfoDao = getDaossion().getSdkLoginUserDao();
             try {
                 loadInfoDao.delete(oldInfo);
                 return true;
@@ -558,11 +534,10 @@ public class DDProviderHelper {
      * 添加或更新搜索记录
      * 添加成功返回true
      *
-     * @param context
      * @param newInfo
      */
-    public boolean addOrUpdateSearchRecord(Context context, SearchRecord newInfo, Action1<SearchRecord> action1) {
-        SearchRecordDao infoDao = getDaossion(context).getSearchRecordDao();
+    public boolean addOrUpdateSearchRecord(SearchRecord newInfo, Action1<SearchRecord> action1) {
+        SearchRecordDao infoDao = getDaossion().getSearchRecordDao();
         SearchRecord lastInfo = infoDao
                 .queryBuilder()
                 .where(SearchRecordDao.Properties.Input.eq(newInfo.getInput()))
@@ -589,10 +564,9 @@ public class DDProviderHelper {
     /**
      * 获取搜索历史(根据搜索次数来排序)
      *
-     * @param ctx
      */
-    public List<SearchRecord> getSearchRecordList(Context ctx, int limit) {
-        return getDaossion(ctx)
+    public List<SearchRecord> getSearchRecordList(int limit) {
+        return getDaossion()
                 .getSearchRecordDao()
                 .queryBuilder()
                 .limit(limit)
@@ -605,12 +579,11 @@ public class DDProviderHelper {
      * 删除搜索记录
      * 删除成功返回true
      *
-     * @param context
      * @param oldInfo
      */
-    public boolean deleteSearchRecord(Context context, SearchRecord oldInfo) {
+    public boolean deleteSearchRecord(SearchRecord oldInfo) {
         if (oldInfo != null) {
-            SearchRecordDao loadInfoDao = getDaossion(context).getSearchRecordDao();
+            SearchRecordDao loadInfoDao = getDaossion().getSearchRecordDao();
             try {
                 loadInfoDao.delete(oldInfo);
                 return true;

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/helper/DownloadHelper.java

@@ -48,7 +48,7 @@ public class DownloadHelper {
     public void updateDownloadTaskView(final Activity activity, final IDownload iTask, final TextView down_tv, final Action1<Object> callBack,int type) {
         final boolean showSimpleText = down_tv.getText().length() < 4;
         if(downloadUtil == null){
-            downloadUtil = new DownloadUtil(activity);
+            downloadUtil = new DownloadUtil();
         }
         TaskDetailAct.setBtnStr(iTask, downloadUtil, new Action1<Object>() {
             @Override

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/helper/FindAppHelper.java

@@ -19,9 +19,9 @@ import com.sheep.jiuyan.samllsheep.utils.G;
 
 import java.util.Locale;
 
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_APP;
 

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/helper/TaskHelper.java

@@ -30,9 +30,9 @@ import com.sheep.jiuyan.samllsheep.utils.G;
 import java.util.List;
 import java.util.Locale;
 
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.model.entity.TaskEty.TASK_TYPE_APP;
 import static com.sheep.gamegroup.model.entity.TaskEty.TASK_TYPE_CHANG_SI;

+ 31 - 2
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -22,7 +22,7 @@ import retrofit2.http.Path;
 import retrofit2.http.Query;
 import retrofit2.http.QueryMap;
 import retrofit2.http.Streaming;
-import rx.Observable;
+import io.reactivex.Observable;
 
 /**
  * 暂时没接口
@@ -1134,6 +1134,27 @@ public interface ApiService {
      */
     @POST("app/game_user/focus_user")
     Observable<BaseMessage> postGameUserFocusUser(@Query("focus_user_id") int focus_user_id);
+    /**
+     * 热门用户列表
+     * page * integer (query) 页码
+     * per_page * integer (query) 每页显示条数默认10条
+     */
+    @GET(ApiKey.getGameUserUserFocusHotUser)
+    Observable<BaseMessage> getGameUserUserFocusHotUser(@Query("page") int page, @Query("per_page") int per_page);
+    /**
+     * 关注的用户列表
+     * page * integer (query) 页码
+     * per_page * integer (query) 每页显示条数默认10条
+     */
+    @GET(ApiKey.getGameUserUserFocusList)
+    Observable<BaseMessage> getGameUserUserFocusList(@Query("page") int page, @Query("per_page") int per_page);
+    /**
+     * 关注的游戏列表
+     * page * integer (query) 页码
+     * per_page * integer (query) 每页显示条数默认10条
+     */
+    @GET(ApiKey.getGameUserGameFocusList)
+    Observable<BaseMessage> getGameUserGameFocusList(@Query("page") int page, @Query("per_page") int per_page);
 
     /**
      * 查询最近在玩以及同类型游戏
@@ -1324,7 +1345,7 @@ public interface ApiService {
     @GET("app/user_sign/signs")
     Observable<BaseMessage> getUserSignSigns();
     /**
-     * 获取最后一次刮奖结果
+     * 获取下次刮奖金额
      */
     @GET("app/user_sign/scratch_amount")
     Observable<BaseMessage> getUserSignScratch_amount();
@@ -1416,4 +1437,12 @@ public interface ApiService {
     @GET("youmi/youmi_total_price")
     Observable<BaseMessage> getYmTotalPrice(@Query("uid") String uid);
 //---------------------------end 有米科技相关接口-------------------------------------
+//---------------------------start 小绵羊3.4.5 足迹-------------------------------------
+
+    /**
+     * 小绵羊3.4.5 足迹
+     */
+    @GET(ApiKey.getFootMark)
+    Observable<BaseMessage> getFootMark(@Query("page") int page, @Query("per_page") int per_page);
+//---------------------------end 小绵羊3.4.5 足迹-------------------------------------
 }

+ 36 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/AppInfoExtDetail.java

@@ -0,0 +1,36 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/11/15.
+ * realicing@sina.com
+ * 游戏信息中的扩展字段
+ */
+public class AppInfoExtDetail {
+    private String title;
+    private String kay;
+    private String value;
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getKay() {
+        return kay;
+    }
+
+    public void setKay(String kay) {
+        this.kay = kay;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}

+ 16 - 16
app/src/main/java/com/sheep/gamegroup/model/entity/Applications.java

@@ -1,14 +1,11 @@
 package com.sheep.gamegroup.model.entity;
 
-import android.text.TextUtils;
-
 import com.sheep.gamegroup.helper.DownloadHelper;
 import com.sheep.gamegroup.helper.FindAppHelper;
 import com.sheep.gamegroup.model.api.IDownload;
-import com.sheep.gamegroup.util.ListUtil;
 
 import java.io.Serializable;
-import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Created by realicing on 2018/6/28.
@@ -47,6 +44,8 @@ public class Applications implements IDownload, Serializable {
 
     private String manufacturer;//厂商
 
+    private String main_publicize;//主宣传图(视频)
+
     private int score_count;//评分人数
 
     private int download_type;//1:非预约下载 2:预约下载
@@ -69,7 +68,7 @@ public class Applications implements IDownload, Serializable {
 
     private int is_recommend;
 
-    private String game_tag;
+    private List<GameListTag> tags;
 
     private String ext_detail;
 
@@ -305,12 +304,12 @@ public class Applications implements IDownload, Serializable {
         return this.is_recommend;
     }
 
-    public void setGame_tag(String game_tag) {
-        this.game_tag = game_tag;
+    public List<GameListTag> getTags() {
+        return tags;
     }
 
-    public String getGame_tag() {
-        return this.game_tag;
+    public void setTags(List<GameListTag> tags) {
+        this.tags = tags;
     }
 
     public void setSort(int sort) {
@@ -353,6 +352,14 @@ public class Applications implements IDownload, Serializable {
         this.ext_detail = ext_detail;
     }
 
+    public String getMain_publicize() {
+        return main_publicize;
+    }
+
+    public void setMain_publicize(String main_publicize) {
+        this.main_publicize = main_publicize;
+    }
+
     @Override
     public String getPackage_names() {
         return package_name;
@@ -422,11 +429,4 @@ public class Applications implements IDownload, Serializable {
         findAppHelper.getDownloadHelper().updateState(status);
     }
 
-    //从game_tag中获取tagList
-    public ArrayList<String> getTagList() {
-        if (!TextUtils.isEmpty(game_tag)) {
-            return ListUtil.asList(game_tag.split(","));
-        }
-        return ListUtil.emptyList();
-    }
 }

+ 4 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/GameListType.java

@@ -95,4 +95,8 @@ public class GameListType implements Serializable {
         }
         return map;
     }
+
+    //1:非预约下载 2:预约下载
+    public static final int T_DOWNLOAD_TYPE_NO = 1;
+    public static final int T_DOWNLOAD_TYPE_YES = 2;
 }

+ 2 - 4
app/src/main/java/com/sheep/gamegroup/model/entity/SheepSignResult.java

@@ -3,6 +3,8 @@ package com.sheep.gamegroup.model.entity;
 
 import com.sheep.jiuyan.samllsheep.ui.activity.SignActivity;
 
+import static com.sheep.gamegroup.absBase.AbsFocus.YES;
+
 /**
  * Created by realicing on 2018/11/13.
  * realicing@sina.com
@@ -30,10 +32,6 @@ public class SheepSignResult {
     }
 
 
-
-    public static final int YES = 1;
-    public static final int NO = 0;
-
     //是否签到成功
     public boolean isSign(){
         return hasSign == YES;

+ 0 - 9
app/src/main/java/com/sheep/gamegroup/model/entity/SlideshowEty.java

@@ -18,7 +18,6 @@ public class SlideshowEty {
     private int TypeId;
     private String Title;
 
-    private String objects;//预留字段
 
     public int getTypeId() {
         return TypeId;
@@ -36,14 +35,6 @@ public class SlideshowEty {
         Title = title;
     }
 
-    public String getObjects() {
-        return objects;
-    }
-
-    public void setObjects(String objects) {
-        this.objects = objects;
-    }
-
     public String getCreateTime() {
         return CreateTime;
     }

+ 10 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/UserCommentReply.java

@@ -132,4 +132,14 @@ public class UserCommentReply {
         }
         return showAll;
     }
+
+    private ShowAll replyShowAll;
+    public ShowAll getReplyShowAll() {
+        if(replyShowAll == null) {
+            boolean hasExp = EmotionLayout.hasExp(reply);
+            replyShowAll = new ShowAll(hasExp ? EmotionLayout.changeContent(reply) : reply);
+            replyShowAll.setHasExp(hasExp);
+        }
+        return replyShowAll;
+    }
 }

+ 56 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/UserFocusGame.java

@@ -0,0 +1,56 @@
+package com.sheep.gamegroup.model.entity;
+
+import com.sheep.gamegroup.absBase.AbsFocus;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ * 小绵羊3.4.5新增--用户关注的游戏
+ */
+public class UserFocusGame extends AbsFocus {
+    private int CreateTime;
+
+    private Applications applications;
+
+    private int focus_game_id;
+
+    private int id;
+
+    private int user_id;
+
+    public void setCreateTime(int CreateTime){
+        this.CreateTime = CreateTime;
+    }
+    public int getCreateTime(){
+        return this.CreateTime;
+    }
+    public void setApplications(Applications applications){
+        this.applications = applications;
+    }
+    public Applications getApplications(){
+        return this.applications;
+    }
+    public void setFocus_game_id(int focus_game_id){
+        this.focus_game_id = focus_game_id;
+    }
+    public int getFocus_game_id(){
+        return this.focus_game_id;
+    }
+    public void setId(int id){
+        this.id = id;
+    }
+    public int getId(){
+        return this.id;
+    }
+    public void setUser_id(int user_id){
+        this.user_id = user_id;
+    }
+    public int getUser_id(){
+        return this.user_id;
+    }
+
+    @Override
+    public int getTheFocusId() {
+        return focus_game_id;
+    }
+}

+ 145 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/UserFocusLog.java

@@ -0,0 +1,145 @@
+package com.sheep.gamegroup.model.entity;
+
+import android.graphics.Color;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.style.AbsoluteSizeSpan;
+import android.text.style.ForegroundColorSpan;
+
+import com.sheep.gamegroup.absBase.AbsFocus;
+import com.sheep.gamegroup.util.ResourceUtils;
+import com.sheep.jiuyan.samllsheep.R;
+
+import java.util.Locale;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ * 小绵羊3.4.5新增--用户关注的用户
+ * <p>
+ * avatar:	string
+ * 关注人头像
+ * create_time:	integer ($int64)
+ * focus_user_id:	integer ($int64)
+ * 关注的用户id
+ * id:	integer ($int64)
+ * is_follow:	integer ($int64)
+ * 我是否已关注 1:已关注 0:未关注
+ * nickname:	string
+ * 关注人昵称
+ * user_id:	integer ($int64)
+ * 用户id
+ * user_type:	string
+ * 关注人类型,目前全是资深玩家
+ */
+public class UserFocusLog extends AbsFocus {
+    private String avatar;
+
+    private int create_time;
+
+    private int focus_user_id;
+
+    private int id;
+
+    private String nickname;
+
+    private int user_id;
+
+    private String user_type;
+
+    private int is_follow;
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getAvatar() {
+        return this.avatar;
+    }
+
+    public void setCreate_time(int create_time) {
+        this.create_time = create_time;
+    }
+
+    public int getCreate_time() {
+        return this.create_time;
+    }
+
+    public void setFocus_user_id(int focus_user_id) {
+        this.focus_user_id = focus_user_id;
+    }
+
+    public int getFocus_user_id() {
+        return this.focus_user_id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return this.id;
+    }
+
+    public void setNickname(String nickname) {
+        this.nickname = nickname;
+    }
+
+    public String getNickname() {
+        return this.nickname;
+    }
+
+    public void setUser_id(int user_id) {
+        this.user_id = user_id;
+    }
+
+    public int getUser_id() {
+        return this.user_id;
+    }
+
+    public void setUser_type(String user_type) {
+        this.user_type = user_type;
+    }
+
+    public String getUser_type() {
+        return this.user_type;
+    }
+
+    public int getIs_follow() {
+        return is_follow;
+    }
+
+    public void setIs_follow(int is_follow) {
+        this.is_follow = is_follow;
+    }
+
+    @Override
+    public int getTheFocusId() {
+        return focus_user_id;
+    }
+
+    @Override
+    protected int initFocusState() {
+        return is_follow;
+    }
+
+    public CharSequence getInfo() {
+        if (nickname == null) {
+            return user_type;
+        }
+        if (user_type == null) {
+            return "";
+        }
+        String content = String.format(Locale.CHINA, "%s\n%s", nickname, user_type);
+        SpannableStringBuilder spannableString = new SpannableStringBuilder();
+        spannableString.append(content);
+        int start = nickname.length();
+        int end = content.length();
+        AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(ResourceUtils.getXmlDef(R.dimen.sp_12), true);
+        spannableString.setSpan(absoluteSizeSpan, start, end, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
+        ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#999999"));
+        spannableString.setSpan(colorSpan, start, end, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
+
+        return spannableString;
+    }
+}

+ 0 - 19
app/src/main/java/com/sheep/gamegroup/model/util/AbsSubscriber.java

@@ -1,19 +0,0 @@
-package com.sheep.gamegroup.model.util;
-
-import rx.Subscriber;
-
-/**
- * Created by realicing on 2018/10/30.
- * realicing@sina.com
- */
-public abstract class AbsSubscriber<T> extends Subscriber<T> {
-    @Override
-    public void onCompleted() {
-
-    }
-
-    @Override
-    public void onError(Throwable e) {
-
-    }
-}

+ 0 - 27
app/src/main/java/com/sheep/gamegroup/model/util/DateTimeTypeAdapter.java

@@ -1,27 +0,0 @@
-package com.sheep.gamegroup.model.util;
-
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonPrimitive;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import org.joda.time.DateTime;
-
-import java.lang.reflect.Type;
-
-public class DateTimeTypeAdapter implements JsonSerializer<DateTime>, JsonDeserializer<DateTime> {
-
-    @Override
-    public JsonElement serialize(DateTime src, Type typeOfSrc, JsonSerializationContext context) {
-        return new JsonPrimitive(src.toString());
-    }
-
-    @Override
-    public DateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
-        return new DateTime(json.getAsString());
-    }
-
-}

+ 0 - 7
app/src/main/java/com/sheep/gamegroup/model/util/EntityUtils.java

@@ -3,23 +3,16 @@ package com.sheep.gamegroup.model.util;
 import android.text.TextUtils;
 
 import com.alibaba.fastjson.JSONObject;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
 import com.sheep.gamegroup.model.entity.Ext;
 import com.sheep.gamegroup.model.entity.LoginEntity;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.util.DeviceUtil;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
-import org.joda.time.DateTime;
-
 public final class EntityUtils {
 
     private EntityUtils() {}
 
-    public static final Gson gson = new GsonBuilder()
-            .registerTypeAdapter(DateTime.class, new DateTimeTypeAdapter())
-            .create();
 
     public static Ext getExtInfo(String ext){
         Ext extInfo;

+ 4 - 4
app/src/main/java/com/sheep/gamegroup/model/util/ExceptionHandle.java

@@ -3,12 +3,11 @@ package com.sheep.gamegroup.model.util;
 import android.util.Log;
 
 import com.alibaba.fastjson.JSONException;
-import com.google.gson.JsonParseException;
 
 import java.io.IOException;
 import java.net.ConnectException;
 
-import retrofit2.adapter.rxjava.HttpException;
+import retrofit2.HttpException;
 
 /**
  * Created by ljy on 2018/3/19.
@@ -55,8 +54,9 @@ public class ExceptionHandle {
             ex = new ResponeThrowable(resultException, resultException.code);
             ex.message = resultException.message;
             return ex;
-        } else if (e instanceof JsonParseException
-                || e instanceof JSONException
+        } else if (
+//                e instanceof JsonParseException//
+                 e instanceof JSONException
                 /*|| e instanceof ParseException*/) {
             ex = new ResponeThrowable(e, ERROR.PARSE_ERROR);
             ex.message = "解析错误";

+ 0 - 27
app/src/main/java/com/sheep/gamegroup/model/util/HttpUtils.java

@@ -1,27 +0,0 @@
-package com.sheep.gamegroup.model.util;
-
-
-import com.sheep.jiuyan.samllsheep.BuildConfig;
-
-import java.util.concurrent.TimeUnit;
-
-import okhttp3.OkHttpClient;
-import okhttp3.logging.HttpLoggingInterceptor;
-
-/**
- * Created by ljy on 2018/3/8.
- */
-public class HttpUtils {
-    private HttpUtils() {}
-    public static final OkHttpClient client = new OkHttpClient.Builder()
-            .connectTimeout(20, TimeUnit.SECONDS)
-            .readTimeout(20,TimeUnit.SECONDS)
-            .addInterceptor(createHttpLoggingInterceptor())
-            .build();
-
-    private static HttpLoggingInterceptor createHttpLoggingInterceptor() {
-        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
-        loggingInterceptor.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE);
-        return loggingInterceptor;
-    }
-}

+ 0 - 38
app/src/main/java/com/sheep/gamegroup/model/util/RxBus.java

@@ -1,38 +0,0 @@
-package com.sheep.gamegroup.model.util;
-
-import rx.subjects.PublishSubject;
-import rx.subjects.SerializedSubject;
-import rx.subjects.Subject;
-
-/**
- * 广播发送
- * Created by ljy on 2018/3/23.
- */
-
-public class RxBus {
-    private static volatile RxBus rxBus;
-
-    private final Subject<Object,Object> bus;
-
-    public RxBus() {
-        bus = new SerializedSubject<>(PublishSubject.create());
-    }
-
-    public static RxBus getDefault(){
-        if (rxBus == null){
-            synchronized (RxBus.class){
-                if (rxBus == null){
-                    rxBus = new RxBus();
-                }
-            }
-        }
-        return rxBus;
-    }
-
-    /**
-     * 发送一个事件
-     */
-    public void post(Object o){
-        bus.onNext(o);
-    }
-}

+ 8 - 11
app/src/main/java/com/sheep/gamegroup/model/util/SheepSubscriber.java

@@ -2,8 +2,6 @@ package com.sheep.gamegroup.model.util;
 
 import android.app.Activity;
 import android.content.Context;
-import android.text.TextUtils;
-import android.util.Log;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSONObject;
@@ -11,22 +9,22 @@ import com.sheep.gamegroup.model.api.BaseMessageConverter;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.util.ActivityManager;
 import com.sheep.gamegroup.util.Jump2View;
-import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.NetUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.util.ViewUtil;
-import com.sheep.gamegroup.view.activity.ActPay;
 import com.sheep.gamegroup.view.activity.LoginAct;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
-import rx.Subscriber;
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+
 
 /**
  * Created by ljy on 2018/3/19.
  */
 
-public abstract class SheepSubscriber<T> extends Subscriber<T> {
+public abstract class SheepSubscriber<T> implements Observer<T> {
 
     private Context context;
 
@@ -35,8 +33,7 @@ public abstract class SheepSubscriber<T> extends Subscriber<T> {
     }
 
     @Override
-    public void onStart() {
-        super.onStart();
+    public void onSubscribe(Disposable d) {
         //接下来可以检查网络连接等操作
         if(context == null)
             context = SheepApp.getInstance();
@@ -44,8 +41,8 @@ public abstract class SheepSubscriber<T> extends Subscriber<T> {
 
             Toast.makeText(context, "当前网络不可用,请检查网络情况", Toast.LENGTH_SHORT).show();
             // 一定好主动调用下面这一句,取消本次Subscriber订阅
-            if (!isUnsubscribed()) {
-                unsubscribe();
+            if (!d.isDisposed()) {
+                d.dispose();
             }
             return;
         }
@@ -111,6 +108,6 @@ public abstract class SheepSubscriber<T> extends Subscriber<T> {
     public abstract void onError(BaseMessage baseMessage);
 
     @Override
-    public void onCompleted() {
+    public void onComplete() {
     }
 }

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/BindOrChangeWeixinPresenter.java

@@ -8,8 +8,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/18.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/CommitWxCodeMakeMoneyPresenter.java

@@ -8,8 +8,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/3/23.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/CommitWxMakeMoneyPresenter.java

@@ -8,8 +8,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/3/23.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/LieMakeMoneyPresenter.java

@@ -7,8 +7,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/3/23.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/LoginPresenter.java

@@ -21,8 +21,8 @@ import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by Administrator on 2018/3/10.

+ 2 - 4
app/src/main/java/com/sheep/gamegroup/presenter/PhonePresenter.java

@@ -3,12 +3,10 @@ package com.sheep.gamegroup.presenter;
 import android.util.Log;
 
 import com.alibaba.fastjson.JSONObject;
-import com.google.gson.Gson;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.ChannelContent;
-import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.PreferenceUtils;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.SheepApp;
@@ -19,8 +17,8 @@ import java.util.Map;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/15.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/ReNamePresenter.java

@@ -10,8 +10,8 @@ import java.util.HashMap;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by Administrator on 2018/3/10.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/RealNameAutherPresenter.java

@@ -11,8 +11,8 @@ import java.util.Iterator;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by Administrator on 2018/3/10.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/RechargeQPresenter.java

@@ -8,8 +8,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/18.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/SignCardPresenter.java

@@ -7,8 +7,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/18.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/SignRankingsPresenter.java

@@ -7,8 +7,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/18.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/SignRecordPresenter.java

@@ -7,8 +7,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/18.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/SmallSheepPresenter.java

@@ -15,8 +15,8 @@ import java.util.List;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/19.

+ 3 - 3
app/src/main/java/com/sheep/gamegroup/presenter/TaskDetailPresenter.java

@@ -9,9 +9,9 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import javax.inject.Inject;
 
 import retrofit2.http.Query;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 
 /**

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/TaskDialogPresenter.java

@@ -10,8 +10,8 @@ import com.alibaba.fastjson.JSONObject;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/22.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/TaskListPresenter.java

@@ -8,8 +8,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/21.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/TryMakeMoneyPresenter.java

@@ -10,8 +10,8 @@ import java.util.HashMap;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/19.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/WithdrawalListPresenter.java

@@ -7,8 +7,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/21.

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/presenter/WithdrawalPresenter.java

@@ -8,8 +8,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import javax.inject.Inject;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/18.

+ 1 - 2
app/src/main/java/com/sheep/gamegroup/receiver/ExampleUtil.java

@@ -13,7 +13,6 @@ import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.widget.Toast;
 
-import com.orhanobut.logger.Logger;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -110,7 +109,7 @@ public class ExampleUtil {
 			TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
             ret = telephonyManager.getDeviceId();
 		} catch (Exception e) {
-			Logger.e(ExampleUtil.class.getSimpleName(), e.getMessage());
+//			Logger.e(ExampleUtil.class.getSimpleName(), e.getMessage());
 		}
 		if (isReadableASCII(ret)){
             return ret;

+ 31 - 31
app/src/main/java/com/sheep/gamegroup/receiver/TagAliasOperatorHelper.java

@@ -5,7 +5,7 @@ import android.os.Handler;
 import android.os.Message;
 import android.util.SparseArray;
 
-import com.orhanobut.logger.Logger;
+import com.sheep.gamegroup.util.LogUtil;
 
 import java.util.Locale;
 import java.util.Set;
@@ -73,32 +73,32 @@ public class TagAliasOperatorHelper {
             switch (msg.what){
                 case DELAY_SEND_ACTION:
                     if(msg.obj !=null && msg.obj instanceof  TagAliasBean){
-                        Logger.i(TAG,"on delay time");
+                        LogUtil.println(TAG,"on delay time");
                         sequence++;
                         TagAliasBean tagAliasBean = (TagAliasBean) msg.obj;
                         setActionCache.put(sequence, tagAliasBean);
                         if(context!=null) {
                             handleAction(context, sequence, tagAliasBean);
                         }else{
-                            Logger.e(TAG,"#unexcepted - context was null");
+                            LogUtil.println(TAG,"#unexcepted - context was null");
                         }
                     }else{
-                        Logger.w(TAG,"#unexcepted - msg obj was incorrect");
+                        LogUtil.println(TAG,"#unexcepted - msg obj was incorrect");
                     }
                     break;
                 case DELAY_SET_MOBILE_NUMBER_ACTION:
                     if(msg.obj !=null && msg.obj instanceof  String) {
-                        Logger.i(TAG, "retry set mobile number");
+                        LogUtil.println(TAG, "retry set mobile number");
                         sequence++;
                         String mobileNumber = (String) msg.obj;
                         setActionCache.put(sequence, mobileNumber);
                         if(context !=null) {
                             handleAction(context, sequence, mobileNumber);
                         }else {
-                            Logger.e(TAG, "#unexcepted - context was null");
+                            LogUtil.println(TAG, "#unexcepted - context was null");
                         }
                     }else{
-                        Logger.w(TAG,"#unexcepted - msg obj was incorrect");
+                        LogUtil.println(TAG,"#unexcepted - msg obj was incorrect");
                     }
                     break;
             }
@@ -106,7 +106,7 @@ public class TagAliasOperatorHelper {
     };
     public void handleAction(Context context,int sequence,String mobileNumber){
         put(sequence,mobileNumber);
-        Logger.d(TAG,"sequence:"+sequence+",mobileNumber:"+mobileNumber);
+        LogUtil.println(TAG,"sequence:"+sequence+",mobileNumber:"+mobileNumber);
         JPushInterface.setMobileNumber(context,sequence,mobileNumber);
     }
     /**
@@ -115,7 +115,7 @@ public class TagAliasOperatorHelper {
     public void handleAction(Context context,int sequence, TagAliasBean tagAliasBean){
         init(context);
         if(tagAliasBean == null){
-            Logger.w(TAG,"tagAliasBean was null");
+            LogUtil.println(TAG,"tagAliasBean was null");
             return;
         }
         put(sequence,tagAliasBean);
@@ -131,7 +131,7 @@ public class TagAliasOperatorHelper {
                     JPushInterface.setAlias(context,sequence,tagAliasBean.alias);
                     break;
                 default:
-                    Logger.w(TAG,"unsupport alias action type");
+                    LogUtil.println(TAG,"unsupport alias action type");
                     return;
             }
         }else {
@@ -157,19 +157,19 @@ public class TagAliasOperatorHelper {
                     JPushInterface.cleanTags(context, sequence);
                     break;
                 default:
-                    Logger.w(TAG,"unsupport tag action type");
+                    LogUtil.println(TAG,"unsupport tag action type");
                     return;
             }
         }
     }
     private boolean RetryActionIfNeeded(int errorCode,TagAliasBean tagAliasBean){
         if(!ExampleUtil.isConnected(context)){
-            Logger.w(TAG,"no network");
+            LogUtil.println(TAG,"no network");
             return false;
         }
         //返回的错误码为6002 超时,6014 服务器繁忙,都建议延迟重试
         if(errorCode == 6002 || errorCode == 6014){
-            Logger.d(TAG,"need retry");
+            LogUtil.println(TAG,"need retry");
             if(tagAliasBean!=null){
                 Message message = new Message();
                 message.what = DELAY_SEND_ACTION;
@@ -184,12 +184,12 @@ public class TagAliasOperatorHelper {
     }
     private boolean RetrySetMObileNumberActionIfNeeded(int errorCode,String mobileNumber){
         if(!ExampleUtil.isConnected(context)){
-            Logger.w(TAG,"no network");
+            LogUtil.println(TAG,"no network");
             return false;
         }
         //返回的错误码为6002 超时,6024 服务器内部错误,建议稍后重试
         if(errorCode == 6002 || errorCode == 6024){
-            Logger.d(TAG,"need retry");
+            LogUtil.println(TAG,"need retry");
             Message message = new Message();
             message.what = DELAY_SET_MOBILE_NUMBER_ACTION;
             message.obj = mobileNumber;
@@ -227,8 +227,8 @@ public class TagAliasOperatorHelper {
     }
     public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
         int sequence = jPushMessage.getSequence();
-        Logger.i(TAG,"action - onTagOperatorResult, sequence:"+sequence+",tags:"+jPushMessage.getTags());
-        Logger.i(TAG,"tags size:"+jPushMessage.getTags().size());
+        LogUtil.println(TAG,"action - onTagOperatorResult, sequence:"+sequence+",tags:"+jPushMessage.getTags());
+        LogUtil.println(TAG,"tags size:"+jPushMessage.getTags().size());
         init(context);
         //根据sequence从之前操作缓存中获取缓存记录
         TagAliasBean tagAliasBean = (TagAliasBean)setActionCache.get(sequence);
@@ -237,10 +237,10 @@ public class TagAliasOperatorHelper {
             return;
         }
         if(jPushMessage.getErrorCode() == 0){
-            Logger.i(TAG,"action - modify tag Success,sequence:"+sequence);
+            LogUtil.println(TAG,"action - modify tag Success,sequence:"+sequence);
             setActionCache.remove(sequence);
             String logs = getActionStr(tagAliasBean.action)+" tags success";
-            Logger.i(TAG,logs);
+            LogUtil.println(TAG,logs);
             ExampleUtil.showToast(logs, context);
         }else{
             String logs = "Failed to " + getActionStr(tagAliasBean.action)+" tags";
@@ -249,7 +249,7 @@ public class TagAliasOperatorHelper {
                 logs += ", tags is exceed limit need to clean";
             }
             logs += ", errorCode:" + jPushMessage.getErrorCode();
-            Logger.e(TAG, logs);
+            LogUtil.println(TAG, logs);
             if(!RetryActionIfNeeded(jPushMessage.getErrorCode(),tagAliasBean)) {
                 ExampleUtil.showToast(logs, context);
             }
@@ -257,7 +257,7 @@ public class TagAliasOperatorHelper {
     }
     public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage){
         int sequence = jPushMessage.getSequence();
-        Logger.i(TAG,"action - onCheckTagOperatorResult, sequence:"+sequence+",checktag:"+jPushMessage.getCheckTag());
+        LogUtil.println(TAG,"action - onCheckTagOperatorResult, sequence:"+sequence+",checktag:"+jPushMessage.getCheckTag());
         init(context);
         //根据sequence从之前操作缓存中获取缓存记录
         TagAliasBean tagAliasBean = (TagAliasBean)setActionCache.get(sequence);
@@ -266,14 +266,14 @@ public class TagAliasOperatorHelper {
             return;
         }
         if(jPushMessage.getErrorCode() == 0){
-            Logger.i(TAG,"tagBean:"+tagAliasBean);
+            LogUtil.println(TAG,"tagBean:"+tagAliasBean);
             setActionCache.remove(sequence);
             String logs = getActionStr(tagAliasBean.action)+" tag "+jPushMessage.getCheckTag() + " bind state success,state:"+jPushMessage.getTagCheckStateResult();
-            Logger.i(TAG,logs);
+            LogUtil.println(TAG,logs);
             ExampleUtil.showToast(logs, context);
         }else{
             String logs = "Failed to " + getActionStr(tagAliasBean.action)+" tags, errorCode:" + jPushMessage.getErrorCode();
-            Logger.e(TAG, logs);
+            LogUtil.println(TAG, logs);
             if(!RetryActionIfNeeded(jPushMessage.getErrorCode(),tagAliasBean)) {
                 ExampleUtil.showToast(logs, context);
             }
@@ -281,7 +281,7 @@ public class TagAliasOperatorHelper {
     }
     public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
         int sequence = jPushMessage.getSequence();
-        Logger.i(TAG,"action - onAliasOperatorResult, sequence:"+sequence+",alias:"+jPushMessage.getAlias());
+        LogUtil.println(TAG,"action - onAliasOperatorResult, sequence:"+sequence+",alias:"+jPushMessage.getAlias());
         init(context);
         //根据sequence从之前操作缓存中获取缓存记录
         TagAliasBean tagAliasBean = (TagAliasBean)setActionCache.get(sequence);
@@ -290,14 +290,14 @@ public class TagAliasOperatorHelper {
             return;
         }
         if(jPushMessage.getErrorCode() == 0){
-            Logger.i(TAG,"action - modify alias Success,sequence:"+sequence);
+            LogUtil.println(TAG,"action - modify alias Success,sequence:"+sequence);
             setActionCache.remove(sequence);
             String logs = getActionStr(tagAliasBean.action)+" alias success";
-            Logger.i(TAG,logs);
+            LogUtil.println(TAG,logs);
             ExampleUtil.showToast(logs, context);
         }else{
             String logs = "Failed to " + getActionStr(tagAliasBean.action)+" alias, errorCode:" + jPushMessage.getErrorCode();
-            Logger.e(TAG, logs);
+            LogUtil.println(TAG, logs);
             if(!RetryActionIfNeeded(jPushMessage.getErrorCode(),tagAliasBean)) {
                 ExampleUtil.showToast(logs, context);
             }
@@ -306,14 +306,14 @@ public class TagAliasOperatorHelper {
     //设置手机号码回调
     public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
         int sequence = jPushMessage.getSequence();
-        Logger.i(TAG,"action - onMobileNumberOperatorResult, sequence:"+sequence+",mobileNumber:"+jPushMessage.getMobileNumber());
+        LogUtil.println(TAG,"action - onMobileNumberOperatorResult, sequence:"+sequence+",mobileNumber:"+jPushMessage.getMobileNumber());
         init(context);
         if(jPushMessage.getErrorCode() == 0){
-            Logger.i(TAG,"action - set mobile number Success,sequence:"+sequence);
+            LogUtil.println(TAG,"action - set mobile number Success,sequence:"+sequence);
             setActionCache.remove(sequence);
         }else{
             String logs = "Failed to set mobile number, errorCode:" + jPushMessage.getErrorCode();
-            Logger.e(TAG, logs);
+            LogUtil.println(TAG, logs);
             if(!RetrySetMObileNumberActionIfNeeded(jPushMessage.getErrorCode(),jPushMessage.getMobileNumber())){
                 ExampleUtil.showToast(logs, context);
             }

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/statistics/AppStatistics.java

@@ -8,8 +8,8 @@ import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by zhanghai on 2018/4/3.

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

@@ -10,9 +10,9 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/11/2.

+ 6 - 5
app/src/main/java/com/sheep/gamegroup/util/ApiUtil.java

@@ -3,6 +3,7 @@ package com.sheep.gamegroup.util;
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
 
+import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.IHomePageSearch;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.NewAboutUs;
@@ -11,10 +12,10 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import org.afinal.simplecache.ApiKey;
 
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/11/6.
@@ -72,9 +73,9 @@ public class ApiUtil {
         if(newAboutUs != null && !TextUtils.isEmpty(newAboutUs.getComplaintQq())){
             Observable.just(newAboutUs.getComplaintQq())
                     .observeOn(AndroidSchedulers.mainThread())
-                    .subscribe(new Action1<String>() {
+                    .subscribe(new AbsObserver<String>() {
                         @Override
-                        public void call(String qq) {
+                        public void onNext(String qq) {
                             action1.call(qq);
                         }
                     });

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

@@ -17,9 +17,9 @@ import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * 游戏认证
@@ -120,7 +120,7 @@ public class CertificationUtil {
                     newSdkLoginUser.setInvitation_code(userEntity.getInvitation_code());
                     newSdkLoginUser.setNickname(userEntity.getNickname());
                     newSdkLoginUser.setServiceName(SheepApp.getInstance().getConnectAddress().name());
-                    DDProviderHelper.getInstance().addOrUpdateSdkLoginUser(SheepApp.getInstance(), newSdkLoginUser, null);
+                    DDProviderHelper.getInstance().addOrUpdateSdkLoginUser(newSdkLoginUser, null);
                 }
             }
         });

+ 36 - 31
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -48,6 +48,7 @@ import com.sheep.gamegroup.model.entity.FriendAndAwardEntity;
 import com.sheep.gamegroup.model.entity.GameAccountEntity;
 import com.sheep.gamegroup.model.entity.Applications;
 import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.model.entity.GameListTag;
 import com.sheep.gamegroup.model.entity.GiftBagApp;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
 import com.sheep.gamegroup.model.entity.RobTask;
@@ -109,9 +110,9 @@ import java.util.Map;
 import java.util.Set;
 
 import okhttp3.Call;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.LINK_SHARE;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.NEWBIE_TASK;
@@ -629,7 +630,7 @@ public class CommonUtil {
         SpUtils.saveToken(activity, "");
         DataUtil.getInstance().clearData();
         //删除自动审核任务中保存的数据,防止用户切换账号后直接提交
-        DDProviderHelper.getInstance().deleteTaskRecord(SheepApp.getInstance());
+        DDProviderHelper.getInstance().deleteTaskRecord();
         ActivityManager.getInstance().finishAllActivity();
         Jump2View.getInstance().goLoginView(activity, "");
 
@@ -646,7 +647,7 @@ public class CommonUtil {
             reloadAutoTaskList();
         } else {//5.1及以上设备,直接记录任务开始时间
             if (task != null && task.isAppAutoCommitTask() && !TextUtils.isEmpty(task.getPackage_names())) {//接受自动审核任务才记录
-                AcceptTaskRecord lastAcceptTaskRecord = DDProviderHelper.getInstance().getAcceptTaskRecord(SheepApp.getInstance(), task.getPackage_names());
+                AcceptTaskRecord lastAcceptTaskRecord = DDProviderHelper.getInstance().getAcceptTaskRecord(task.getPackage_names());
                 long runTime = AppUsageManager.getInstance().getTotalTimeInForeground(task.getPackage_names());
                 if (lastAcceptTaskRecord == null) {
                     AcceptTaskRecord acceptTaskRecord = new AcceptTaskRecord();
@@ -654,10 +655,10 @@ public class CommonUtil {
                     acceptTaskRecord.setUserId(DataUtil.getInstance().getUserId());
                     acceptTaskRecord.setAcceptTime(System.currentTimeMillis());
                     acceptTaskRecord.setRunTime(runTime);
-                    DDProviderHelper.getInstance().addAcceptTaskRecord(SheepApp.getInstance(), acceptTaskRecord);//重置记录 5.1及以上使用
+                    DDProviderHelper.getInstance().addAcceptTaskRecord(acceptTaskRecord);//重置记录 5.1及以上使用
                 } else {
                     lastAcceptTaskRecord.setRunTime(runTime);
-                    DDProviderHelper.getInstance().updateAcceptTaskRecord(SheepApp.getInstance(), lastAcceptTaskRecord);
+                    DDProviderHelper.getInstance().updateAcceptTaskRecord(lastAcceptTaskRecord);
                 }
             }
         }
@@ -970,11 +971,17 @@ public class CommonUtil {
                 share_media = SHARE_MEDIA.WEIXIN_CIRCLE;
                 break;
         }
+        String title = activity.getResources().getString(R.string.app_name);
         UMImage umImage = new UMImage(activity, R.mipmap.icon);
         UMWeb umWeb = new UMWeb(realUrl);
-        umWeb.setTitle(activity.getResources().getString(R.string.app_name));
+        umWeb.setTitle(title);
         umWeb.setThumb(umImage);
-        umWeb.setDescription(TextUtils.isEmpty(description) ? activity.getResources().getString(R.string.app_name) : description);
+        umWeb.setDescription(TextUtils.isEmpty(description) ? title : description);
+        switch (type){
+            case DialogShare.WEIXIN_CIRCLE://微信朋友圈分享时只会显示标题,所以这里使用描述
+                umWeb.setTitle(TextUtils.isEmpty(description) ? title : (title + "\n" +description));
+                break;
+        }
         new ShareAction(activity)
                 .setPlatform(share_media)
                 .withMedia(umWeb)
@@ -1890,7 +1897,8 @@ public class CommonUtil {
                         View tabView = mTabStrip.getChildAt(i);
 
                         //拿到tabView的mTextView属性  tab的字数不固定一定用反射取mTextView
-                        Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");
+                        Field mTextViewField = tabView.getClass().getDeclaredField("textView");//com.android.support:design:28.0.0
+//                        Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");//com.android.support:design:27.1.0
                         mTextViewField.setAccessible(true);
 
                         TextView mTextView = (TextView) mTextViewField.get(tabView);
@@ -2018,7 +2026,7 @@ public class CommonUtil {
             String appId = "40";
             String cUId = String.valueOf(id);
             String appKey = "ad9a30556666207";
-            AdManager.getInstance(activity).init(activity, appId, cUId, appKey);
+            AdManager.getInstance(SheepApp.getInstance()).init(activity, appId, cUId, appKey);
             return true;
         }
         return false;
@@ -2364,8 +2372,7 @@ public class CommonUtil {
         Ext ext;
         switch (item.getType()) {// 0,类型 1跳转试玩赚钱、2单个任务详情、3信用卡办理、4 H5页面、5 微信二维码任务
             case 1:
-                Jump2View.getInstance()
-                        .goTryplayView(activity, null);
+                Jump2View.getInstance().goTryplayView(activity, null);
                 break;
             case 2:
                 ext = EntityUtils.getExtInfo(item.getExt());
@@ -2380,30 +2387,29 @@ public class CommonUtil {
                         .goCreditCardTaskList(activity, 3);
                 break;
             case 4:
-                if (!TextUtils.isEmpty(item.getObjects())) {
-                    ext = EntityUtils.getExtInfo(item.getExt());
-                    if (ext == null) {
-                        G.showToast(R.string.error_data);
-                        return;
-                    }
-                    if (ext.getTitle() == null)//外部浏览器加载H5
-                        Jump2View.getInstance().goWeb(activity, ext.getUrl());
-                    else//内部WebView加载H5
-                        Jump2View.getInstance().goWeb(activity, ext.getUrl(), ext.getTitle());
+                ext = EntityUtils.getExtInfo(item.getExt());
+                if (ext == null) {
+                    G.showToast(R.string.error_data);
+                    return;
                 }
-
+                if (ext.getTitle() == null)//外部浏览器加载H5
+                    Jump2View.getInstance().goWeb(activity, ext.getUrl());
+                else//内部WebView加载H5
+                    Jump2View.getInstance().goWeb(activity, ext.getUrl(), ext.getTitle());
                 break;
             case 5:
-                if (!TextUtils.isEmpty(item.getObjects())) {
-                    Jump2View.getInstance().goWeb(activity, item.getObjects(), "微信二维码辅助好友注册任务");
+                ext = EntityUtils.getExtInfo(item.getExt());
+                if (ext == null || ext.getUrl() == null) {
+                    G.showToast(R.string.error_data);
+                    return;
                 }
+                Jump2View.getInstance().goWeb(activity, ext.getUrl(), "微信二维码辅助好友注册任务");
 
                 break;
             case 6://连续任务
                 Jump2View.getInstance().goSequentialTaskView(activity);
                 break;
             case 9://打卡赚钱
-                G.showToast("打卡赚钱");
                 Jump2View.getInstance().goSignCardAct(activity, null);
                 break;
             case 7://玩转游戏
@@ -2464,13 +2470,12 @@ public class CommonUtil {
      * @param i -1:不限制 否者限制tag 个数
      */
     public void paintLineaLayout(Context activity, GameEntity gameEntity, LinearLayout ll_game_tag, int i, int color, int drawable) {
-        String game_tag = gameEntity.getApp().getGame_tag();
-        if (!TextUtils.isEmpty(game_tag)) {
+        List<GameListTag> gameListTagList = gameEntity.getApp().getTags();
+        if (!ListUtil.isEmpty(gameListTagList)) {
             ll_game_tag.removeAllViews();
-            ArrayList<String> gameTagList = ListUtil.asList(game_tag.split(","));
-            for (int j = 0; j < gameTagList.size(); j++) {
+            for (int j = 0; j < gameListTagList.size(); j++) {
                 if (i == -1 || i > j) {
-                    String tag = gameTagList.get(j);
+                    String tag = gameListTagList.get(j).getName();
                     switch (tag) {
                         case "礼包":
                             color = R.color.red_FD2D54;

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/util/DataUtil.java

@@ -31,9 +31,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 import static android.app.Activity.RESULT_OK;
 

+ 90 - 0
app/src/main/java/com/sheep/gamegroup/util/DetailImageGetter.java

@@ -0,0 +1,90 @@
+package com.sheep.gamegroup.util;
+
+import android.content.res.Resources;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
+import android.text.Html;
+import android.widget.TextView;
+
+import com.sheep.gamegroup.util.viewHelper.CacheImageUtil;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import java.io.File;
+import java.util.Locale;
+
+import rx.functions.Action1;
+
+/**
+ * Created by realicing on 2018/11/7.
+ * realicing@sina.com
+ * 图片显示类
+ */
+public class DetailImageGetter implements Html.ImageGetter {
+
+    private int textSize;
+    private int maxWidth;
+    private TextView textView;
+    private String content;
+
+    public DetailImageGetter(TextView textView, String content, int maxWidth) {
+        this.textView = textView;
+        this.content = content;
+        this.maxWidth = maxWidth;
+        textSize = G.getRealPix(60);
+    }
+
+    //非表情图片尝试充满TextView显示
+    public static final boolean IMG_FULL = true;
+
+    @Override
+    public Drawable getDrawable(final String source) {
+        Resources resources = SheepApp.getInstance().getResources();
+        if (source.startsWith("http")) {
+            String path = CacheImageUtil.getCacheImg(source);
+            if (path != null) {
+                Drawable drawable = Drawable.createFromPath(path);
+                if (drawable != null) {
+                    int minimumWidth = drawable.getMinimumWidth();
+                    int minimumHeight = drawable.getMinimumHeight();
+                    int imgWidth, imgHeight, imgLeft = 0;
+                    if (IMG_FULL) {
+                        imgWidth = maxWidth;
+                        imgHeight = minimumHeight * maxWidth / minimumWidth;
+                    } else {
+                        imgWidth = G.getRealPix(minimumWidth);
+                        imgHeight = G.getRealPix(minimumHeight);
+                        if (imgWidth > maxWidth && maxWidth > 0) {
+                            imgHeight = (int) (maxWidth * imgHeight * 1.0f / imgWidth);
+                            imgWidth = maxWidth;
+                        } else {
+                            imgLeft = (maxWidth - imgWidth) / 2;
+                            imgWidth += imgLeft;
+                        }
+                    }
+                    drawable.setBounds(imgLeft, 0, imgWidth, imgHeight);
+                    return drawable;
+                }
+            }
+        } else {
+            int id = resources.getIdentifier(source, "mipmap", BuildConfig.APPLICATION_ID);
+            if (id > 0) {
+                Drawable drawable = resources.getDrawable(id);
+                drawable.setBounds(0, 0, textSize, textSize);
+                return drawable;
+            }
+        }
+        Drawable drawable = resources.getDrawable(R.drawable.loading_01);
+        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
+        CacheImageUtil.cacheImg(source, new Action1<File>() {
+            @Override
+            public void call(File file) {
+                if (file != null)
+                    ViewUtil.setH5ImgText(textView, content, maxWidth);
+            }
+        });
+        return drawable;
+    }
+}

+ 65 - 0
app/src/main/java/com/sheep/gamegroup/util/DetailTagHandler.java

@@ -0,0 +1,65 @@
+package com.sheep.gamegroup.util;
+
+import android.support.annotation.NonNull;
+import android.text.Editable;
+import android.text.Html;
+import android.text.Spanned;
+import android.text.style.ClickableSpan;
+import android.text.style.ImageSpan;
+import android.view.View;
+
+import org.xml.sax.XMLReader;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+/**
+ * Created by realicing on 2018/11/20.
+ * realicing@sina.com
+ * 图片处理类
+ */
+public class DetailTagHandler implements Html.TagHandler {
+    private ArrayList<String> strings;
+
+    public DetailTagHandler() {
+        strings = new ArrayList<>();
+    }
+
+    @Override
+    public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
+        // 处理标签<img>
+        if ("img".equals(tag.toLowerCase(Locale.getDefault()))) {
+            // 获取长度
+            int len = output.length();
+            // 获取图片地址
+            ImageSpan[] images = output.getSpans(len - 1, len, ImageSpan.class);
+            String imgURL = images[0].getSource();
+            if(imgURL != null && (imgURL.startsWith("http://") || imgURL.startsWith("https://"))) {
+                // 记录所有图片地址
+                strings.add(imgURL);
+                // 记录是第几张图片
+                int position = strings.size() - 1;
+                // 使图片可点击并监听点击事件
+                output.setSpan(new ClickableImage(position), len - 1, len,
+                        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+            }
+        }
+    }
+
+    public void clear() {
+        strings.clear();
+    }
+
+    private class ClickableImage extends ClickableSpan {
+        private int position;
+
+        private ClickableImage(int position) {
+            this.position = position;
+        }
+
+        @Override
+        public void onClick(@NonNull View widget) {
+            Jump2View.getInstance().showImgList(ActivityManager.getInstance().currentActivity(), position, strings);
+        }
+    }
+}

+ 14 - 17
app/src/main/java/com/sheep/gamegroup/util/DownloadUtil.java

@@ -66,10 +66,7 @@ public class DownloadUtil {
      */
     public static final int STATUS_INSTALLED = 0X6;
 
-    private Context ctx;
-
-    public DownloadUtil(Context context) {
-        this.ctx = context;
+    public DownloadUtil() {
     }
 
     /**
@@ -78,7 +75,7 @@ public class DownloadUtil {
      * @return
      */
     public List<DownLoadInfo> getAllDownloadTasks() {
-        return DDProviderHelper.getInstance().getDownloadList(ctx);
+        return DDProviderHelper.getInstance().getDownloadList();
 
        /* List<DownloadtaskBean> tasks = new ArrayList<>();
         ContentResolver contentResolver = ctx.getContentResolver();
@@ -118,7 +115,7 @@ public class DownloadUtil {
     public int getDownloadingTasksCount() {
         return DDProviderHelper
                 .getInstance()
-                .getDownloadingTask(ctx)
+                .getDownloadingTask()
                 .size();
       /*  ContentResolver contentResolver = ctx.getContentResolver();
         DownloadtaskSelection selection = new DownloadtaskSelection();
@@ -134,7 +131,7 @@ public class DownloadUtil {
     public boolean isDownloadExists(String downloadUrl) {
         DownLoadInfo task = DDProviderHelper
                 .getInstance()
-                .getDownloadTask(ctx, downloadUrl);
+                .getDownloadTask(downloadUrl);
 
        /* ContentResolver contentResolver = ctx.getContentResolver();
         DownloadtaskSelection selection = new DownloadtaskSelection();
@@ -170,7 +167,7 @@ public class DownloadUtil {
     public DownLoadInfo getDownloadTaskByUrl(String downloadUrl) {
         return DDProviderHelper
                 .getInstance()
-                .getDownloadTask(ctx, downloadUrl);
+                .getDownloadTask(downloadUrl);
         /*ContentResolver contentResolver = ctx.getContentResolver();
         DownloadtaskSelection selection = new DownloadtaskSelection();
         selection.downloadUrl(downloadUrl);
@@ -213,7 +210,7 @@ public class DownloadUtil {
             task.setMStatus(0);
         }
         if (!TextUtils.isEmpty(task.getMDownloadUrl())) {
-            return DDProviderHelper.getInstance().addOrUpDataDownloadTask(ctx, task);
+            return DDProviderHelper.getInstance().addOrUpDataDownloadTask(task);
         }
         return false;
 
@@ -253,7 +250,7 @@ public class DownloadUtil {
         where.downloadUrl(downloadUrl);
         ContentResolver contentResolver = ctx.getContentResolver();
         int delete = where.delete(contentResolver);*/
-        return DDProviderHelper.getInstance().deleteDownloadTaskByUrl(ctx, downloadUrl);
+        return DDProviderHelper.getInstance().deleteDownloadTaskByUrl(downloadUrl);
     }
 
     /**
@@ -262,7 +259,7 @@ public class DownloadUtil {
      * @return
      */
     public void deleteAllDownloadTask() {
-        DDProviderHelper.getInstance().deleteAllDownloadTask(ctx);
+        DDProviderHelper.getInstance().deleteAllDownloadTask();
     }
 
     /**
@@ -271,7 +268,7 @@ public class DownloadUtil {
      */
     public DownLoadInfo setDownloadTaskFinish(String downloadUrl, String apkPath) {
         return DDProviderHelper.getInstance()
-                .setDownloadTaskFinish(ctx, downloadUrl, apkPath);
+                .setDownloadTaskFinish(downloadUrl, apkPath);
        /* ContentResolver resolver = ctx.getContentResolver();
         DownloadtaskSelection where = new DownloadtaskSelection();
         where.downloadUrl(downloadUrl);
@@ -290,11 +287,11 @@ public class DownloadUtil {
     }
 
     public DownLoadInfo setDownloadTaskPercent(double downloadedSize, String averageSpeed, int downloadTaskId, String downloadUrl) {
-        return DDProviderHelper.getInstance().updateDownloadPercent(ctx, downloadedSize, averageSpeed, downloadTaskId, downloadUrl, DownloadUtil.STATUS_ING);
+        return DDProviderHelper.getInstance().updateDownloadPercent(downloadedSize, averageSpeed, downloadTaskId, downloadUrl, DownloadUtil.STATUS_ING);
     }
 
     public void setDownloadTaskPercent(int percent, double downloadedSize, double totalSize, int downloadTaskId, String downloadUrl) {
-        DDProviderHelper.getInstance().updateDownloadPercent(ctx, percent, downloadedSize, totalSize, downloadTaskId, downloadUrl, DownloadUtil.STATUS_ING);
+        DDProviderHelper.getInstance().updateDownloadPercent(percent, downloadedSize, totalSize, downloadTaskId, downloadUrl, DownloadUtil.STATUS_ING);
 
 
 
@@ -330,7 +327,7 @@ public class DownloadUtil {
      * @param totalLength
      */
     public DownLoadInfo setDownloadTaskTotal(String downloadUrl, double totalLength) {
-        return DDProviderHelper.getInstance().setDownloadTaskTotal(ctx, downloadUrl, totalLength);
+        return DDProviderHelper.getInstance().setDownloadTaskTotal(downloadUrl, totalLength);
     }
     /**
      * Set the task status
@@ -340,7 +337,7 @@ public class DownloadUtil {
      */
     public DownLoadInfo setDownloadTaskStatus(String downloadUrl, int status) {
 
-        return DDProviderHelper.getInstance().setDownloadTaskStatus(ctx, downloadUrl, status);
+        return DDProviderHelper.getInstance().setDownloadTaskStatus(downloadUrl, status);
         /*ContentResolver resolver = ctx.getContentResolver();
         DownloadtaskSelection where = new DownloadtaskSelection();
         where.downloadUrl(downloadUrl);
@@ -362,7 +359,7 @@ public class DownloadUtil {
 
     public void restoreDownloadTaskStatus() {
 
-        DDProviderHelper.getInstance().restoreDownloadTaskStatus(ctx);
+        DDProviderHelper.getInstance().restoreDownloadTaskStatus();
        /* ContentResolver resolver = ctx.getContentResolver();
         DownloadtaskContentValues taskValues = new DownloadtaskContentValues();
         taskValues.putStatus(STATUS_PAUSE);

+ 3 - 2
app/src/main/java/com/sheep/gamegroup/util/GlideImageLoader.java

@@ -14,6 +14,7 @@ import com.bumptech.glide.request.RequestListener;
 import com.bumptech.glide.request.RequestOptions;
 import com.sheep.gamegroup.util.glide.BlurTransformation;
 import com.sheep.gamegroup.util.glide.GlideCircleTransformWithBorder;
+import com.sheep.gamegroup.util.glide.RoundedCornersTransformation;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
@@ -90,14 +91,14 @@ public class GlideImageLoader {
     public static void roundedCornersImage(ImageView imageView, String url, int radius, int id) {
         Glide.with(SheepApp.getInstance())
                 .load(url)
-                .apply(new RequestOptions().transform(new RoundedCorners(radius)).placeholder(id))
+                .apply(new RequestOptions().transform(new RoundedCornersTransformation(radius, 0)).placeholder(id))
                 .into(imageView);
     }
 
     public static void roundedCornersImage(ImageView imageView, String url, int radius) {
         Glide.with(SheepApp.getInstance())
                 .load(url)
-                .apply(new RequestOptions().transform(new RoundedCorners(radius)).placeholder(R.drawable.loading_01))
+                .apply(new RequestOptions().transform(new RoundedCornersTransformation(radius, 0)).placeholder(R.drawable.loading_01))
                 .into(imageView);
     }
     public static void roundedCornersImage1(ImageView imageView, String url, int radius) {

+ 52 - 22
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -27,6 +27,7 @@ import com.sheep.gamegroup.model.entity.Container;
 import com.sheep.gamegroup.model.entity.CreditCard;
 import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.DialogEntity;
+import com.sheep.gamegroup.model.entity.GameListTag;
 import com.sheep.gamegroup.model.entity.GameListType;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
 import com.sheep.gamegroup.model.entity.LoginEntity;
@@ -41,7 +42,6 @@ import com.sheep.gamegroup.model.entity.VersionInfo;
 import com.sheep.gamegroup.model.entity.WebviewEntity;
 import com.sheep.gamegroup.model.entity.XianWanEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
-import com.sheep.gamegroup.view.activity.ActArticle;
 import com.sheep.gamegroup.view.activity.ActArticleComment;
 import com.sheep.gamegroup.view.activity.ActAudit;
 import com.sheep.gamegroup.view.activity.ActBindMobileRegister;
@@ -50,6 +50,7 @@ import com.sheep.gamegroup.view.activity.ActCreditCardTaskList;
 import com.sheep.gamegroup.view.activity.ActCreditCardWeb;
 import com.sheep.gamegroup.view.activity.ActDownloadWelfareList;
 import com.sheep.gamegroup.view.activity.ActExchangeCMCC;
+import com.sheep.gamegroup.view.activity.ActFootMark;
 import com.sheep.gamegroup.view.activity.ActGameAccount;
 import com.sheep.gamegroup.view.activity.ActGameAgencyRecharge;
 import com.sheep.gamegroup.view.activity.ActGameCenter;
@@ -65,11 +66,13 @@ import com.sheep.gamegroup.view.activity.ActLoadH5;
 import com.sheep.gamegroup.view.activity.ActMain;
 import com.sheep.gamegroup.view.activity.ActMiDong;
 import com.sheep.gamegroup.view.activity.ActModifyThird;
+import com.sheep.gamegroup.view.activity.ActMyFocus;
 import com.sheep.gamegroup.view.activity.ActMyMoney;
 import com.sheep.gamegroup.view.activity.ActMyWelfare;
 import com.sheep.gamegroup.view.activity.ActNewAboutUs;
 import com.sheep.gamegroup.view.activity.ActNewbieTaskList;
 import com.sheep.gamegroup.view.activity.ActNotice;
+import com.sheep.gamegroup.view.activity.ActOverrideJsWeb;
 import com.sheep.gamegroup.view.activity.ActPay;
 import com.sheep.gamegroup.view.activity.ActPlayGameList;
 import com.sheep.gamegroup.view.activity.ActPlayGameRecommendList;
@@ -88,7 +91,7 @@ import com.sheep.gamegroup.view.activity.ActUserAppHome;
 import com.sheep.gamegroup.view.activity.ActUserCommentDetail;
 import com.sheep.gamegroup.view.activity.ActUserLabelList;
 import com.sheep.gamegroup.view.activity.ActUserNoviceGuidance;
-import com.sheep.gamegroup.view.activity.ActWeb;
+import com.sheep.gamegroup.view.activity.ActWebX5;
 import com.sheep.gamegroup.view.activity.ActXianWanWeb;
 import com.sheep.gamegroup.view.activity.ActXiaomiGame;
 import com.sheep.gamegroup.view.activity.AskGetMoneyAct;
@@ -136,7 +139,6 @@ import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.youmi.android.offer.BaseActYmPermissionCheck;
 import com.youmi.android.offer.YmConfig;
-import com.youmi.android.offerdemo.PermissionCheckActivity;
 
 import org.afinal.simplecache.DataKey;
 import org.xutils.ex.DbException;
@@ -146,11 +148,11 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import me.iwf.photopicker.PhotoPicker;
 import me.iwf.photopicker.PhotoPreview;
-import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.ASK_MAKE_MONEY_INVITATION;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_ITEM;
@@ -940,7 +942,7 @@ public class Jump2View {
         if (!url.startsWith("http") && !url.contains("://")) {
             url = "http://" + url;
         }
-        Intent intent = new Intent(context, ActWeb.class);
+        Intent intent = new Intent(context, ActWebX5.class);
         intent.putExtra("url", url);
         intent.putExtra("title", TextUtils.isEmpty(title) ? "加载中..." : title);
         context.startActivity(intent);
@@ -1616,11 +1618,7 @@ public class Jump2View {
      * @param item
      */
     public void goFindInformation(Activity activity, Article item) {
-        Intent intent = new Intent(activity, ActArticle.class);
-        intent.putExtra("id", item.getId());
-        intent.putExtra("title", item.getTitle());
-        activity.startActivity(intent);
-        USER_FIND_APP_ORDER.onEvent();
+        goFindInformation(activity, item.getTitle(), item.getId());
     }
 
     /**
@@ -1631,8 +1629,8 @@ public class Jump2View {
      * @param id
      */
     public void goFindInformation(Activity activity, String title, int id) {
-        Intent intent = new Intent(activity, ActArticle.class);
-        intent.putExtra("id", id);
+        Intent intent = new Intent(activity, ActArticleComment.class);
+        DataUtil.putObject(intent, id);
         intent.putExtra("title", title);
         activity.startActivity(intent);
         USER_FIND_APP_ORDER.onEvent();
@@ -1856,6 +1854,15 @@ public class Jump2View {
         activity.startActivity(intent);
         GAME_EVERY_DAY_MORE.onEvent("title", gameListType.getTitle());
     }
+    /**
+     * 点击游戏标签
+     */
+    public void goActPlayGameList(Activity activity, GameListTag item) {
+        Intent intent = new Intent(activity, ActPlayGameList.class);
+        DataUtil.putObject(intent, item.toGameListType());
+        activity.startActivity(intent);
+        GAME_EVERY_DAY_MORE.onEvent("title", item.getName());
+    }
 
     /**
      * 游戏详情
@@ -2089,15 +2096,6 @@ public class Jump2View {
      *
      * @param activity
      */
-    public void goTestYm(Activity activity) {
-        activity.startActivity(new Intent(activity, PermissionCheckActivity.class));
-    }
-
-    /**
-     * 有米科技
-     *
-     * @param activity
-     */
     public void goYm(final Activity activity) {
         if (activity instanceof BaseActYmPermissionCheck) {
             if (YmConfig.isToastTotalPrice()) {
@@ -2220,4 +2218,36 @@ public class Jump2View {
     public void goActInputAndPickerImg(Activity activity, String label) {
         activity.startActivityForResult(DataUtil.putObject(new Intent(activity, ActInputAndPickerImg.class), label), RequestCodeConstants.REQUEST_CODE_GE_DATA);
     }
+
+    /**
+     * 进入覆盖js的Web界面
+     * @param activity
+     * @param title
+     * @param url
+     * @param jsUrl
+     */
+    public void goActOverrideJsWeb(Activity activity, String title, String url, String jsUrl) {
+        Intent intent = new Intent(activity, ActOverrideJsWeb.class);
+        intent.putExtra("title", title);
+        intent.putExtra("url", url);
+        intent.putExtra("jsUrl", jsUrl);
+        activity.startActivity(intent);
+    }
+
+    /**
+     * 小绵羊3.4.5新增--跳转到我的关注界面
+     */
+    public void goActMyFocus() {
+        Activity activity = ActivityManager.getInstance().currentActivity();
+        Intent intent = new Intent(activity, ActMyFocus.class);
+        activity.startActivity(intent);
+    }
+    /**
+     * 小绵羊3.4.5新增--跳转到足迹界面
+     */
+    public void goActFootMark() {
+        Activity activity = ActivityManager.getInstance().currentActivity();
+        Intent intent = new Intent(activity, ActFootMark.class);
+        activity.startActivity(intent);
+    }
 }

+ 7 - 5
app/src/main/java/com/sheep/gamegroup/util/LogUtil.java

@@ -13,15 +13,17 @@ public class LogUtil {
      */
     private static boolean isDebug = true;
 
-    public static void println(Object... msgs) {
+    public static void println(Object... objects) {
         if (TestUtil.isTest()) {
-            for (int i = 0; i < msgs.length; i++) {
+            StringBuilder stringBuilder = new StringBuilder();
+            for (int i = 0; i < objects.length; i++) {
                 if (i != 0) {
-                    System.out.print(" ");
+                    stringBuilder.append(" ");
                 }
-                System.out.print(msgs[i]);
+                stringBuilder.append(objects[i]);
             }
-            System.out.println();
+            String msg = stringBuilder.toString();
+            Log.i("println", ViewUtil.BLOCK + "\n" + msg);
         }
     }
 

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

@@ -4,7 +4,7 @@ import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameListType;
 
-import rx.Observable;
+import io.reactivex.Observable;
 
 /**
  * Created by realicing on 2018/10/31.

+ 0 - 72
app/src/main/java/com/sheep/gamegroup/util/ResImageGetter.java

@@ -1,72 +0,0 @@
-package com.sheep.gamegroup.util;
-
-import android.content.res.Resources;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.Drawable;
-import android.text.Html;
-import android.widget.TextView;
-
-import com.sheep.gamegroup.util.viewHelper.CacheImageUtil;
-import com.sheep.jiuyan.samllsheep.BuildConfig;
-import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.utils.G;
-
-import java.io.File;
-import java.util.Locale;
-
-import rx.functions.Action1;
-
-/**
- * Created by realicing on 2018/11/7.
- * realicing@sina.com
- */
-public class ResImageGetter implements Html.ImageGetter {
-
-    private int textSize;
-    private int maxWidth;
-    private TextView textView;
-    private String content;
-    public ResImageGetter(TextView textView, String content, int maxWidth) {
-        this.textView = textView;
-        this.content = content;
-        this.maxWidth = maxWidth;
-        textSize = G.getRealPix(60);
-    }
-
-    @Override
-    public Drawable getDrawable(final String source) {
-        Resources resources = SheepApp.getInstance().getResources();
-        int id = resources.getIdentifier(source, "mipmap", BuildConfig.APPLICATION_ID);
-        if(id > 0) {
-            Drawable drawable = resources.getDrawable(id);
-            drawable.setBounds(0, 0, textSize, textSize);
-            return drawable;
-        } else {
-            String path = CacheImageUtil.getCacheImg(source);
-            if(path != null){
-                Drawable drawable = Drawable.createFromPath(path);
-                if(drawable != null){
-                    int imgWidth = G.getRealPix(drawable.getMinimumWidth());
-                    int imgHeight = G.getRealPix(drawable.getMinimumHeight());
-                    if(imgWidth > maxWidth && maxWidth > 0){
-                        imgHeight = (int) (maxWidth * imgHeight * 1.0f / imgWidth);
-                        imgWidth = maxWidth;
-                    }
-                    drawable.setBounds(0, 0, imgWidth, imgHeight);
-                    return drawable;
-                }
-            }
-            Drawable drawable = resources.getDrawable(R.drawable.loading_01);
-            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
-            CacheImageUtil.cacheImg(source, new Action1<File>() {
-                @Override
-                public void call(File file) {
-                    if(file != null)
-                        ViewUtil.setH5ImgText(textView, content, maxWidth);
-                }
-            });
-            return drawable;
-        }
-    }
-}

+ 23 - 0
app/src/main/java/com/sheep/gamegroup/util/ResourceUtils.java

@@ -0,0 +1,23 @@
+package com.sheep.gamegroup.util;
+
+import android.util.TypedValue;
+
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ */
+public class ResourceUtils {
+    private static TypedValue mTmpValue = new TypedValue();
+
+    private ResourceUtils(){}
+
+    public static int getXmlDef(int id){
+        synchronized (mTmpValue) {
+            TypedValue value = mTmpValue;
+            SheepApp.getInstance().getResources().getValue(id, value, true);
+            return (int)TypedValue.complexToFloat(value.data);
+        }
+    }
+}

+ 25 - 0
app/src/main/java/com/sheep/gamegroup/util/StringUtils.java

@@ -14,6 +14,7 @@ import org.json.JSONObject;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 import java.util.Hashtable;
@@ -326,4 +327,28 @@ public class StringUtils {
             return CONTENT_TYPE_FONT;
         }
     }
+
+
+    /**
+     * 获取所有满足正则表达式的字符串
+     * @param str 需要被获取的字符串
+     * @param regex 正则表达式
+     * @return 所有满足正则表达式的字符串
+     */
+    public static ArrayList<String> getAllSatisfyStr(String str, String regex) {
+        if (str == null || str.isEmpty()) {
+            return null;
+        }
+        ArrayList<String> allSatisfyStr = new ArrayList<>();
+        if (regex == null || regex.isEmpty()) {
+            allSatisfyStr.add(str);
+            return allSatisfyStr;
+        }
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(str);
+        while (matcher.find()) {
+            allSatisfyStr.add(matcher.group());
+        }
+        return allSatisfyStr;
+    }
 }

+ 22 - 23
app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java

@@ -21,6 +21,7 @@ import android.widget.TextView;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
 import com.kfzs.duanduan.utils.ApkUtils;
+import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.model.entity.AppInfo;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.DialogConfig;
@@ -50,13 +51,13 @@ import java.util.Calendar;
 import java.util.List;
 import java.util.Locale;
 
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.functions.Function;
+import io.reactivex.schedulers.Schedulers;
 import okhttp3.Call;
 import okhttp3.Response;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.functions.Func1;
-import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.UPGRADE_DIALOG_BT;
 
@@ -115,11 +116,11 @@ public class SysAppUtil {
         return DataUtil.getInstance().isNewSmallSheep();
     }
 
-    public static void clearCache(final Action1<Object> action1) {
+    public static void clearCache(final AbsObserver<Object> action1) {
         Observable.just(1)
-                .map(new Func1<Integer, Integer>() {
+                .map(new Function<Integer, Integer>() {
                     @Override
-                    public Integer call(Integer integer) {
+                    public Integer apply(Integer integer) throws Exception {
                         Glide.get(SheepApp.getInstance()).clearDiskCache();//清理图片
                         ClassFileHelper.getInstance().clearDir();//清理下载文件
                         DataUtil.getInstance().clearScreenShots();//清除所有截图
@@ -128,17 +129,7 @@ public class SysAppUtil {
                 })
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new Action1<Integer>() {
-                    @Override
-                    public void call(Integer integer) {
-                        action1.call(integer);
-                    }
-                }, new Action1<Throwable>() {
-                    @Override
-                    public void call(Throwable throwable) {
-                        action1.call(throwable);
-                    }
-                });
+                .subscribe(action1);
     }
     public static String getAppCacheSize() {
         try {
@@ -270,11 +261,11 @@ public class SysAppUtil {
         return TextUtils.isEmpty(sb) ? "Dalvik/2.1.0 (Linux; U; Android 5.1.1; letv x501 Build/LMY48Z)" : sb.toString();
     }
 
-    public static void checkNet(Action1<Integer> action1) {
+    public static void checkNet(AbsObserver<Integer> action1) {
         Observable.just(1)
-                .map(new Func1<Integer, Integer>() {
+                .map(new Function<Integer, Integer>() {
                     @Override
-                    public Integer call(Integer integer) {
+                    public Integer apply(Integer integer) throws Exception {
                         int result;
                         try {
                             Response response = OkHttpUtils.get().url("http://www.baidu.com").build().execute();
@@ -461,6 +452,14 @@ public class SysAppUtil {
                 e.printStackTrace();
             }
         }
+        if(TestUtil.isSheep()) {
+            checkUpdateNewVersion(activity, ignoreMd5, action1);
+        } else if(!TestUtil.isDev()) {
+            TestUtil.checkUpdateFromJenkins(activity, ignoreMd5, action1);
+        }
+    }
+    //通过接口检查更新
+    public static void checkUpdateNewVersion(final Activity activity, final String ignoreMd5, final Action1<Integer> action1) {
         SheepApp.getInstance().getNetComponent().getApiService().getNewVersion(SheepApp.getInstance().getConnectAddress().getVersionType())
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -474,9 +473,9 @@ public class SysAppUtil {
                     @Override
                     public void onError(BaseMessage baseMessage) {
                         ACache.get(SheepApp.getInstance()).put("version_url", "");
-                        if(ignoreMd5 == null)
+                        if (ignoreMd5 == null)
                             Beta.checkUpgrade();
-                        if(action1 != null)
+                        if (action1 != null)
                             action1.call(0);
                     }
                 });

+ 14 - 4
app/src/main/java/com/sheep/gamegroup/util/TagListUtil.java

@@ -2,10 +2,12 @@ package com.sheep.gamegroup.util;
 
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.view.View;
 import android.widget.TextView;
 
 import com.kfzs.appstore.utils.adapter.recyclerview.RecyclerViewAdapter;
 import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
+import com.sheep.gamegroup.model.entity.GameListTag;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
@@ -18,17 +20,25 @@ import java.util.List;
 public class TagListUtil {
 
     //设置tag标签横向列表
-    public static void setTagList(RecyclerView recyclerView, List<String> tagList) {
+    public static void setTagList(RecyclerView recyclerView, List<GameListTag> tagList) {
         LinearLayoutManager playGameActManager = new LinearLayoutManager(SheepApp.getInstance(), LinearLayoutManager.HORIZONTAL, false);
         recyclerView.setHasFixedSize(true);
         recyclerView.setNestedScrollingEnabled(false);
         recyclerView.setLayoutManager(playGameActManager);
-        recyclerView.setAdapter(new RecyclerViewAdapter<String>(SheepApp.getInstance(), R.layout.item_tag, tagList) {
+        recyclerView.setAdapter(new RecyclerViewAdapter<GameListTag>(SheepApp.getInstance(), R.layout.item_tag, tagList) {
             @Override
-            public void convert(ViewHolder viewHolder, String name, int position) {
+            public void convert(ViewHolder viewHolder, final GameListTag item, int position) {
+                if(item == null)
+                    return;
                 if(viewHolder.itemView instanceof TextView){
-                    ViewUtil.setText((TextView) viewHolder.itemView, name);
+                    ViewUtil.setText((TextView) viewHolder.itemView, item.getName());
                 }
+                viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        Jump2View.getInstance().goActPlayGameList(ActivityManager.getInstance().currentActivity(), item);
+                    }
+                });
             }
         });
 

+ 124 - 9
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -6,6 +6,8 @@ import android.app.NotificationChannel;
 import android.app.NotificationManager;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
 import android.support.v4.app.NotificationCompat;
@@ -45,7 +47,6 @@ import com.sheep.gamegroup.view.dialog.DialogShare;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.DeviceUtils;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
@@ -54,21 +55,27 @@ import com.umeng.socialize.ShareAction;
 import com.umeng.socialize.UMShareListener;
 import com.umeng.socialize.bean.SHARE_MEDIA;
 import com.umeng.socialize.media.UMImage;
+import com.zhy.http.okhttp.OkHttpUtils;
+import com.zhy.http.okhttp.callback.FileCallBack;
+import com.zhy.http.okhttp.callback.StringCallback;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 import cn.jpush.android.api.JPushInterface;
-import rx.android.schedulers.AndroidSchedulers;
+import okhttp3.Call;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 import static android.content.Context.NOTIFICATION_SERVICE;
 import static com.sheep.gamegroup.util.CommonUtil.LONG_MAO_APP_PACKAGE_NAME;
 import static com.sheep.gamegroup.util.CommonUtil.LONG_MAO_APP_URI;
+import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
 
 /**
  * Created by realicing on 2018/5/3.
@@ -225,9 +232,10 @@ public class TestUtil {
      */
     public static void test(final Activity activity) {
         final String[] items = {"复制token","复制打点数据","从jenkins下载小绵羊安装包","测试表情包",
-                "测试签名1","测试签名2","测试孔剑秋faq正式服",
+                "我的关注","足迹",
+                "测试联通卡","测试联通卡2","测试签名1","测试签名2","测试孔剑秋faq正式服",
                 "跳转QQ1","跳转QQ2","跳转QQ3","跳转白白QQ","龙猫竞猜","龙猫竞猜-scheme",
-                "有米科技测试","有米科技","手机型号测试","测试通知栏", "测试自定义通知栏","测试自定义通知栏2",
+                "有米科技","手机型号测试","测试通知栏", "测试自定义通知栏","测试自定义通知栏2",
                 "开启通知栏权限0","开启通知栏权限1","开启通知栏权限2","开启通知栏权限3",
                 "开启通知栏权限","通知栏权限1","通知栏权限2","通知栏权限8.0","测试支付","测试内部h5", "测试外部h5",
                 "会长推广游戏","移动积分兑换","审核中心","检查正版","crc32","loading","progress","查看截图",
@@ -243,6 +251,18 @@ public class TestUtil {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         switch (items[which]) {
+                            case "足迹":
+                                Jump2View.getInstance().goActFootMark();
+                                break;
+                            case "我的关注":
+                                Jump2View.getInstance().goActMyFocus();
+                                break;
+                            case "测试联通卡":
+                                Jump2View.getInstance().goActOverrideJsWeb(activity, items[which], "http://10.8.210.236:5000/#/", "http://10.8.210.236:5000/chart.js");
+                                break;
+                            case "测试联通卡2":
+                                Jump2View.getInstance().goActOverrideJsWeb(activity, items[which], "http://10.8.210.236:5000/#/", "http://10.8.220.248/shared//html/test.js");
+                                break;
                             case "测试孔剑秋faq正式服":
                                 Jump2View.getInstance().goWeb(activity, " http://10.8.210.236:8080/#/faq", items[which]);
                                 break;
@@ -297,9 +317,6 @@ public class TestUtil {
                                 bdIntent2.putExtras(bundle2);
                                 activity.sendBroadcast(bdIntent2);
                                 break;
-                            case "有米科技测试":
-                                Jump2View.getInstance().goTestYm(activity);
-                                break;
                             case "有米科技":
                                 Jump2View.getInstance().goYm(activity);
                                 break;
@@ -558,7 +575,7 @@ public class TestUtil {
     }
 
     private static void testApkSign2() {
-        LogUtil.println("测试签名", ApkUtils.getApkSignMd5StrByPath(new File(ClassFileHelper.DIR, "559E2C4A81182E2674570B4AE3C9C440.apk").getAbsolutePath(), null));
+        LogUtil.println("测试签名", ApkUtils.getApkSignMd5StrByPath(new File(DIR, "559E2C4A81182E2674570B4AE3C9C440.apk").getAbsolutePath(), null));
     }
 
     //测试表情包
@@ -643,6 +660,104 @@ public class TestUtil {
                 })
                 .open();
     }
+
+    private static final String URL_START = "http://10.8.210.20:8080/jenkins/job/android_small_sheep/";
+    //通过jenkins服务器打包结果进行检查更新
+    public static void checkUpdateFromJenkins(final Activity activity, final String ignoreMd5, final Action1<Integer> action1) {
+        //加载jenkins信息来判断是否当前安装的是最新的安装包
+        OkHttpUtils.get().url("http://10.8.210.20:8080/jenkins/job/android_small_sheep").build().execute(new StringCallback() {
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                SysAppUtil.checkUpdateNewVersion(activity, ignoreMd5, action1);
+            }
+
+            @Override
+            public void onResponse(String response, int id) {
+                int start = response.indexOf("最后一次成功的构建结果");
+                int end = response.indexOf("最新修改记录");
+                try {
+                    String result = response.substring(start, end);
+                    ArrayList<String> arrayList = StringUtils.getAllSatisfyStr(result, "<a.+?href=\\\"(.+?)\\\">");
+                    ListUtil.removeItem(arrayList, new ListUtil.CallBack<String, Boolean>() {
+                        @Override
+                        public Boolean call(String msg) {
+                            return !msg.endsWith(".apk\">");
+                        }
+                    });
+                    int index = 0;
+                    switch (BuildConfig.FLAVOR){
+                        case "developSheeptest":
+                            index = BuildConfig.DEBUG ? 0 : 1;
+                            break;
+                        case "sheep":
+                            index = BuildConfig.DEBUG ? 2 : 3;
+                            break;
+                        case "sheeptestjiguang":
+                            index = BuildConfig.DEBUG ? 4 : 5;
+                            break;
+                    }
+                    String url = URL_START + arrayList.get(index).split("\"")[1];
+                    downloadApkAndCheckInstall(url, action1);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    G.showToast(e.getMessage());
+                }
+            }
+        });
+    }
+
+    //下载apk文件后检查是否是最新的
+    private static void downloadApkAndCheckInstall(final String url, final Action1<Integer> action1) {
+        String name = Uri.parse(url).getLastPathSegment();
+        if(name == null){
+            name = url.hashCode() + ".apk";
+        }
+        PackageInfo packageInfo = ApkUtils.getPackageInfo(BuildConfig.APPLICATION_ID);
+        if(packageInfo == null)
+            return;
+        final File myApkFile = new File(packageInfo.applicationInfo.sourceDir);
+        final File file = new File(DIR, name);
+        if (file.exists()) {
+            if (Md5Util.checkMD5(myApkFile, file)) {
+                if(action1 == null)
+                    G.showToast("应用已经是最新版本");
+            } else {
+                if(action1 == null)
+                    G.showToast("文件已经存在,正在安装");
+                ApkUtils.installApk(SheepApp.getInstance(), file.getAbsolutePath());
+            }
+            return;
+        }
+        OkHttpUtils.get().url(url).build().execute(new FileCallBack(DIR, name) {
+            @Override
+            public void inProgress(float progress, long total, int id) {
+                if(action1 == null)
+                    G.showToast(String.format(Locale.CHINA, "%d%%", Math.round(progress * 100)));
+            }
+
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                if(action1 == null)
+                    G.showToast("下载失败");
+            }
+
+            @Override
+            public void onResponse(File response, int id) {
+                if(action1 == null)
+                    G.showToast("下载完成");
+                if (response.exists()) {
+                    if(action1 == null)
+                        G.showToast("文件已经是最新");
+                    if (Md5Util.checkMD5(myApkFile, response)) {
+                        if(action1 == null)
+                            G.showToast("应用已经是最新");
+                    } else {
+                        ApkUtils.installApk(SheepApp.getInstance(), response.getAbsolutePath());
+                    }
+                }
+            }
+        });
+    }
     //开启后可 测试充值与绑定微信和身份信息逻辑 等
     public static boolean isDev() {
         return BuildConfig.DEBUG;

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

@@ -19,8 +19,8 @@ import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 //import com.umeng.analytics.MobclickAgent;
 

+ 111 - 40
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -25,6 +25,7 @@ import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.Html;
 import android.text.TextUtils;
+import android.text.method.LinkMovementMethod;
 import android.text.method.ScrollingMovementMethod;
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
@@ -49,7 +50,6 @@ import android.widget.VideoView;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.RequestBuilder;
 import com.bumptech.glide.request.RequestOptions;
-import com.google.gson.Gson;
 import com.jcodecraeer.xrecyclerview.CustomFooterViewCallBack;
 import com.jcodecraeer.xrecyclerview.XRecyclerView;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
@@ -258,6 +258,12 @@ public class ViewUtil {
         }
     }
 
+    //刷新RecyclerView的adapter
+    public static void notifyDataSetChanged(RecyclerView recyclerView) {
+        if(recyclerView != null && recyclerView.getAdapter() != null)
+            recyclerView.getAdapter().notifyDataSetChanged();
+    }
+
     /**
      * 主页抢任务,更换任务时,获取新的任务
      *
@@ -770,6 +776,11 @@ public class ViewUtil {
         web.setTitle("赚钱就来小绵羊");
         web.setThumb(image);
         web.setDescription("更懂你的赚钱工具,超多福利,超多赏金,拿到你手软!");
+        switch (media){
+            case WEIXIN_CIRCLE:
+                web.setTitle(web.getTitle() + "\n" + web.getDescription());
+                break;
+        }
         ShareAction action = new ShareAction(activity);
         action.setPlatform(media);
         action.withMedia(web);
@@ -959,7 +970,26 @@ public class ViewUtil {
                 textView.setText("");
                 return;
             }
-            textView.setText(Html.fromHtml(content, new ResImageGetter(textView, content, maxWidth), null));
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+                textView.setText(Html.fromHtml(content, Html.FROM_HTML_MODE_LEGACY, new DetailImageGetter(textView, content, maxWidth), new DetailTagHandler()));
+            } else {
+                textView.setText(Html.fromHtml(content, new DetailImageGetter(textView, content, maxWidth), new DetailTagHandler()));
+            }
+            textView.setMovementMethod(LinkMovementMethod.getInstance());
+        }
+    }
+    public static void setH5ImgText(TextView textView, String content, int maxWidth, Html.TagHandler tagHandler) {
+        if (textView != null) {
+            if (TextUtils.isEmpty(content)) {
+                textView.setText("");
+                return;
+            }
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+                textView.setText(Html.fromHtml(content, Html.FROM_HTML_MODE_LEGACY, new DetailImageGetter(textView, content, maxWidth), tagHandler));
+            } else {
+                textView.setText(Html.fromHtml(content, new DetailImageGetter(textView, content, maxWidth), tagHandler));
+            }
+            textView.setMovementMethod(LinkMovementMethod.getInstance());
         }
     }
 
@@ -1055,11 +1085,6 @@ public class ViewUtil {
             }
         }
 
-        final WebView dialog_msg_wv = view.findViewById(R.id.dialog_msg_wv);
-        if (dialog_msg_wv != null) {
-            ViewUtil.loadDataWithBaseURL(dialog_msg_wv, msg);
-        }
-
         TextView dialog_msg_more = view.findViewById(R.id.dialog_msg_more);
         if (dialog_msg_more != null) {
             if (TextUtils.isEmpty(msgMore)) {
@@ -1455,74 +1480,106 @@ public class ViewUtil {
     }
 
     public static void centerImage(ImageView imageView, String pictures) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.centerImage(imageView, pictures);
             }
-            GlideImageLoader.centerImage(imageView, pictures);
         }
     }
 
     public static void setAvatar(ImageView imageView, String pictures) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.setAvatar(imageView, pictures);
             }
-            GlideImageLoader.setAvatar(imageView, pictures);
         }
     }
 
     public static void setBlur(ImageView imageView, String pictures) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.setBlur(imageView, pictures);
             }
-            GlideImageLoader.setBlur(imageView, pictures);
         }
     }
 
     public static void setImage(ImageView imageView, String pictures) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.setImage(imageView, pictures);
             }
-            GlideImageLoader.setImage(imageView, pictures);
         }
     }
 
     public static void setImageLoading(ImageView imageView, String pictures) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.setImage(imageView, pictures, R.drawable.loading_01);
             }
-            GlideImageLoader.setImage(imageView, pictures, R.drawable.loading_01);
         }
     }
 
     public static void setImage(ImageView imageView, String pictures, int radius) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.roundedCornersImage(imageView, pictures, radius);
             }
-            GlideImageLoader.roundedCornersImage(imageView, pictures, radius);
         }
     }
 
     public static void setGameImage(ImageView imageView, String pictures) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.setGameImage(imageView, pictures);
             }
-            GlideImageLoader.setGameImage(imageView, pictures);
         }
     }
 
     public static void setGameImage(ImageView imageView, String pictures, int radius) {
-        if (imageView != null && !TextUtils.isEmpty(pictures)) {
-            if (pictures.contains(";")) {
-                pictures = pictures.split(";")[0];
+        if (imageView != null){
+            if(TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.setGameImage(imageView, pictures, radius);
             }
-            GlideImageLoader.setGameImage(imageView, pictures, radius);
         }
     }
 
@@ -1538,7 +1595,7 @@ public class ViewUtil {
         }
     }
 
-    public static void setText(TextView textView, String msg) {
+    public static void setText(TextView textView, CharSequence msg) {
         if (textView != null) {
             textView.setText(TextUtils.isEmpty(msg) ? "" : msg);
         }
@@ -1558,6 +1615,20 @@ public class ViewUtil {
                 break;
         }
     }
+    public static void setText(TextView textView, IContentTypeContainer<Integer, String> contentTypeContainer, int maxWidth, Html.TagHandler tagHandler) {
+        switch (contentTypeContainer.getContentType()) {
+            case StringUtils.CONTENT_TYPE_FONT:
+                setText(textView, contentTypeContainer.getContentResult());
+                break;
+            case StringUtils.CONTENT_TYPE_H5:
+//                setH5Text(textView, contentTypeContainer.getContentResult());
+                setH5ImgText(textView, contentTypeContainer.getContentResult(), maxWidth, tagHandler);
+                break;
+            case StringUtils.CONTENT_TYPE_EXP:
+                setH5ImgText(textView, contentTypeContainer.getContentResult(), maxWidth, tagHandler);
+                break;
+        }
+    }
 
     public static void setText(TextView textView, int integer) {
         if (textView != null) {

+ 23 - 24
app/src/main/java/com/sheep/gamegroup/util/WebviewJs.java

@@ -1,14 +1,9 @@
 package com.sheep.gamegroup.util;
 
-import android.app.Activity;
-import android.os.Build;
 import android.text.TextUtils;
 import android.webkit.JavascriptInterface;
 
 import com.kfzs.duanduan.utils.ApkUtils;
-import com.sheep.gamegroup.event.BigEvent;
-import com.sheep.gamegroup.event.EventTypes;
-import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
@@ -17,8 +12,6 @@ import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.zhy.http.okhttp.OkHttpUtils;
 import com.zhy.http.okhttp.callback.FileCallBack;
 
-import org.greenrobot.eventbus.EventBus;
-
 import java.io.File;
 import java.util.Locale;
 
@@ -28,16 +21,14 @@ import okhttp3.Call;
  * Created by ljy on 2018/6/25.
  */
 
-public class WebviewJs {
-    private Activity activity;
+public class WebViewJs {
     private int taskId;
 
-    public WebviewJs(Activity activity) {
-        this.activity = activity;
+    public WebViewJs() {
+
     }
 
-    public WebviewJs(Activity activity, int taskId) {
-        this.activity = activity;
+    public WebViewJs(int taskId) {
         this.taskId = taskId;
     }
 
@@ -53,12 +44,12 @@ public class WebviewJs {
     @JavascriptInterface
     public void downloadFile(final String url, final String name) {
         //去下载
-        CommonUtil.getInstance().showDownLoad(activity, url, name);
+        CommonUtil.getInstance().showDownLoad(ActivityManager.getInstance().currentActivity(), url, name);
     }
 
     @JavascriptInterface
     public void startApp(String pkg, String cls) {
-        PackageUtil.startApp(activity, pkg);
+        PackageUtil.startApp(ActivityManager.getInstance().currentActivity(), pkg);
     }
 
     @JavascriptInterface
@@ -69,15 +60,15 @@ public class WebviewJs {
     public void gotoWeb(String url, String title) {
         if(!TextUtils.isEmpty(url)) {
             if (TextUtils.isEmpty(title)) {
-                Jump2View.getInstance().goWeb(activity, url);//启动浏览器h5
+                Jump2View.getInstance().goWeb(ActivityManager.getInstance().currentActivity(), url);//启动浏览器h5
             } else {
-                Jump2View.getInstance().goWeb(activity, url, title);//进入小绵羊h5界面
+                Jump2View.getInstance().goWeb(ActivityManager.getInstance().currentActivity(), url, title);//进入小绵羊h5界面
             }
         }
     }
     @JavascriptInterface
     public void gotoRecharge() {
-        Jump2View.getInstance().goRechargeAct(activity, "内部H5");//进入充值绵羊币界面
+        Jump2View.getInstance().goRechargeAct(ActivityManager.getInstance().currentActivity(), "内部H5");//进入充值绵羊币界面
     }
 
     @JavascriptInterface
@@ -86,21 +77,29 @@ public class WebviewJs {
     }
     @JavascriptInterface
     public String popShare(String url, String type) {
-        CommonUtil.getInstance().popShare(activity, url, type);
+        CommonUtil.getInstance().popShare(ActivityManager.getInstance().currentActivity(), url, type);
         return "";
     }
     @JavascriptInterface
     public String getHeader() {
-        return SpUtils.getToken(activity);
+        return SpUtils.getToken(SheepApp.getInstance());
     }
 
     @JavascriptInterface
     public String getWcUrl(String url) {
         if(!TextUtils.isEmpty(url)){
-            Jump2View.getInstance().goWeb(activity, url);
+            Jump2View.getInstance().goWeb(ActivityManager.getInstance().currentActivity(), url);
         }
         return "";
     }
+    @JavascriptInterface
+    public String getIMEI() {
+        return DeviceUtil.getDeviceId(SheepApp.getInstance());
+    }
+    @JavascriptInterface
+    public String getPhoneModel() {
+        return SysAppUtil.getSystemModel();
+    }
 
     @JavascriptInterface
     public int getTaskId(){
@@ -118,7 +117,7 @@ public class WebviewJs {
             return 0;
         }
 
-        return PackageUtil.isAppInstalled(activity, packName) ? 1 : 0;
+        return PackageUtil.isAppInstalled(ActivityManager.getInstance().currentActivity(), packName) ? 1 : 0;
     }
 
     @JavascriptInterface
@@ -146,7 +145,7 @@ public class WebviewJs {
             G.showToast("连接地址为空");
             return 0;
         }
-        Jump2View.getInstance().goWeb(activity, url);
+        Jump2View.getInstance().goWeb(ActivityManager.getInstance().currentActivity(), url);
         return 0;
     }
 
@@ -163,7 +162,7 @@ public class WebviewJs {
             @Override
             public void onResponse(File response, int id) {
                 if(response.getAbsolutePath().endsWith(".apk")){
-                    ApkUtils.installApk(activity, response.getAbsolutePath());
+                    ApkUtils.installApk(ActivityManager.getInstance().currentActivity(), response.getAbsolutePath());
                 }
             }
         });

+ 21 - 0
app/src/main/java/com/sheep/gamegroup/util/js/BaseActWeb.java

@@ -0,0 +1,21 @@
+package com.sheep.gamegroup.util.js;
+
+import com.sheep.gamegroup.absBase.BaseActivity;
+
+/**
+ * Created by realicing on 2018/11/23.
+ * realicing@sina.com
+ */
+public abstract class BaseActWeb extends BaseActivity {
+    public abstract boolean isResponseBack();
+
+    public abstract void setResponseBack(boolean responseBack);
+
+    public abstract void clearWebView();
+
+    public abstract void showTitleBar(boolean isShow);
+
+    public void superFinish(){
+        super.finish();
+    }
+}

+ 159 - 0
app/src/main/java/com/sheep/gamegroup/util/js/KFZSJs.java

@@ -0,0 +1,159 @@
+package com.sheep.gamegroup.util.js;
+
+import android.app.Activity;
+import android.text.TextUtils;
+import android.view.View;
+import android.webkit.JavascriptInterface;
+
+import com.sheep.gamegroup.util.ApiUtil;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.QQUtil;
+import com.sheep.gamegroup.view.activity.ActWeb;
+import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
+import com.sheep.jiuyan.samllsheep.utils.SpUtils;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+import rx.functions.Action1;
+
+/**
+ * Created by realicing on 2018/11/23.
+ * realicing@sina.com
+ * window.kfzsjs.方法名(参数)
+ */
+public class KFZSJs {
+    private BaseActWeb activity;
+
+    public KFZSJs(BaseActWeb activity) {
+        this.activity = activity;
+    }
+
+    @JavascriptInterface
+    public void setTitle(final String title) {
+        activity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                TitleBarUtils
+                        .getInstance()
+                        .setTitle(activity, title);
+            }
+        });
+    }
+
+    /**
+     * 是否响应返回键
+     */
+    @JavascriptInterface
+    public boolean isResponseBack() {
+        return activity.isResponseBack();
+    }
+
+    /**
+     * 设置是否响应返回键
+     */
+    @JavascriptInterface
+    public void setResponseBack(boolean responseBack) {
+        activity.setResponseBack(responseBack);
+    }
+
+    @JavascriptInterface
+    public void downloadFile(final String url, final String name) {
+        CommonUtil.getInstance().showDownLoad(activity, url, name);
+    }
+
+    @JavascriptInterface
+    public void startApp(String pkg, String cls) {
+        PackageUtil.startApp(activity, pkg);
+    }
+
+    @JavascriptInterface
+    public void gotoLogin() {
+        activity.clearWebView();
+        Jump2View.getInstance().gotoLoginAgain();
+    }
+
+    @JavascriptInterface
+    public void gotoWeb(String url, String title) {
+        if (!TextUtils.isEmpty(url)) {
+            if (TextUtils.isEmpty(title)) {
+                Jump2View.getInstance().goWeb(activity, url);//启动浏览器h5
+            } else {
+                Jump2View.getInstance().goWeb(activity, url, title);//进入小绵羊h5界面
+            }
+        }
+    }
+
+    @JavascriptInterface
+    public void gotoRecharge() {
+        Jump2View.getInstance().goRechargeAct(activity, "内部H5");//进入充值绵羊币界面
+    }
+
+    @JavascriptInterface
+    public String getInvitationCode() {
+        return DataUtil.getInstance().getInvitationCode();
+    }
+
+    @JavascriptInterface
+    public String popShare(String url, String type) {
+        CommonUtil.getInstance().popShare(activity, url, type);
+        return "";
+    }
+//    @JavascriptInterface
+//    public String shareLink(String link, String iconUrl, String title, String des) {
+//        CommonUtil.getInstance().popShare(activity, url, type);
+//        return "";
+//    }
+
+    @JavascriptInterface
+    public String getHeader() {
+        return SpUtils.getToken(activity);
+    }
+
+    @JavascriptInterface
+    public String getWcUrl(String url) {
+        if (!TextUtils.isEmpty(url)) {
+            Jump2View.getInstance().goWeb(activity, url);
+        }
+        return "";
+    }
+
+    @JavascriptInterface
+    public void showTitleBar(final boolean isShow) {
+        activity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                activity.showTitleBar(isShow);
+            }
+        });
+    }
+
+    @JavascriptInterface
+    public void goBack() {
+        activity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                activity.finish();
+            }
+        });
+    }
+
+    @JavascriptInterface
+    public void finishAct() {
+        activity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                activity.superFinish();
+            }
+        });
+    }
+    @JavascriptInterface
+    public void skip2QQ() {
+        ApiUtil.getNewAboutUsComplainQq(new Action1<String>() {
+            @Override
+            public void call(String qq) {
+                QQUtil.skip3(activity, qq);
+            }
+        });
+    }
+}

+ 7 - 7
app/src/main/java/com/sheep/gamegroup/view/activity/ActArticle.java

@@ -18,6 +18,7 @@ import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
+import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
@@ -32,7 +33,6 @@ import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
-import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.ViewHolder;
@@ -55,9 +55,9 @@ import java.util.Locale;
 import java.util.Map;
 
 import butterknife.BindView;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 
 import static android.content.Intent.ACTION_PACKAGE_ADDED;
 import static android.content.Intent.ACTION_PACKAGE_REMOVED;
@@ -91,7 +91,7 @@ public class ActArticle extends BaseActivity implements Action1<Integer> {
     private WebViewVideoHelper webViewVideoHelper = new WebViewVideoHelper();
     @Override
     public void initView() {
-        id = getIntent().getIntExtra("id", 0);
+        id = DataUtil.getObject(getIntent(), Integer.class);
 
         TitleBarUtils.getInstance()
                 .setTitle(this, "详情")
@@ -237,9 +237,9 @@ public class ActArticle extends BaseActivity implements Action1<Integer> {
     @Override
     public void initData() {
         empty_view.setVisibility(View.INVISIBLE);
-        SysAppUtil.checkNet(new Action1<Integer>() {
+        SysAppUtil.checkNet(new AbsObserver<Integer>() {
             @Override
-            public void call(Integer result) {
+            public void onNext(Integer result) {
                 if (result != 0) {//无网络
                     if (check_net_ll != null)
                         check_net_ll.setVisibility(View.VISIBLE);
@@ -334,7 +334,7 @@ public class ActArticle extends BaseActivity implements Action1<Integer> {
         }
         CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         refresh.setRefreshing(false);
-        view_list.getAdapter().notifyDataSetChanged();
+        ViewUtil.notifyDataSetChanged(view_list);
     }
 
 

+ 35 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActArticleComment.java

@@ -1,6 +1,9 @@
 package com.sheep.gamegroup.view.activity;
 
+import android.content.res.Configuration;
 import android.support.v4.app.Fragment;
+import android.view.KeyEvent;
+import android.view.WindowManager;
 
 import com.sheep.gamegroup.absBase.BaseContainerActivity;
 import com.sheep.gamegroup.util.DataUtil;
@@ -19,4 +22,36 @@ public class ActArticleComment extends BaseContainerActivity {
         fragment.setArticle_id(article_id);
         return fragment;
     }
+    @Override
+    public boolean onKeyUp(int keyCode, KeyEvent event) {
+        switch (keyCode) {
+            case KeyEvent.KEYCODE_BACK:
+                if(fragment instanceof FgtArticleComment)
+                    ((FgtArticleComment) fragment).onBackUp();
+                return true;
+            default:
+                return super.onKeyUp(keyCode, event);
+        }
+    }
+    @Override
+    public void onBackPressed() {
+        if(fragment instanceof FgtArticleComment && ((FgtArticleComment) fragment).onBackPressed()){
+            return;
+        }
+        super.onBackPressed();
+    }
+    @Override
+    public void onConfigurationChanged(Configuration config) {
+        super.onConfigurationChanged(config);
+        switch (config.orientation) {
+            case Configuration.ORIENTATION_LANDSCAPE:
+                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+                break;
+            case Configuration.ORIENTATION_PORTRAIT:
+                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+                getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+                break;
+        }
+    }
 }

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

@@ -30,8 +30,8 @@ import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import java.util.Locale;
 
 import butterknife.BindView;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by ljy on 2018/3/27.

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

@@ -21,10 +21,10 @@ import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import java.util.concurrent.TimeUnit;
 
 import butterknife.BindView;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/11/1.

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

@@ -23,8 +23,8 @@ import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 
 import butterknife.BindView;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by realicing on 2018/4/24.

+ 4 - 6
app/src/main/java/com/sheep/gamegroup/view/activity/ActCreditCardWeb.java

@@ -1,13 +1,13 @@
 package com.sheep.gamegroup.view.activity;
 
 import android.os.Build;
-import android.os.Bundle;
 import android.view.View;
 import android.widget.TextView;
 
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.CreditCard;
-import com.sheep.gamegroup.util.WebviewJs;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.util.WebViewJs;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
@@ -21,8 +21,6 @@ import com.zhy.http.okhttp.callback.StringCallback;
 import butterknife.BindView;
 import okhttp3.Call;
 
-import static com.sheep.gamegroup.util.Jump2View.EXTRA_WEBVIEW_NO_TITLE;
-
 
 /**
  * 信用卡申请web
@@ -138,7 +136,7 @@ public class ActCreditCardWeb extends BaseActivity {
         webViewSettings.setDatabasePath(getApplicationContext().getCacheDir().getAbsolutePath());
 
         webViewSettings.setJavaScriptEnabled(true);
-        mWebView.addJavascriptInterface(new WebviewJs(ActCreditCardWeb.this, creditCard.getRelease_id()), "kfzsjs");
+        mWebView.addJavascriptInterface(new WebViewJs(creditCard.getRelease_id()), "kfzsjs");
         mWebView.loadUrl(creditCard.getLoadUrl());
     }
 
@@ -152,7 +150,7 @@ public class ActCreditCardWeb extends BaseActivity {
     }
     // 注入js函数监听
     public void loadJs() {
-        mWebView.loadUrl("javascript:"+getJs());
+        ViewUtil.loadJs(mWebView, getJs());
     }
     private String js;
     private String getJs(){

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/ActDownloadMgr.java

@@ -112,7 +112,7 @@ public class ActDownloadMgr extends BaseActivity {
     @Override
     public void initData() {
         downloadTasks = new ArrayList<>();
-        downloadUtil = new DownloadUtil(this);
+        downloadUtil = new DownloadUtil();
         initControlsEvents();
     }
 

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

@@ -53,9 +53,9 @@
 //import java.util.Map;
 //
 //import butterknife.BindView;
-//import rx.android.schedulers.AndroidSchedulers;
+//import io.reactivex.android.schedulers.AndroidSchedulers;
 //import rx.functions.Action1;
-//import rx.schedulers.Schedulers;
+//import io.reactivex.schedulers.Schedulers;
 //
 //import static android.content.Intent.ACTION_PACKAGE_ADDED;
 //import static android.content.Intent.ACTION_PACKAGE_REMOVED;

+ 20 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActFootMark.java

@@ -0,0 +1,20 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.support.v4.app.Fragment;
+
+import com.sheep.gamegroup.absBase.BaseContainerActivity;
+import com.sheep.gamegroup.view.fragment.FgtFootMark;
+
+/**
+ * Created by realicing on 2018/9/11.
+ * realicing@sina.com
+ * 小绵羊3.4.5新增--足迹
+ */
+public class ActFootMark extends BaseContainerActivity {
+
+    @Override
+    protected Fragment initFragment() {
+        return new FgtFootMark();
+    }
+
+}

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

@@ -29,9 +29,9 @@ import org.greenrobot.eventbus.Subscribe;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import io.reactivex.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.USER_GAME_ACCOUNT_ADD;
 

+ 33 - 8
app/src/main/java/com/sheep/gamegroup/view/activity/ActGcGameAppDetail.java

@@ -25,6 +25,7 @@ import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.helper.DownloadHelper;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameEntity;
+import com.sheep.gamegroup.model.entity.GameListTag;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.ApiUtil;
 import com.sheep.gamegroup.util.CommonUtil;
@@ -51,8 +52,8 @@ import java.util.List;
 import java.util.Locale;
 
 import butterknife.BindView;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_SHARE;
 
@@ -82,6 +83,10 @@ public class ActGcGameAppDetail extends BaseActivity {
     ViewPager viewPager;
     @BindView(R.id.gc_game_app_detail_iv)
     ImageView gc_game_app_detail_iv;
+    @BindView(R.id.gc_game_app_detail_iv2)
+    ImageView gc_game_app_detail_iv2;
+    @BindView(R.id.gc_game_app_detail_play_iv)
+    ImageView gc_game_app_detail_play_iv;
     @BindView(R.id.gc_game_app_detail_icon)
     ImageView gc_game_app_detail_icon;
     @BindView(R.id.gc_game_app_detail_bt1)
@@ -134,7 +139,7 @@ public class ActGcGameAppDetail extends BaseActivity {
         RefreshUtil.newInstance().publicParameterLoadMore(refresh, this);
     }
 
-    private List<String> tagList = ListUtil.emptyList();
+    private List<GameListTag> tagList = ListUtil.emptyList();
 
     //重置view
     private void resetView() {
@@ -158,7 +163,7 @@ public class ActGcGameAppDetail extends BaseActivity {
             gc_game_app_detail_bt1.setText(gameEntity.isIs_focus_game() ? R.string.has_focus : R.string.focus);
     }
     //加载游戏数据
-    private void loadData(GameEntity gameEntity) {
+    private void loadData(final GameEntity gameEntity) {
         this.gameEntity = gameEntity;
         //更新关注状态
         updateFocusTv();
@@ -171,15 +176,35 @@ public class ActGcGameAppDetail extends BaseActivity {
             CommonUtil.getInstance().reflex(tabLayout, this, true);
         }
         //加载游戏背景
-        ViewUtil.setImage(gc_game_app_detail_iv, gameEntity.getApp().getPictures());
+        if(TextUtils.isEmpty(gameEntity.getApp().getMain_publicize())){
+            ViewUtil.setImage(gc_game_app_detail_iv, gameEntity.getApp().getPictures());
+            ViewUtil.setVisibility(gc_game_app_detail_iv, true);
+            ViewUtil.setVisibility(gc_game_app_detail_iv2, false);
+        } else {
+            ViewUtil.setImage(gc_game_app_detail_iv2, gameEntity.getApp().getMain_publicize());
+            ViewUtil.setVisibility(gc_game_app_detail_iv, false);
+            ViewUtil.setVisibility(gc_game_app_detail_iv2, true);
+            if(gameEntity.getApp().getMain_publicize().endsWith(".mp4")) {
+                gc_game_app_detail_play_iv.setVisibility(View.VISIBLE);
+                gc_game_app_detail_play_iv.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        Jump2View.getInstance().goActPlayVideo(gameEntity.getApp().getMain_publicize(), true);
+                    }
+                });
+            }
+        }
         //加载游戏图标
         ViewUtil.setGameImage(gc_game_app_detail_icon, gameEntity.getApp().getIcon());
         //加载游戏名字
         ViewUtil.setText(gc_game_app_detail_name, gameEntity.getApp().getName());
         //加载游戏标签
-        tagList.addAll(gameEntity.getApp().getTagList());
-        ListUtil.removeNull(tagList);
-        recyclerView.getAdapter().notifyDataSetChanged();
+        if(gameEntity.getApp().getTags() != null) {
+            tagList.addAll(gameEntity.getApp().getTags());
+            ListUtil.removeNull(tagList);
+            if(recyclerView.getAdapter() != null)
+                recyclerView.getAdapter().notifyDataSetChanged();
+        }
         //下载按钮
         CommonUtil.getInstance().palyGameDetailBtnValue(this, gameEntity, gc_game_app_detail_bt2, 0);
         fgtGcPlayGameDetail.loadData(gameEntity);

+ 0 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/ActGuideDeblocked.java

@@ -3,7 +3,6 @@ package com.sheep.gamegroup.view.activity;
 import android.view.View;
 import android.widget.TextView;
 
-import com.orhanobut.logger.Logger;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.jiuyan.samllsheep.R;
@@ -75,7 +74,6 @@ public class ActGuideDeblocked extends BaseActivity {
     }
 
     private void loadUrl() {
-        Logger.d("loadUrl: " + extraUrl);
         mWebView.setWebChromeClient(new WebChromeClient());
         mWebView.setWebViewClient(new WebViewClient() {
             @Override

+ 102 - 103
app/src/main/java/com/sheep/gamegroup/view/activity/ActInvitation.java

@@ -66,9 +66,9 @@ import java.util.Locale;
 
 import butterknife.BindView;
 import butterknife.OnClick;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.LINK_SHARE;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.QR_COPY;
@@ -306,59 +306,61 @@ public class ActInvitation extends BaseActivity {
         final ImageView image_bottom = itemView.findViewById(R.id.image_bottom);
         final ImageView image_logo = itemView.findViewById(R.id.image_logo);
         final TextView image_tip = itemView.findViewById(R.id.image_tip);
-        viewPager.postDelayed(new Runnable() {
-            @Override
-            public void run() {
-                if (image_container == null || viewPager == null || image_bottom == null || image_logo == null || image_bottom_top == null || image_tip == null) {
-                    return;
-                }
-                image_container.setVisibility(View.VISIBLE);
-                int vWidth = viewPager.getWidth();
-                int vHeight = viewPager.getHeight();
-                float imgWidth = vWidth;
-                float imgHeight = vHeight;
-                int imgHeightPadding = 0;
-                if (vHeight * 1.0F / vWidth > h * 1.0F / w) {//图片上下有padding
-                    imgHeight = imgWidth * h / w;
-                    imgHeightPadding = (int) ((vHeight - imgHeight) / 2);
-                } else {//图片左右有padding
-                    imgWidth = imgHeight * w / h;
-                }
+        if (viewPager != null) {
+            viewPager.postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    if (image_container == null || viewPager == null || image_bottom == null || image_logo == null || image_bottom_top == null || image_tip == null) {
+                        return;
+                    }
+                    image_container.setVisibility(View.VISIBLE);
+                    int vWidth = viewPager.getWidth();
+                    int vHeight = viewPager.getHeight();
+                    float imgWidth = vWidth;
+                    float imgHeight = vHeight;
+                    int imgHeightPadding = 0;
+                    if (vHeight * 1.0F / vWidth > h * 1.0F / w) {//图片上下有padding
+                        imgHeight = imgWidth * h / w;
+                        imgHeightPadding = (int) ((vHeight - imgHeight) / 2);
+                    } else {//图片左右有padding
+                        imgWidth = imgHeight * w / h;
+                    }
 
-                float containerWidthRadius = 60 / 216F;
-                float containerHeightRadius = 70 / 216F;
-                float rqRadius = 53 / 216F;
-                float tipRadius = 5 / 216F;
-                float radius = 4 / 216F;
-                float topRadius = 2 / 216F;
-                float logoRadius = rqRadius * 16 / 68;
-                GlideImageLoader.saveAndSetRqImageDisHardConfig(image_bottom, item.getLink(), (int) (imgWidth * rqRadius));
-                //重新设置logo的宽高
-                ViewGroup.LayoutParams layoutParams = image_logo.getLayoutParams();
-                layoutParams.width = (int) (imgWidth * logoRadius);
-                layoutParams.height = (int) (imgWidth * logoRadius);
-                image_logo.setLayoutParams(layoutParams);
-                //重新设置二维码上部的距离
-                ViewGroup.LayoutParams layoutParamsTop = image_bottom_top.getLayoutParams();
-                layoutParamsTop.height = (int) (imgWidth * topRadius);
-                image_bottom_top.setLayoutParams(layoutParamsTop);
-                //重新设置《扫我开始赚钱》的高度
-                ViewGroup.LayoutParams layoutParamsTip = image_tip.getLayoutParams();
-                layoutParamsTip.height = (int) (imgWidth * (tipRadius + topRadius * 3 / 2));
-                image_tip.setLayoutParams(layoutParamsTip);
-                image_tip.setTextSize(imgWidth * tipRadius / G.DENSITY);
-                //重新设置整个二维码外容器的高度
-                RelativeLayout.LayoutParams layoutParamsContainer = (RelativeLayout.LayoutParams) image_container.getLayoutParams();
-                layoutParamsContainer.width = (int) (imgWidth * containerWidthRadius);
-                layoutParamsContainer.height = (int) (imgWidth * containerHeightRadius);
-                layoutParamsContainer.bottomMargin = imgHeightPadding;
-                image_container.setLayoutParams(layoutParamsContainer);
-                Drawable bg = image_container.getBackground();
-                if (bg instanceof GradientDrawable) {
-                    ((GradientDrawable) bg).setCornerRadius(imgWidth * radius);
+                    float containerWidthRadius = 60 / 216F;
+                    float containerHeightRadius = 70 / 216F;
+                    float rqRadius = 53 / 216F;
+                    float tipRadius = 5 / 216F;
+                    float radius = 4 / 216F;
+                    float topRadius = 2 / 216F;
+                    float logoRadius = rqRadius * 16 / 68;
+                    GlideImageLoader.saveAndSetRqImageDisHardConfig(image_bottom, item.getLink(), (int) (imgWidth * rqRadius));
+                    //重新设置logo的宽高
+                    ViewGroup.LayoutParams layoutParams = image_logo.getLayoutParams();
+                    layoutParams.width = (int) (imgWidth * logoRadius);
+                    layoutParams.height = (int) (imgWidth * logoRadius);
+                    image_logo.setLayoutParams(layoutParams);
+                    //重新设置二维码上部的距离
+                    ViewGroup.LayoutParams layoutParamsTop = image_bottom_top.getLayoutParams();
+                    layoutParamsTop.height = (int) (imgWidth * topRadius);
+                    image_bottom_top.setLayoutParams(layoutParamsTop);
+                    //重新设置《扫我开始赚钱》的高度
+                    ViewGroup.LayoutParams layoutParamsTip = image_tip.getLayoutParams();
+                    layoutParamsTip.height = (int) (imgWidth * (tipRadius + topRadius * 3 / 2));
+                    image_tip.setLayoutParams(layoutParamsTip);
+                    image_tip.setTextSize(imgWidth * tipRadius / G.DENSITY);
+                    //重新设置整个二维码外容器的高度
+                    RelativeLayout.LayoutParams layoutParamsContainer = (RelativeLayout.LayoutParams) image_container.getLayoutParams();
+                    layoutParamsContainer.width = (int) (imgWidth * containerWidthRadius);
+                    layoutParamsContainer.height = (int) (imgWidth * containerHeightRadius);
+                    layoutParamsContainer.bottomMargin = imgHeightPadding;
+                    image_container.setLayoutParams(layoutParamsContainer);
+                    Drawable bg = image_container.getBackground();
+                    if (bg instanceof GradientDrawable) {
+                        ((GradientDrawable) bg).setCornerRadius(imgWidth * radius);
+                    }
                 }
-            }
-        }, time);
+            }, time);
+        }
     }
 
     private int curPosition = 0;
@@ -405,29 +407,29 @@ public class ActInvitation extends BaseActivity {
                     @Override
                     public void onClick(View view) {
                         File file = null;
-                        switch (position) {
-                            case 2://qq
-                            case 1://wx
-                                PictureInvitationEntity picItem = ListUtil.getItem(mPictureList, curPosition);
-                                if (picItem != null && picItem.isLoaded()) {
-                                    try {
-                                        String fileName = String.format(Locale.CHINA, "share%d%s%d.jpg", curPosition, BuildConfig.FLAVOR, picItem.getPicture().hashCode());
-                                        file = new File(ClassFileHelper.DIR, fileName);
-                                        if (!file.exists()) {
-                                            file = ViewUtil.saveImage(viewList.get(curPosition), ClassFileHelper.DIR, fileName);
-                                        }
-                                    } catch (Exception e) {
-                                        e.printStackTrace();
-                                        G.showToast(e.getMessage());
-                                        return;
-                                    }
-                                } else {
-                                    G.showToast("图片正在加载中,请稍等");
-                                    return;
+//                        switch (position) {
+//                            case 2://qq
+//                            case 1://wx
+                        PictureInvitationEntity picItem = ListUtil.getItem(mPictureList, curPosition);
+                        if (picItem != null && picItem.isLoaded()) {
+                            try {
+                                String fileName = String.format(Locale.CHINA, "share%d%s%d.jpg", curPosition, BuildConfig.FLAVOR, picItem.getPicture().hashCode());
+                                file = new File(ClassFileHelper.DIR, fileName);
+                                if (!file.exists()) {
+                                    file = ViewUtil.saveImage(viewList.get(curPosition), ClassFileHelper.DIR, fileName);
                                 }
-                                break;
-
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                                G.showToast(e.getMessage());
+                                return;
+                            }
+                        } else {
+                            G.showToast("图片正在加载中,请稍等");
+                            return;
                         }
+//                                break;
+//
+//                        }
                         popShare(ActInvitation.this, url, item, description, file);
                     }
                 });
@@ -501,36 +503,33 @@ public class ActInvitation extends BaseActivity {
                 share_media = SHARE_MEDIA.WEIXIN_CIRCLE;
                 break;
         }
+        String title = activity.getResources().getString(R.string.app_name);
         UMImage umImage;
-        switch (type) {
-            case DialogShare.QQ:
-            case DialogShare.WX:
-                umImage = new UMImage(activity, file);
-                break;
-            default:
-                umImage = new UMImage(activity, R.mipmap.icon);
-                break;
-        }
-        UMWeb umWeb = new UMWeb(realUrl);
-        umWeb.setTitle(activity.getResources().getString(R.string.app_name));
-        umWeb.setThumb(umImage);
-        umWeb.setDescription(TextUtils.isEmpty(description) ? activity.getResources().getString(R.string.app_name) : description);
-        switch (type) {
-            case DialogShare.QQ:
-            case DialogShare.WX:
-                new ShareAction(activity)
-                        .setPlatform(share_media)
-                        .withMedia(umImage)
-                        .setCallback(new CommonUtil.CommonUMShareListener())
-                        .share();
-                break;
-            default:
-                new ShareAction(activity)
-                        .setPlatform(share_media)
-                        .withMedia(umWeb)
-                        .setCallback(new CommonUtil.CommonUMShareListener())
-                        .share();
-                break;
+        UMWeb umWeb;
+        if (file == null || !file.exists()) {
+            umImage = new UMImage(SheepApp.getInstance(), R.mipmap.icon);
+            umWeb = new UMWeb(realUrl);
+            umWeb.setTitle(title);
+            umWeb.setThumb(umImage);
+            umWeb.setDescription(TextUtils.isEmpty(description) ? title : description);
+            switch (type) {
+                case DialogShare.WEIXIN_CIRCLE://微信朋友圈分享时只会显示标题,所以这里使用描述
+                    umWeb.setTitle(TextUtils.isEmpty(description) ? title : (title + "\n" + description));
+                default:
+                    new ShareAction(activity)
+                            .setPlatform(share_media)
+                            .withMedia(umWeb)
+                            .setCallback(new CommonUtil.CommonUMShareListener())
+                            .share();
+                    break;
+            }
+        } else {
+            umImage = new UMImage(activity, file);
+            new ShareAction(activity)
+                    .setPlatform(share_media)
+                    .withMedia(umImage)
+                    .setCallback(new CommonUtil.CommonUMShareListener())
+                    .share();
         }
     }
 

+ 6 - 5
app/src/main/java/com/sheep/gamegroup/view/activity/ActMain.java

@@ -17,6 +17,7 @@ import android.widget.TextView;
 
 import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.kfzs.duanduan.view.DialogStorageLow;
+import com.sheep.gamegroup.absBase.AbsObserver;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.helper.DownloadHelper;
@@ -53,10 +54,10 @@ import java.util.Locale;
 import java.util.concurrent.TimeUnit;
 
 import butterknife.BindView;
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import rx.functions.Action1;
-import rx.schedulers.Schedulers;
 
 import static android.content.Intent.ACTION_PACKAGE_ADDED;
 import static android.content.Intent.ACTION_PACKAGE_REMOVED;
@@ -299,9 +300,9 @@ public class ActMain extends BaseActYmPermissionCheck  {
             Observable.just(1).delay(PERIOD * pressCount, TimeUnit.MILLISECONDS)
                     .subscribeOn(Schedulers.io())
                     .observeOn(AndroidSchedulers.mainThread())
-                    .subscribe(new Action1<Integer>() {
+                    .subscribe(new AbsObserver<Integer>() {
                         @Override
-                        public void call(Integer integer) {
+                        public void onNext(Integer integer) {
                             doBackPress();
                         }
                     });

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

@@ -107,7 +107,7 @@ public class ActMiDong extends BaseActivity {
         pager.setCurrentItem(0);
         pager.setOffscreenPageLimit(fgtMiDongList.size());
         CommonUtil.getInstance().reflex(indicator, activity);
-        AdManager.getInstance(activity).setDownloadListener(new AppDownloadListener() {
+        AdManager.getInstance(SheepApp.getInstance()).setDownloadListener(new AppDownloadListener() {
             @Override
             public void onDownloadStart(String id) {
                 LogUtil.println("AdManager", "onDownloadStart", id);
@@ -132,7 +132,7 @@ public class ActMiDong extends BaseActivity {
 
             }
         });
-        AdManager.getInstance(activity).setRewardListener(new RewardListener() {
+        AdManager.getInstance(SheepApp.getInstance()).setRewardListener(new RewardListener() {
             @Override
             public void doTaskSuccess(String s) {
                 LogUtil.println("AdManager","onDownloadFail", s);

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

@@ -33,8 +33,8 @@ import java.util.Map;
 
 import butterknife.BindView;
 import butterknife.OnClick;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.schedulers.Schedulers;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * 验证手机号后绑定第三方账号QQ或者微信

+ 0 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActMyFocus.java


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio