diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 2370474..a71ac4e 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -26,5 +26,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 89abc60..d60b187 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,7 +12,7 @@ android {
minSdkVersion 26
targetSdkVersion 30
versionCode 2
- versionName "2.0"
+ versionName "2.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
@@ -26,13 +26,13 @@ android {
}
buildTypes {
release {
- minifyEnabled true
+ minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
debuggable false
signingConfig signingConfigs.yzx
// 移除无用的resource文件
- shrinkResources true
+ shrinkResources false
}
debug {
@@ -78,5 +78,7 @@ dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
implementation 'com.github.AlexLiuSheng:CheckVersionLib:2.4.1_androidx'
-
+ // 友盟统计SDK
+ implementation 'com.umeng.umsdk:common:9.3.6' // 必选
+ implementation 'com.umeng.umsdk:asms:1.2.1' // 必选
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4b3e631..0421e07 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,7 @@
+
-
+
+
+
diff --git a/app/src/main/java/com/yzx/webebook/App.kt b/app/src/main/java/com/yzx/webebook/App.kt
index 3516052..e561aba 100644
--- a/app/src/main/java/com/yzx/webebook/App.kt
+++ b/app/src/main/java/com/yzx/webebook/App.kt
@@ -3,6 +3,8 @@ package com.yzx.webebook
import android.app.Application
import com.blankj.utilcode.util.Utils
import com.lzy.okgo.OkGo
+import com.umeng.analytics.MobclickAgent
+import com.umeng.commonsdk.UMConfigure
class App: Application() {
@@ -10,5 +12,8 @@ class App: Application() {
super.onCreate()
OkGo.getInstance().init(this)
Utils.init(this)
+
+ UMConfigure.init(this, "60334d01425ec25f10fbd5b4", "ebook", UMConfigure.DEVICE_TYPE_PHONE, "")
+ MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt
index 3f5db7b..a57eafb 100644
--- a/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt
+++ b/app/src/main/java/com/yzx/webebook/activity/WebActivity.kt
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.app.AlertDialog
import android.app.Dialog
+import android.content.Context
import android.content.Intent
import android.net.http.SslError
import android.os.Build
@@ -13,13 +14,25 @@ import android.view.View
import android.view.ViewGroup
import android.webkit.*
import android.widget.LinearLayout
+import android.widget.ProgressBar
import android.widget.TextView
import androidx.annotation.RequiresApi
+import androidx.core.widget.ContentLoadingProgressBar
import com.allenliu.versionchecklib.v2.AllenVersionChecker
import com.allenliu.versionchecklib.v2.builder.UIData
+import com.allenliu.versionchecklib.v2.callback.CustomDownloadingDialogListener
+import com.blankj.utilcode.util.AppUtils
+import com.blankj.utilcode.util.SPUtils
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.lzy.okgo.OkGo
+import com.lzy.okgo.callback.StringCallback
+import com.lzy.okgo.model.Response
import com.yzx.webebook.MainActivity
import com.yzx.webebook.R
import com.yzx.webebook.activity.base.BaseActivity
+import com.yzx.webebook.model.BaseBean
+import com.yzx.webebook.model.Version
import com.yzx.webebook.presenter.base.BasePresenter
import com.yzx.webebook.widget.BaseDialog
import kotlinx.android.synthetic.main.activity_web.*
@@ -28,6 +41,7 @@ import org.jetbrains.anko.find
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.toast
import org.json.JSONObject
+import java.util.*
/**
* 类名:WebActivity
@@ -63,28 +77,90 @@ class WebActivity : BaseActivity>() {
}
private fun checkVersion(): Unit {
- val url =
- "https://filea.oa.qbjjyyun.net/edufile/download?uniqueKey=22de6670beaa78a822ae4a95bdb2c6f5"
+ val test = "192.168.69.112:9009"
+ val online = "https://oa.qbjjyyun.net/api"
+ val BASE_URL = online
+ OkGo.post("$BASE_URL/parent/common/getInkBottleMaxVersion")
+ .tag(this)
+ .execute(object : StringCallback() {
+
+ override fun onSuccess(response: Response) {
+ val json = response.body()
+ Log.d("checkVersion", "onSuccess: ${json}")
+ val resultType = object : TypeToken>() {}.type
+ val gson = Gson()
+ val res = gson.fromJson>(json, resultType)
+ if (res.code == 0) {
+ val appVersion = AppUtils.getAppVersionName()
+ val appVersionCode = AppUtils.getAppVersionCode()
+ val versionCode = res?.data?.version_code ?: 0
+ val curr = Date().time
+ val lastTipTime = SPUtils.getInstance()
+ .getLong("last_tip_time${res.data.version_code}", 0)
+ if (versionCode > appVersionCode) { //有新版本
+ if (res.data.type == 1) { //强制升级
+ updateApp(res.data)
+ } else if (curr - lastTipTime > 24 * 60 * 60 * 1000) { //非强制一天以内提示一次
+ updateApp(res.data)
+ }
+
+ }
+ }
+ }
+
+ })
+
+
+ }
+
+ private fun updateApp(version: Version) {
AllenVersionChecker
.getInstance()
.downloadOnly(
UIData.create()
.setTitle("检测到新版本")
- .setContent("1.优化了笔记的体验\n2.解决了若干已知bug\n")
- .setDownloadUrl(url)
-
+ .setContent(version.explain)
+ .setDownloadUrl(version.app_src)
)
.setCustomVersionDialogListener { context, versionBundle ->
val dialog = BaseDialog(context, R.style.BaseDialog, R.layout.version_dialog)
val title = dialog.find(R.id.tv_title)
title.text = "检测到新版本"
val content = dialog.find(R.id.tv_msg)
- content.text = "1.优化了笔记的体验\n2.解决了若干已知bug\n"
- dialog.window?.setDimAmount(0.1f)
+ content.text = version.explain
+ dialog.window?.setDimAmount(0.5f)
val cancelBtn = dialog.find(R.id.cancel_btn)
- //cancelBtn.visibility = View.GONE
+ if (version.type == 1) {
+ cancelBtn.visibility = View.GONE
+ }
+
return@setCustomVersionDialogListener dialog
}
+ .setOnCancelListener {
+ SPUtils.getInstance().put("last_tip_time${version.version_code}", Date().time)
+ }
+ .setCustomDownloadingDialogListener(object : CustomDownloadingDialogListener {
+ @SuppressLint("SetTextI18n")
+ override fun updateUI(dialog: Dialog?, progress: Int, versionBundle: UIData?) {
+ val tvProgress: TextView = dialog!!.findViewById(R.id.tv_progress)
+ val progressBar: ContentLoadingProgressBar = dialog.findViewById(R.id.pb)
+ progressBar.progress = progress
+ tvProgress.text = "$progress%"
+ }
+
+ override fun getCustomDownloadingDialog(
+ context: Context?,
+ progress: Int,
+ versionBundle: UIData?
+ ): Dialog {
+ return BaseDialog(
+ context!!,
+ R.style.BaseDialog,
+ R.layout.download_dialog
+ )
+ }
+
+ })
.executeMission(this)
}
@@ -101,7 +177,7 @@ class WebActivity : BaseActivity>() {
}
btnBack.setOnClickListener { onBackPressed() }
btnClose.setOnClickListener {
- finish()
+ webView.loadUrl(url)
}
btnRefresh.setOnClickListener {
webView.reload()
@@ -171,9 +247,11 @@ class WebActivity : BaseActivity>() {
if (view.canGoBack()) {
//btnClose.visibility = View.VISIBLE
btnBack.visibility = View.VISIBLE
+ btnClose.visibility = View.VISIBLE
} else {
//btnClose.visibility = View.GONE
btnBack.visibility = View.GONE
+ btnClose.visibility = View.GONE
}
}
} else {
@@ -203,7 +281,6 @@ class WebActivity : BaseActivity>() {
override fun initData() {
webView.loadUrl(url)
-// checkVersion()
}
override fun initPresenter(): BasePresenter<*>? {
@@ -213,6 +290,7 @@ class WebActivity : BaseActivity>() {
override fun onResume() {
super.onResume()
webView.onResume()
+ checkVersion()
}
override fun onPause() {
diff --git a/app/src/main/java/com/yzx/webebook/model/BaseBean.kt b/app/src/main/java/com/yzx/webebook/model/BaseBean.kt
new file mode 100644
index 0000000..9a13abd
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/model/BaseBean.kt
@@ -0,0 +1,8 @@
+package com.yzx.webebook.model
+
+data class BaseBean(
+ var code: Int,
+ var msg: String,
+ val data: T,
+ val list: MutableList
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/yzx/webebook/model/Version.kt b/app/src/main/java/com/yzx/webebook/model/Version.kt
new file mode 100644
index 0000000..83060c4
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/model/Version.kt
@@ -0,0 +1,11 @@
+package com.yzx.webebook.model
+
+class Version {
+ var version: String = ""
+ var version_code: Int = 0
+ var id: Int = 0
+ var type: Int = 0
+ var explain: String = ""
+ var app_src: String = ""
+ var status: Int = 0
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yzx/webebook/presenter/base/JsonCallBack.kt b/app/src/main/java/com/yzx/webebook/presenter/base/JsonCallBack.kt
new file mode 100644
index 0000000..75ec8cf
--- /dev/null
+++ b/app/src/main/java/com/yzx/webebook/presenter/base/JsonCallBack.kt
@@ -0,0 +1,22 @@
+package com.yzx.webebook.presenter.base
+
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.lzy.okgo.callback.AbsCallback
+import com.lzy.okgo.convert.StringConvert
+import com.yzx.webebook.model.BaseBean
+import okhttp3.Response
+
+abstract class JsonCallBack : AbsCallback>() {
+
+ private val convert = StringConvert()
+
+ override fun convertResponse(response: Response?): BaseBean {
+ val json: String = convert.convertResponse(response)
+ val resultType = object : TypeToken>() {}.type
+ val gson = Gson()
+ val fromJson = gson.fromJson>(json, resultType)
+ return fromJson
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yzx/webebook/widget/BaseDialog.kt b/app/src/main/java/com/yzx/webebook/widget/BaseDialog.kt
index 360a40c..dd39a82 100644
--- a/app/src/main/java/com/yzx/webebook/widget/BaseDialog.kt
+++ b/app/src/main/java/com/yzx/webebook/widget/BaseDialog.kt
@@ -11,6 +11,5 @@ class BaseDialog(context: Context, themeResId: Int, res: Int) : Dialog(context,
this.res = res
setCanceledOnTouchOutside(false)
setCancelable(false)
- window?.setDimAmount(0f)
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/dialog_border.xml b/app/src/main/res/drawable/dialog_border.xml
new file mode 100644
index 0000000..70fa21e
--- /dev/null
+++ b/app/src/main/res/drawable/dialog_border.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 17064dd..49f57d0 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -62,7 +62,7 @@
android:layout_marginTop="@dimen/d_20"
android:hint="输入网址"
android:paddingHorizontal="15dp"
- android:text="http://192.168.69.113:8098/"/>
+ android:text="http://192.168.69.112:8098/"/>
+ android:src="@mipmap/ic_home_def"
+ android:visibility="gone" />
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/version_dialog.xml b/app/src/main/res/layout/version_dialog.xml
index 5b87632..157e276 100644
--- a/app/src/main/res/layout/version_dialog.xml
+++ b/app/src/main/res/layout/version_dialog.xml
@@ -31,7 +31,7 @@
android:layout_marginTop="10dp"
android:text="@string/update_title"
android:textColor="@android:color/black"
- android:textSize="13sp" />
+ android:textSize="18sp" />
+ android:textSize="16sp" />
@@ -72,6 +73,7 @@
android:layout_weight="1"
android:background="@drawable/shape_corner"
android:text="立即升级"
+ android:textSize="16sp"
android:textColor="@android:color/white" />
diff --git a/app/src/main/res/mipmap-xhdpi/ic_home_def.png b/app/src/main/res/mipmap-xhdpi/ic_home_def.png
new file mode 100644
index 0000000..0a94622
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_home_def.png differ
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 984821d..59fac2c 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -11,11 +11,8 @@
diff --git a/build.gradle b/build.gradle
index b717e51..40b45e8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,8 @@ buildscript {
repositories {
google()
jcenter()
-
+ maven { url 'https://jitpack.io' }
+ maven { url 'https://dl.bintray.com/umsdk/release' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.3'
@@ -21,6 +22,7 @@ allprojects {
google()
jcenter()
maven { url 'https://jitpack.io' }
+ maven { url 'https://dl.bintray.com/umsdk/release' }
}
}
diff --git a/proguard-rules.pro b/proguard-rules.pro
index 8aa4807..9ac4e12 100644
--- a/proguard-rules.pro
+++ b/proguard-rules.pro
@@ -91,3 +91,13 @@
-dontwarn io.bugtags.**
-dontwarn org.apache.http.**
-dontwarn android.net.http.AndroidHttpClient
+
+-keep class com.umeng.** {*;}
+
+-keepclassmembers class * {
+ public (org.json.JSONObject);
+}
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}