From 55c3fc2eb9344eb3278b2690b32488d8a200adaa Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Fri, 8 Mar 2019 17:46:44 +0800 Subject: [PATCH 001/122] see 03/08 log --- CHANGELOG.md | 1 + config.gradle | 17 ++++++------- gradle.properties | 4 ++- .../com/blankj/launcher/pkg/MainActivity.kt | 2 +- .../pkg/src/main/res/layout/activity_main.xml | 18 ++++++------- lib/base/build.gradle | 6 ++--- .../java/com/blankj/lib/base/BaseActivity.kt | 2 +- .../com/blankj/lib/base/BaseApplication.kt | 2 +- .../com/blankj/lib/base/BaseDrawerActivity.kt | 6 ++--- .../java/com/blankj/lib/base/BaseFragment.kt | 6 ++--- .../blankj/lib/base/rv/BaseViewHolder.java | 4 +-- .../lib/base/rv/RecycleViewDivider.java | 10 ++++---- .../lib/base/rv/adapter/BaseAdapter.java | 6 ++--- .../lib/base/rv/adapter/SingleAdapter.java | 2 +- .../src/main/res/layout/activity_back.xml | 14 +++++------ .../src/main/res/layout/activity_drawer.xml | 6 ++--- subutil/lib/build.gradle | 6 ++--- .../blankj/subutil/util/LocationUtils.java | 2 +- .../com/blankj/subutil/util/PinyinUtils.java | 2 +- .../java/com/blankj/subutil/util/Utils.java | 4 +-- .../blankj/subutil/pkg/helper/DialogHelper.kt | 2 +- utilcode/lib/build.gradle | 8 +++--- utilcode/lib/project.properties | 2 +- .../utilcode/constant/MemoryConstants.java | 2 +- .../constant/PermissionConstants.java | 2 +- .../utilcode/constant/TimeConstants.java | 2 +- .../blankj/utilcode/util/ActivityUtils.java | 9 ++++--- .../blankj/utilcode/util/AntiShakeUtils.java | 5 ++-- .../com/blankj/utilcode/util/AppUtils.java | 5 ++-- .../com/blankj/utilcode/util/BarUtils.java | 11 ++++---- .../blankj/utilcode/util/BrightnessUtils.java | 5 ++-- .../utilcode/util/CacheDiskStaticUtils.java | 3 ++- .../blankj/utilcode/util/CacheDiskUtils.java | 3 ++- .../utilcode/util/CacheDoubleStaticUtils.java | 3 ++- .../utilcode/util/CacheDoubleUtils.java | 2 +- .../utilcode/util/CacheMemoryStaticUtils.java | 2 +- .../utilcode/util/CacheMemoryUtils.java | 4 +-- .../com/blankj/utilcode/util/ColorUtils.java | 12 ++++----- .../com/blankj/utilcode/util/CrashUtils.java | 4 +-- .../com/blankj/utilcode/util/DeviceUtils.java | 4 +-- .../blankj/utilcode/util/FragmentUtils.java | 21 ++++++++-------- .../com/blankj/utilcode/util/ImageUtils.java | 14 +++++------ .../com/blankj/utilcode/util/IntentUtils.java | 4 +-- .../com/blankj/utilcode/util/LogUtils.java | 8 +++--- .../blankj/utilcode/util/MetaDataUtils.java | 2 +- .../blankj/utilcode/util/NetworkUtils.java | 2 +- .../utilcode/util/NotificationUtils.java | 6 ++--- .../com/blankj/utilcode/util/ObjectUtils.java | 6 ++--- .../blankj/utilcode/util/PermissionUtils.java | 8 +++--- .../com/blankj/utilcode/util/PhoneUtils.java | 2 +- .../blankj/utilcode/util/ProcessUtils.java | 4 +-- .../com/blankj/utilcode/util/RegexUtils.java | 2 +- .../blankj/utilcode/util/ResourceUtils.java | 2 +- .../blankj/utilcode/util/SPStaticUtils.java | 2 +- .../com/blankj/utilcode/util/SPUtils.java | 2 +- .../com/blankj/utilcode/util/ScreenUtils.java | 5 ++-- .../blankj/utilcode/util/SnackbarUtils.java | 14 +++++------ .../com/blankj/utilcode/util/SpanUtils.java | 16 ++++++------ .../com/blankj/utilcode/util/StringUtils.java | 4 +-- .../com/blankj/utilcode/util/ThreadUtils.java | 7 +++--- .../com/blankj/utilcode/util/TimeUtils.java | 2 +- .../com/blankj/utilcode/util/ToastUtils.java | 10 ++++---- .../com/blankj/utilcode/util/UriUtils.java | 25 +++++++++++++------ .../java/com/blankj/utilcode/util/Utils.java | 2 +- .../blankj/utilcode/util/VibrateUtils.java | 2 +- .../blankj/utilcode/util/ObjectUtilsTest.java | 5 ++-- .../pkg/feature/activity/ActivityActivity.kt | 2 +- .../feature/activity/SubActivityActivity.kt | 2 +- .../feature/bar/BarStatusFragmentActivity.kt | 16 ++++++------ .../pkg/feature/fragment/ContainerFragment.kt | 6 ++--- .../pkg/feature/fragment/FragmentActivity.kt | 6 ++--- .../pkg/feature/image/ImageActivity.kt | 8 +++--- .../pkg/feature/snackbar/SnackbarActivity.kt | 2 +- .../utilcode/pkg/feature/span/SpanActivity.kt | 2 +- .../utilcode/pkg/feature/toast/CustomToast.kt | 2 +- .../pkg/feature/toast/ToastActivity.kt | 2 +- .../utilcode/pkg/helper/DialogHelper.kt | 2 +- .../main/res/layout/activity_adaptscreen.xml | 4 +-- .../res/layout/activity_adaptscreen_close.xml | 4 +-- .../layout/activity_adaptscreen_height.xml | 4 +-- .../res/layout/activity_adaptscreen_width.xml | 4 +-- .../layout/activity_bar_status_fragment.xml | 4 +-- .../src/main/res/layout/activity_fragment.xml | 2 +- .../src/main/res/layout/activity_image.xml | 2 +- 84 files changed, 241 insertions(+), 220 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8271c33548..a1706be701 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `19/03/09` [fix] UriUtils#uri2File. * `19/03/08` [add] LogUtils support multi process. Publish v1.23.7. * `19/03/02` [fix] LogUtils#file. * `19/02/28` [fix] ImageUtils#calculateInSampleSize. Publish v1.23.6. diff --git a/config.gradle b/config.gradle index 57c3d35e99..106f066059 100644 --- a/config.gradle +++ b/config.gradle @@ -2,7 +2,7 @@ ext { applicationId = 'com.blankj.androidutilcode' appName = 'Util' - compileSdkVersion = 27 + compileSdkVersion = 28 minSdkVersion = 14 targetSdkVersion = 27 versionCode = 1_023_007 @@ -16,8 +16,8 @@ ext { // lib version kotlin_version = '1.3.0' - support_version = '27.1.1' leakcanary_version = '1.6.3' + androidx_version = '1.0.0' dep = [ plugin : [ @@ -30,19 +30,18 @@ ext { ], // lib - support : [ - appcompat_v7: "com.android.support:appcompat-v7:$support_version", - design : "com.android.support:design:$support_version", - multidex : "com.android.support:multidex:1.0.2", - ], - constraint : "com.android.support.constraint:constraint-layout:1.1.3", + appcompat : "androidx.appcompat:appcompat:$androidx_version", + design : "com.google.android.material:material:$androidx_version", + multidex : "androidx.multidex:multidex:2.0.1", + constraint : "androidx.constraintlayout:constraintlayout:1.1.3", + kotlin : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version", leakcanary : [ android : "com.squareup.leakcanary:leakcanary-android:$leakcanary_version", android_no_op : "com.squareup.leakcanary:leakcanary-android-no-op:$leakcanary_version", support_fragment: "com.squareup.leakcanary:leakcanary-support-fragment:$leakcanary_version" ], - free_proguard: "com.blankj:free-proguard:0.0.7", + free_proguard: "com.blankj:free-proguard:0.0.12", adapt_screen : "com.blankj:adapt-screen:0.0.3", gson : "com.google.code.gson:gson:2.8.2", diff --git a/gradle.properties b/gradle.properties index e98b0a89fc..ad5471a961 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,4 +17,6 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -#org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 \ No newline at end of file +#org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 +android.enableJetifier=true +android.useAndroidX=true \ No newline at end of file diff --git a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt index 27d29a032a..e6dc516ed6 100644 --- a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt +++ b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt @@ -2,7 +2,7 @@ package com.blankj.launcher.pkg import android.graphics.Color import android.os.Bundle -import android.support.v7.app.ActionBarDrawerToggle +import androidx.appcompat.app.ActionBarDrawerToggle import android.view.View import android.widget.ImageView import com.blankj.lib.base.BaseDrawerActivity diff --git a/launcher/pkg/src/main/res/layout/activity_main.xml b/launcher/pkg/src/main/res/layout/activity_main.xml index 3b31dafe32..ee8b62a6fa 100644 --- a/launcher/pkg/src/main/res/layout/activity_main.xml +++ b/launcher/pkg/src/main/res/layout/activity_main.xml @@ -1,17 +1,17 @@ - - - - - - + + - @@ -69,5 +69,5 @@ android:text="@string/sub_util" /> - - + + diff --git a/lib/base/build.gradle b/lib/base/build.gradle index bd369d23ee..8c6cb29835 100644 --- a/lib/base/build.gradle +++ b/lib/base/build.gradle @@ -7,9 +7,9 @@ dependencies { api project(':utilcode-lib') api project(':subutil-lib') - api dep.support.appcompat_v7 - api dep.support.design - api dep.support.multidex + api dep.appcompat + api dep.design + api dep.multidex api dep.constraint api dep.kotlin api dep.free_proguard diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.kt b/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.kt index deb05718a9..b1b3086f14 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.kt +++ b/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.kt @@ -2,7 +2,7 @@ package com.blankj.lib.base import android.app.Activity import android.os.Bundle -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity import android.view.LayoutInflater import android.view.View import com.blankj.utilcode.util.AntiShakeUtils diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.kt b/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.kt index f3eb078f79..873c71fa49 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.kt +++ b/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.kt @@ -2,7 +2,7 @@ package com.blankj.lib.base import android.app.Application import android.content.Context -import android.support.multidex.MultiDex +import androidx.multidex.MultiDex import com.blankj.utilcode.util.AppUtils import com.blankj.utilcode.util.CrashUtils import com.blankj.utilcode.util.LogUtils diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.kt b/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.kt index a29cc60cc8..3514d2fdd3 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.kt +++ b/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.kt @@ -2,8 +2,8 @@ package com.blankj.lib.base import android.content.Intent import android.net.Uri -import android.support.annotation.StringRes -import android.support.v4.widget.DrawerLayout +import androidx.annotation.StringRes +import androidx.drawerlayout.widget.DrawerLayout import android.view.LayoutInflater import android.widget.FrameLayout import com.blankj.utilcode.util.ActivityUtils @@ -20,7 +20,7 @@ import kotlinx.android.synthetic.main.activity_drawer.* */ abstract class BaseDrawerActivity : BaseActivity() { - protected lateinit var mBaseDrawerRootLayout: DrawerLayout + protected lateinit var mBaseDrawerRootLayout: androidx.drawerlayout.widget.DrawerLayout protected lateinit var mBaseDrawerContainerView: FrameLayout override fun isSwipeBack(): Boolean { diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.kt b/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.kt index 42e7073529..3db893bea2 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.kt +++ b/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.kt @@ -3,8 +3,8 @@ package com.blankj.lib.base import android.app.Activity import android.content.Context import android.os.Bundle -import android.support.annotation.IdRes -import android.support.v4.app.Fragment +import androidx.annotation.IdRes +import androidx.fragment.app.Fragment import android.util.Log import android.view.LayoutInflater import android.view.View @@ -19,7 +19,7 @@ import com.blankj.utilcode.util.AntiShakeUtils * desc : base about v4-fragment * ``` */ -abstract class BaseFragment : Fragment(), IBaseView { +abstract class BaseFragment : androidx.fragment.app.Fragment(), IBaseView { companion object { private const val TAG = "BaseFragment" diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java index ee47e751f5..6441f8c1fd 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java +++ b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java @@ -1,7 +1,7 @@ package com.blankj.lib.base.rv; -import android.support.annotation.IdRes; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.IdRes; +import androidx.recyclerview.widget.RecyclerView; import android.util.SparseArray; import android.view.View; diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java b/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java index 3d2b90f302..dd20894e10 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java +++ b/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java @@ -5,11 +5,11 @@ import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.LinearLayout; diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/BaseAdapter.java b/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/BaseAdapter.java index f5acee0bb3..b8cf5ae12d 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/BaseAdapter.java +++ b/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/BaseAdapter.java @@ -1,9 +1,9 @@ package com.blankj.lib.base.rv.adapter; import android.content.Context; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/SingleAdapter.java b/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/SingleAdapter.java index 619c8fc688..b7e81b892b 100644 --- a/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/SingleAdapter.java +++ b/lib/base/src/main/java/com/blankj/lib/base/rv/adapter/SingleAdapter.java @@ -1,6 +1,6 @@ package com.blankj.lib.base.rv.adapter; -import android.support.annotation.LayoutRes; +import androidx.annotation.LayoutRes; import java.util.List; diff --git a/lib/base/src/main/res/layout/activity_back.xml b/lib/base/src/main/res/layout/activity_back.xml index 5747922950..848cc885fe 100644 --- a/lib/base/src/main/res/layout/activity_back.xml +++ b/lib/base/src/main/res/layout/activity_back.xml @@ -1,26 +1,26 @@ - - - - + - - - + + diff --git a/lib/base/src/main/res/layout/activity_drawer.xml b/lib/base/src/main/res/layout/activity_drawer.xml index 1fec3fc953..697e83f643 100644 --- a/lib/base/src/main/res/layout/activity_drawer.xml +++ b/lib/base/src/main/res/layout/activity_drawer.xml @@ -1,5 +1,5 @@ - - - + diff --git a/subutil/lib/build.gradle b/subutil/lib/build.gradle index a8b9264e6c..8f8aa8198f 100644 --- a/subutil/lib/build.gradle +++ b/subutil/lib/build.gradle @@ -1,7 +1,7 @@ apply { from "${rootDir.path}/config_lib.gradle" - plugin "tech.harmonysoft.oss.traute" +// plugin "tech.harmonysoft.oss.traute" plugin "com.github.dcendents.android-maven" plugin "com.jfrog.bintray" plugin "readme-sub" @@ -13,8 +13,8 @@ readme { } dependencies { - compileOnly dep.support.appcompat_v7 - compileOnly dep.support.design + compileOnly dep.appcompat + compileOnly dep.design api(dep.glide) { exclude group: "com.android.support" } diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java index 7ee8747902..0c177b534c 100755 --- a/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java +++ b/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java @@ -11,7 +11,7 @@ import android.location.LocationProvider; import android.os.Bundle; import android.provider.Settings; -import android.support.annotation.RequiresPermission; +import androidx.annotation.RequiresPermission; import android.util.Log; import java.io.IOException; diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java index 22486b3a91..934408c65e 100644 --- a/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java +++ b/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java @@ -1,6 +1,6 @@ package com.blankj.subutil.util; -import android.support.v4.util.SimpleArrayMap; +import androidx.collection.SimpleArrayMap; /** *
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
index 9cbf4e06fd..91b336abcf 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
@@ -7,8 +7,8 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 import java.lang.reflect.InvocationTargetException;
 
diff --git a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
index 45e67a4a0d..9eba25c622 100644
--- a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
+++ b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
@@ -1,6 +1,6 @@
 package com.blankj.subutil.pkg.helper
 
-import android.support.v7.app.AlertDialog
+import androidx.appcompat.app.AlertDialog
 import com.blankj.subutil.pkg.R
 import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.PermissionUtils
diff --git a/utilcode/lib/build.gradle b/utilcode/lib/build.gradle
index 3570124816..41b0dacaa4 100644
--- a/utilcode/lib/build.gradle
+++ b/utilcode/lib/build.gradle
@@ -1,7 +1,7 @@
 apply {
     from "${rootDir.path}/config_lib.gradle"
 
-    plugin "tech.harmonysoft.oss.traute"
+//    plugin "tech.harmonysoft.oss.traute"
     plugin "com.github.dcendents.android-maven"
     plugin "com.jfrog.bintray"
     plugin "readme-core"
@@ -17,10 +17,10 @@ apply from: "${rootDir.path}/gradle/bintrayUploadAndroid.gradle"
 dependencies {
     compile dep.gson
 
-    compileOnly dep.support.appcompat_v7
-    compileOnly dep.support.design
+    compileOnly dep.appcompat
+    compileOnly dep.design
 
     testImplementation dep.junit
     testImplementation dep.robolectric
-    testImplementation dep.support.appcompat_v7
+    testImplementation dep.appcompat
 }
\ No newline at end of file
diff --git a/utilcode/lib/project.properties b/utilcode/lib/project.properties
index 22ae3b8603..d0f2a3f7e0 100644
--- a/utilcode/lib/project.properties
+++ b/utilcode/lib/project.properties
@@ -1,7 +1,7 @@
 #project
 project.name=UtilCode
 project.groupId=com.blankj
-project.artifactId=utilcode
+project.artifactId=utilcodex
 project.packaging=aar
 project.siteUrl=https://github.com/Blankj/AndroidUtilCode
 project.gitUrl=https://github.com/Blankj/AndroidUtilCode.git
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
index b68bfcb113..5c05c0163e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.constant;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
index 76f7e9a217..6db826e4ab 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
@@ -4,7 +4,7 @@
 import android.Manifest.permission;
 import android.annotation.SuppressLint;
 import android.os.Build;
-import android.support.annotation.StringDef;
+import androidx.annotation.StringDef;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
index 9932037bf8..45090576e3 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.constant;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
index 4b8a9a07b5..9dd16d6e48 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
@@ -10,15 +10,16 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v4.util.Pair;
 import android.util.Log;
 import android.view.View;
 
 import java.util.List;
 
+import androidx.annotation.AnimRes;
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.util.Pair;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
index 7e87e73474..ca9036225e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
@@ -1,9 +1,10 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
 import android.view.View;
 
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
index 136f27b5ed..357c423fc6 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
@@ -17,8 +17,6 @@
 import android.net.Uri;
 import android.os.Build;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
 import android.util.Log;
 
 import java.io.File;
@@ -27,6 +25,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
index 7b5509b2b5..22178a5c20 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
@@ -8,11 +8,6 @@
 import android.graphics.Color;
 import android.graphics.Point;
 import android.os.Build;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.widget.DrawerLayout;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.Display;
@@ -27,6 +22,12 @@
 
 import java.lang.reflect.Method;
 
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
+import androidx.drawerlayout.widget.DrawerLayout;
+
 import static android.Manifest.permission.EXPAND_STATUS_BAR;
 
 /**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
index f9344b0a59..bacc519540 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
@@ -2,11 +2,12 @@
 
 import android.content.ContentResolver;
 import android.provider.Settings;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
 import android.view.Window;
 import android.view.WindowManager;
 
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
index bb48a4b5cf..c5a9a17a6d 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
@@ -3,13 +3,14 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
 
 import org.json.JSONArray;
 import org.json.JSONObject;
 
 import java.io.Serializable;
 
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
index 99aef6b078..2e6637febf 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
@@ -8,7 +8,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
 import android.util.Log;
 
 import com.blankj.utilcode.constant.CacheConstants;
@@ -37,6 +36,8 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
index 2ef267bd01..6dbb9f7475 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
@@ -3,13 +3,14 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
 
 import org.json.JSONArray;
 import org.json.JSONObject;
 
 import java.io.Serializable;
 
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
index c800423c78..aca1c25837 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
@@ -3,7 +3,7 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import com.blankj.utilcode.constant.CacheConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
index 56abfba117..aedcfa7fc4 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
index d0e06e394d..ddaa2baed9 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
@@ -1,7 +1,7 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.NonNull;
-import android.support.v4.util.LruCache;
+import androidx.annotation.NonNull;
+import androidx.collection.LruCache;
 
 import com.blankj.utilcode.constant.CacheConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
index 4c0c22232b..a6603cfc44 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
@@ -1,12 +1,12 @@
 package com.blankj.utilcode.util;
 
 import android.graphics.Color;
-import android.support.annotation.ColorInt;
-import android.support.annotation.ColorRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.ColorRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
index 9ef930c467..a096321cf4 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
@@ -5,8 +5,8 @@
 import android.content.pm.PackageManager;
 import android.os.Build;
 import android.os.Environment;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
 import android.util.Log;
 
 import java.io.BufferedWriter;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
index c1c2c3c76e..d0c1788a02 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
@@ -8,8 +8,8 @@
 import android.os.Build;
 import android.os.PowerManager;
 import android.provider.Settings;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
 import android.text.TextUtils;
 
 import java.io.File;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
index 43b8537e75..9e8ae14ef1 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
@@ -3,16 +3,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.AnimatorRes;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IdRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
 import android.util.Log;
 import android.view.View;
 
@@ -20,6 +10,17 @@
 import java.util.Collections;
 import java.util.List;
 
+import androidx.annotation.AnimRes;
+import androidx.annotation.AnimatorRes;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IdRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
index 83e01eb1ad..cbee7dd4bd 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
@@ -27,13 +27,13 @@
 import android.renderscript.Element;
 import android.renderscript.RenderScript;
 import android.renderscript.ScriptIntrinsicBlur;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
 import android.view.View;
 
 import java.io.BufferedOutputStream;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
index 6faa37d043..1e26dc8a9a 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
@@ -8,8 +8,8 @@
 import android.os.Bundle;
 import android.provider.MediaStore;
 import android.provider.Settings;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.content.FileProvider;
+import androidx.annotation.RequiresPermission;
+import androidx.core.content.FileProvider;
 
 import java.io.File;
 import java.util.ArrayList;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
index e1e2e78600..f5d814207d 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
@@ -12,10 +12,10 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.RequiresApi;
+import androidx.collection.SimpleArrayMap;
 import android.util.Log;
 
 import com.google.gson.Gson;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
index 6f6cf85b80..bd4b8da935 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
@@ -8,7 +8,7 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ServiceInfo;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
index f281d777c2..3171837f46 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
@@ -7,7 +7,7 @@
 import android.net.NetworkInfo;
 import android.net.wifi.WifiManager;
 import android.os.Build;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
 import android.telephony.TelephonyManager;
 import android.text.format.Formatter;
 import android.util.Log;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
index b8163d2e66..73a900b465 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
@@ -5,9 +5,9 @@
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.Nullable;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
index be5491ece0..3c0c087a39 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
@@ -1,9 +1,9 @@
 package com.blankj.utilcode.util;
 
 import android.os.Build;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.RequiresApi;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
index 235a0f3f94..1cb3df0156 100755
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
@@ -10,10 +10,10 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.WindowManager;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
index 99068781a4..f407f81b5f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
@@ -7,7 +7,7 @@
 import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Build;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
 import android.telephony.SmsManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
index 7db75522d9..00c2bf6f73 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
@@ -10,8 +10,8 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
 import android.util.Log;
 
 import java.io.BufferedReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
index ba57fab956..817a94149f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
 
 import com.blankj.utilcode.constant.RegexConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
index 92424163bb..ee41e95958 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.RawRes;
+import androidx.annotation.RawRes;
 
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
index d3e21fb873..21274c3023 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
@@ -1,7 +1,7 @@
 package com.blankj.utilcode.util;
 
 import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import java.util.Map;
 import java.util.Set;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
index 554a2ed586..a9d18a1a55 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
@@ -3,7 +3,7 @@
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import java.util.Collections;
 import java.util.HashMap;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
index c3e089a90f..f55e4a21db 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
@@ -7,12 +7,11 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
-import android.graphics.Canvas;
 import android.graphics.Point;
 import android.os.Build;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
 import android.util.DisplayMetrics;
 import android.view.Surface;
 import android.view.View;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
index b164e6154e..eab1990d29 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
@@ -1,12 +1,12 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.design.widget.Snackbar;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import com.google.android.material.snackbar.Snackbar;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.style.ForegroundColorSpan;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
index 641204fd63..d79cf9262b 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
@@ -14,14 +14,14 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
 import android.text.Layout;
 import android.text.Layout.Alignment;
 import android.text.SpannableStringBuilder;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
index c3254e3d32..70f0defe50 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
@@ -1,8 +1,8 @@
 package com.blankj.utilcode.util;
 
 import android.content.res.Resources;
-import android.support.annotation.ArrayRes;
-import android.support.annotation.StringRes;
+import androidx.annotation.ArrayRes;
+import androidx.annotation.StringRes;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
index ba7122e366..819af790e8 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
@@ -2,9 +2,6 @@
 
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.util.Log;
 import android.util.SparseArray;
 
@@ -21,6 +18,10 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
index adaa920474..a5286b0fbe 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import com.blankj.utilcode.constant.TimeConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
index b4fe658945..b25360e52c 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
@@ -14,11 +14,11 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.StringRes;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+import androidx.core.app.NotificationManagerCompat;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
index 98f3ef66a8..8e4fd9d09c 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
@@ -8,12 +8,14 @@
 import android.os.Environment;
 import android.provider.DocumentsContract;
 import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
+import android.text.TextUtils;
 import android.util.Log;
 
 import java.io.File;
 
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
 /**
  * 
  *     author: Blankj
@@ -70,12 +72,19 @@ public static File uri2File(@NonNull final Uri uri) {
                 Log.d("UriUtils", uri.toString() + " parse failed. -> 1");
                 return null;
             } else if ("com.android.providers.downloads.documents".equals(authority)) {
-                final String id = DocumentsContract.getDocumentId(uri);
-                final Uri contentUri = ContentUris.withAppendedId(
-                        Uri.parse("content://downloads/public_downloads"),
-                        Long.valueOf(id)
-                );
-                return getFileFromUri(contentUri, 2);
+                String id = DocumentsContract.getDocumentId(uri);
+                if (!TextUtils.isEmpty(id)) {
+                    if (id.startsWith("raw:")) {
+                        return new File(id.substring(4));
+                    }
+                    final Uri contentUri = ContentUris.withAppendedId(
+                            Uri.parse(Environment.DIRECTORY_DOWNLOADS),
+                            Long.valueOf(id)
+                    );
+                    return getFileFromUri(contentUri, 2);
+                }
+                Log.d("UriUtils", uri.toString() + " parse failed. -> 3");
+                return null;
             } else if ("com.android.providers.media.documents".equals(authority)) {
                 final String docId = DocumentsContract.getDocumentId(uri);
                 final String[] split = docId.split(":");
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
index 52b82376e1..d858e4ad22 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
@@ -7,7 +7,7 @@
 import android.app.Application.ActivityLifecycleCallbacks;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.v4.content.FileProvider;
+import androidx.core.content.FileProvider;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
index a57bbb8241..622d657817 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
@@ -2,7 +2,7 @@
 
 import android.content.Context;
 import android.os.Vibrator;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
 
 import static android.Manifest.permission.VIBRATE;
 
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
index a0203f78fc..ed12c24d8d 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
@@ -1,7 +1,5 @@
 package com.blankj.utilcode.util;
 
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
@@ -12,6 +10,9 @@
 import java.util.HashMap;
 import java.util.LinkedList;
 
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
+
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
index 5ace21f5b1..f3d3600a27 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
@@ -6,7 +6,7 @@ import android.graphics.Bitmap
 import android.graphics.drawable.BitmapDrawable
 import android.os.Build
 import android.os.Bundle
-import android.support.v4.app.ActivityOptionsCompat
+import androidx.core.app.ActivityOptionsCompat
 import android.view.View
 import android.view.Window
 import com.blankj.lib.base.BaseTitleBarActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
index 4815032936..864f1c12b4 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.activity
 
 import android.os.Build
 import android.os.Bundle
-import android.support.v4.app.ActivityCompat
+import androidx.core.app.ActivityCompat
 import android.view.View
 import android.view.Window
 import com.blankj.lib.base.BaseTitleBarActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
index b2633ddf5c..0dac18c72c 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
@@ -3,10 +3,10 @@ package com.blankj.utilcode.pkg.feature.bar
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentPagerAdapter
-import android.support.v4.view.ViewPager
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentPagerAdapter
+import androidx.viewpager.widget.ViewPager
 import android.view.View
 import com.blankj.lib.base.BaseActivity
 import com.blankj.utilcode.pkg.R
@@ -37,7 +37,7 @@ class BarStatusFragmentActivity : BaseActivity() {
             R.id.barStatusFragmentNavigationCustom
     )
 
-    private val mFragmentList = ArrayList()
+    private val mFragmentList = ArrayList()
 
     private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener l@{ item ->
         when (item.itemId) {
@@ -78,8 +78,8 @@ class BarStatusFragmentActivity : BaseActivity() {
         mFragmentList.add(BarStatusCustomFragment.newInstance())
 
         barStatusFragmentVp.offscreenPageLimit = 3
-        barStatusFragmentVp.adapter = object : FragmentPagerAdapter(supportFragmentManager) {
-            override fun getItem(position: Int): Fragment {
+        barStatusFragmentVp.adapter = object : androidx.fragment.app.FragmentPagerAdapter(supportFragmentManager) {
+            override fun getItem(position: Int): androidx.fragment.app.Fragment {
                 return mFragmentList[position]
             }
 
@@ -88,7 +88,7 @@ class BarStatusFragmentActivity : BaseActivity() {
             }
         }
 
-        barStatusFragmentVp.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+        barStatusFragmentVp.addOnPageChangeListener(object : androidx.viewpager.widget.ViewPager.OnPageChangeListener {
             override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
 
             override fun onPageSelected(position: Int) {
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
index ca0289a158..117c7d121e 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
@@ -2,8 +2,8 @@ package com.blankj.utilcode.pkg.feature.fragment
 
 import android.os.Build
 import android.os.Bundle
-import android.support.annotation.RequiresApi
-import android.support.v4.app.Fragment
+import androidx.annotation.RequiresApi
+import androidx.fragment.app.Fragment
 import android.transition.*
 import android.view.View
 import com.blankj.lib.base.BaseLazyFragment
@@ -129,7 +129,7 @@ class ContainerFragment : BaseLazyFragment(), FragmentUtils.OnBackClickListener
         }
     }
 
-    private fun addSharedElement(fragment: Fragment): Fragment {
+    private fun addSharedElement(fragment: androidx.fragment.app.Fragment): androidx.fragment.app.Fragment {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             fragment.sharedElementEnterTransition = DetailTransition()
             fragment.enterTransition = Fade()
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
index b768f563e5..6e3137b9c6 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
@@ -4,8 +4,8 @@ import android.content.Context
 import android.content.Intent
 import android.os.Bundle
 import android.os.PersistableBundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
 import android.view.View
 import com.blankj.lib.base.BaseActivity
 import com.blankj.utilcode.pkg.R
@@ -30,7 +30,7 @@ class FragmentActivity : BaseActivity() {
         }
     }
 
-    private val mFragments = arrayListOf()
+    private val mFragments = arrayListOf()
     private var curIndex: Int = 0
 
     private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
index 496c5a4032..636d92c030 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
@@ -6,9 +6,9 @@ import android.graphics.Bitmap
 import android.graphics.Color
 import android.os.Build
 import android.os.Bundle
-import android.support.annotation.LayoutRes
-import android.support.annotation.StringRes
-import android.support.v7.widget.LinearLayoutManager
+import androidx.annotation.LayoutRes
+import androidx.annotation.StringRes
+import androidx.recyclerview.widget.LinearLayoutManager
 import android.view.View
 import android.widget.ImageView
 import android.widget.TextView
@@ -92,7 +92,7 @@ class ImageActivity : BaseActivity() {
         }
 
         imageRv.adapter = ImageAdapter(mList, R.layout.item_image)
-        imageRv.layoutManager = LinearLayoutManager(this)
+        imageRv.layoutManager = androidx.recyclerview.widget.LinearLayoutManager(this)
     }
 
     override fun doBusiness() {}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
index 4bd07d274e..34d3914fe1 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
 import android.content.Intent
 import android.graphics.Color
 import android.os.Bundle
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import android.text.SpannableStringBuilder
 import android.view.View
 import android.view.ViewGroup
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
index f3a1a3ee02..7c5fd45308 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
@@ -5,7 +5,7 @@ import android.content.Context
 import android.content.Intent
 import android.graphics.*
 import android.os.Bundle
-import android.support.annotation.ColorInt
+import androidx.annotation.ColorInt
 import android.text.Layout
 import android.text.SpannableStringBuilder
 import android.text.TextPaint
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
index 314ba33d59..458ecbb3fb 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.toast
 
 import android.os.Handler
 import android.os.Looper
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import android.widget.TextView
 import android.widget.Toast
 
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
index ea6c10c24d..40055d14b9 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
 import android.content.Intent
 import android.graphics.Color
 import android.os.Bundle
-import android.support.v4.content.ContextCompat
+import androidx.core.content.ContextCompat
 import android.view.Gravity
 import android.view.View
 import com.blankj.lib.base.BaseTitleBarActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
index 7e6094414a..c3247b1312 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.pkg.helper
 
-import android.support.v7.app.AlertDialog
+import androidx.appcompat.app.AlertDialog
 import android.text.method.ScrollingMovementMethod
 import android.view.LayoutInflater
 import android.view.View
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
index 003c6f5840..e33848b84d 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
@@ -1,5 +1,5 @@
 
-
 
-
+
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
index c3f88ecba3..e43cbb2bb5 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
@@ -8,7 +8,7 @@
     android:background="@color/white"
     tools:context=".feature.adaptScreen.CloseAdaptActivity">
 
-    
 
@@ -42,6 +42,6 @@
             android:textSize="30pt"
             app:layout_constraintTop_toBottomOf="@id/adaptScreenCloseAdaptDpTv" />
 
-    
+    
 
 
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
index 0b207d97f5..07c76be55b 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
@@ -8,7 +8,7 @@
     android:background="@color/white"
     tools:context=".feature.adaptScreen.HeightActivity">
 
-    
 
@@ -94,6 +94,6 @@
         
 
 
-    
+    
 
 
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
index 46e0f2f1a2..5a791d924f 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
@@ -8,7 +8,7 @@
     android:background="@color/white"
     tools:context=".feature.adaptScreen.WidthActivity">
 
-    
 
@@ -147,6 +147,6 @@
 
         
 
-    
+    
 
 
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
index c5f975b58f..1a36770b58 100644
--- a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
@@ -7,7 +7,7 @@
     android:background="@color/white"
     android:orientation="vertical">
 
-    
 
-    
 
-    
 
-    

From 70b6089109b6e58734d0a500820f54cb41858eba Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Fri, 8 Mar 2019 18:07:14 +0800
Subject: [PATCH 002/122] see 03/08 log

---
 utilcode/README-CN.md | 3 +++
 utilcode/README.md    | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/utilcode/README-CN.md b/utilcode/README-CN.md
index f3756be966..7fc06ebf99 100644
--- a/utilcode/README-CN.md
+++ b/utilcode/README-CN.md
@@ -3,6 +3,9 @@
 Gradle:
 ```groovy
 implementation 'com.blankj:utilcode:1.23.7'
+
+// if u use AndroidX, use the following
+implementation 'com.blankj:utilcodex:1.23.7'
 ```
 
 
diff --git a/utilcode/README.md b/utilcode/README.md
index 75d8757892..094cc44c08 100644
--- a/utilcode/README.md
+++ b/utilcode/README.md
@@ -3,6 +3,9 @@
 Gradle:
 ```groovy
 implementation 'com.blankj:utilcode:1.23.7'
+
+// if u use AndroidX, use the following
+implementation 'com.blankj:utilcodex:1.23.7'
 ```
 
 

From 2fa66306221456a5be12d9d201c7495958596fb4 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Mon, 11 Mar 2019 20:45:31 +0800
Subject: [PATCH 003/122] see 03/11 log

---
 utilcode/lib/project.properties | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/utilcode/lib/project.properties b/utilcode/lib/project.properties
index d0f2a3f7e0..d238eda740 100644
--- a/utilcode/lib/project.properties
+++ b/utilcode/lib/project.properties
@@ -1,9 +1,9 @@
 #project
-project.name=UtilCode
+project.name=UtilCodeX
 project.groupId=com.blankj
 project.artifactId=utilcodex
 project.packaging=aar
 project.siteUrl=https://github.com/Blankj/AndroidUtilCode
 project.gitUrl=https://github.com/Blankj/AndroidUtilCode.git
 #javadoc
-javadoc.name=UtilCode
\ No newline at end of file
+javadoc.name=UtilCodeX
\ No newline at end of file

From 6b0ff9575675cf0ae15c9c9a85eb249b5591c3a8 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Mon, 3 Jun 2019 20:49:21 +0800
Subject: [PATCH 004/122] see 06/03 log

---
 .gitignore                                    |  2 +-
 CHANGELOG.md                                  |  1 +
 gradle.properties                             |  8 +++++-
 gradle/config/config.gradle                   | 10 ++++----
 gradle/config/configApp.gradle                |  5 +++-
 launcher/app/build.gradle                     |  6 ++---
 launcher/pkg/build.gradle                     |  2 +-
 .../com/blankj/launcher/pkg/MainActivity.kt   |  2 +-
 .../pkg/src/main/res/layout/activity_main.xml | 18 ++++++-------
 lib/base/build.gradle                         |  2 +-
 .../com/blankj/lib/base/BaseActivity.java     |  5 ++--
 .../com/blankj/lib/base/BaseApplication.java  |  3 ++-
 .../blankj/lib/base/BaseDrawerActivity.java   | 11 ++++----
 .../com/blankj/lib/base/BaseFragment.java     | 13 +++++-----
 .../blankj/lib/base/BaseTitleActivity.java    |  9 ++++---
 .../java/com/blankj/lib/base/IBaseView.java   |  5 ++--
 .../com/blankj/lib/base/rv/BaseAdapter.java   |  5 ++--
 .../java/com/blankj/lib/base/rv/BaseCell.java |  3 ++-
 .../blankj/lib/base/rv/BaseViewHolder.java    |  4 +--
 .../lib/base/rv/RecycleViewDivider.java       | 10 ++++----
 .../main/res/layout/activity_base_title.xml   | 11 ++++----
 .../activity_base_title_stub_scroll.xml       |  4 +--
 .../src/main/res/layout/activity_drawer.xml   |  6 ++---
 subutil/app/build.gradle                      |  2 +-
 subutil/lib/build.gradle                      |  2 +-
 .../blankj/subutil/util/LocationUtils.java    |  2 +-
 .../com/blankj/subutil/util/PinyinUtils.java  |  2 +-
 .../java/com/blankj/subutil/util/Utils.java   |  4 +--
 .../subutil/util/http/ExecutorFactory.java    |  3 ++-
 .../blankj/subutil/util/http/HttpUtils.java   |  3 ++-
 .../com/blankj/subutil/util/http/Request.java |  3 ++-
 .../blankj/subutil/util/http/SSLConfig.java   |  3 ++-
 subutil/pkg/build.gradle                      |  2 +-
 .../blankj/subutil/pkg/helper/DialogHelper.kt |  2 +-
 utilcode/README-CN.md                         |  2 +-
 utilcode/README.md                            |  2 +-
 utilcode/app/build.gradle                     |  2 +-
 utilcode/lib/build.gradle                     |  2 +-
 utilcode/lib/project.properties               |  6 ++---
 .../utilcode/constant/MemoryConstants.java    |  2 +-
 .../constant/PermissionConstants.java         |  2 +-
 .../utilcode/constant/TimeConstants.java      |  2 +-
 .../blankj/utilcode/util/ActivityUtils.java   | 11 ++++----
 .../blankj/utilcode/util/AntiShakeUtils.java  |  5 ++--
 .../com/blankj/utilcode/util/AppUtils.java    |  5 ++--
 .../com/blankj/utilcode/util/BarUtils.java    | 11 ++++----
 .../blankj/utilcode/util/BrightnessUtils.java |  5 ++--
 .../com/blankj/utilcode/util/BusUtils.java    |  5 ++--
 .../utilcode/util/CacheDiskStaticUtils.java   |  3 ++-
 .../blankj/utilcode/util/CacheDiskUtils.java  |  3 ++-
 .../utilcode/util/CacheDoubleStaticUtils.java |  3 ++-
 .../utilcode/util/CacheDoubleUtils.java       |  2 +-
 .../utilcode/util/CacheMemoryStaticUtils.java |  2 +-
 .../utilcode/util/CacheMemoryUtils.java       |  4 +--
 .../com/blankj/utilcode/util/ColorUtils.java  | 12 ++++-----
 .../com/blankj/utilcode/util/CrashUtils.java  |  4 +--
 .../com/blankj/utilcode/util/DeviceUtils.java |  5 ++--
 .../blankj/utilcode/util/FragmentUtils.java   | 21 ++++++++--------
 .../com/blankj/utilcode/util/ImageUtils.java  | 14 +++++------
 .../com/blankj/utilcode/util/IntentUtils.java |  4 +--
 .../blankj/utilcode/util/KeyboardUtils.java   |  3 ++-
 .../com/blankj/utilcode/util/LogUtils.java    |  8 +++---
 .../blankj/utilcode/util/MetaDataUtils.java   |  2 +-
 .../blankj/utilcode/util/NetworkUtils.java    |  5 ++--
 .../utilcode/util/NotificationUtils.java      |  6 ++---
 .../com/blankj/utilcode/util/ObjectUtils.java |  6 ++---
 .../blankj/utilcode/util/PermissionUtils.java |  8 +++---
 .../com/blankj/utilcode/util/PhoneUtils.java  |  2 +-
 .../blankj/utilcode/util/ProcessUtils.java    |  4 +--
 .../com/blankj/utilcode/util/RegexUtils.java  |  2 +-
 .../blankj/utilcode/util/ResourceUtils.java   |  2 +-
 .../blankj/utilcode/util/SPStaticUtils.java   |  2 +-
 .../com/blankj/utilcode/util/SPUtils.java     |  2 +-
 .../com/blankj/utilcode/util/ScreenUtils.java |  4 +--
 .../com/blankj/utilcode/util/ShellUtils.java  |  2 +-
 .../blankj/utilcode/util/SnackbarUtils.java   | 14 +++++------
 .../com/blankj/utilcode/util/SpanUtils.java   | 16 ++++++------
 .../com/blankj/utilcode/util/StringUtils.java |  4 +--
 .../com/blankj/utilcode/util/ThreadUtils.java |  5 ++--
 .../com/blankj/utilcode/util/TimeUtils.java   |  2 +-
 .../com/blankj/utilcode/util/ToastUtils.java  | 10 ++++----
 .../com/blankj/utilcode/util/UriUtils.java    | 25 +++++++++++++------
 .../java/com/blankj/utilcode/util/Utils.java  |  3 ++-
 .../blankj/utilcode/util/VibrateUtils.java    |  2 +-
 .../com/blankj/utilcode/util/BaseTest.java    | 11 +++-----
 .../blankj/utilcode/util/ObjectUtilsTest.java |  5 ++--
 utilcode/pkg/build.gradle                     |  2 +-
 .../pkg/feature/activity/ActivityActivity.kt  |  2 +-
 .../feature/activity/SubActivityActivity.kt   |  2 +-
 .../feature/bar/BarStatusFragmentActivity.kt  | 16 ++++++------
 .../pkg/feature/fragment/ContainerFragment.kt |  6 ++---
 .../pkg/feature/fragment/FragmentActivity.kt  |  6 ++---
 .../pkg/feature/image/ImageActivity.kt        |  4 +--
 .../pkg/feature/snackbar/SnackbarActivity.kt  |  2 +-
 .../utilcode/pkg/feature/span/SpanActivity.kt |  2 +-
 .../utilcode/pkg/feature/toast/CustomToast.kt |  2 +-
 .../pkg/feature/toast/ToastActivity.kt        |  2 +-
 .../utilcode/pkg/helper/DialogHelper.kt       |  5 ++--
 .../main/res/layout/activity_adaptscreen.xml  |  4 +--
 .../res/layout/activity_adaptscreen_close.xml |  4 +--
 .../layout/activity_adaptscreen_height.xml    |  7 +++---
 .../res/layout/activity_adaptscreen_width.xml |  4 +--
 .../layout/activity_bar_status_fragment.xml   |  4 +--
 .../src/main/res/layout/activity_fragment.xml |  2 +-
 .../src/main/res/layout/activity_image.xml    |  3 +--
 105 files changed, 293 insertions(+), 253 deletions(-)

diff --git a/.gitignore b/.gitignore
index 201b88771a..193619553c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,4 @@
 .externalNativeBuild
 /apk
 *.phrof
-/maven
+/busMaven
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95dfb60cc3..9c48786e89 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
 * `19/04/24` [upd] The swipe panel.
 * `19/03/17` [fix] The ugly UI.
 * `19/03/14` [fix] AdaptScreenUtils didn't work on some HaWei tablet.
+* `19/03/09` [fix] UriUtils#uri2File.
 * `19/03/08` [add] LogUtils support multi process. Publish v1.23.7.
 * `19/03/02` [fix] LogUtils#file.
 * `19/02/28` [fix] ImageUtils#calculateInSampleSize. Publish v1.23.6.
diff --git a/gradle.properties b/gradle.properties
index 110f0cb7ef..c209c08b84 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -19,4 +19,10 @@
 
 #org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
 
-org.gradle.jvmargs=-XX:MaxHeapSize=1024m -Xmx1024m
\ No newline at end of file
+org.gradle.jvmargs=-Xmx8192m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+org.gradle.daemon=true
+org.gradle.configureondemand=true
+org.gradle.parallel=true
+
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/gradle/config/config.gradle b/gradle/config/config.gradle
index e455c4dba6..e8c793b6b3 100644
--- a/gradle/config/config.gradle
+++ b/gradle/config/config.gradle
@@ -5,7 +5,7 @@ gradle.ext {
     applicationId = 'com.blankj.androidutilcode'
     appName = 'Util'
 
-    compileSdkVersion = 27
+    compileSdkVersion = 28
     minSdkVersion = 14
     targetSdkVersion = 27
     versionCode = 1_024_000
@@ -13,8 +13,8 @@ gradle.ext {
 
     // lib version
     kotlin_version = '1.3.10'
-    support_version = '27.1.1'
     leakcanary_version = '1.6.3'
+    androidx_version = '1.0.0'
 
     dep = [:]
 
@@ -36,11 +36,11 @@ gradle.ext {
             subutil_lib                : new DepConfig(":subutil:lib"),
             subutil_pkg                : new DepConfig(":subutil:pkg"),
             utilcode_app               : new DepConfig(":utilcode:app"),
-            utilcode_lib               : new DepConfig(false, ":utilcode:lib", "com.blankj:utilcode:$versionName"),
+            utilcode_lib               : new DepConfig(true, ":utilcode:lib", "com.blankj:utilcode:$versionName"),
             utilcode_pkg               : new DepConfig(":utilcode:pkg"),
 
-            support_appcompat_v7       : new DepConfig("com.android.support:appcompat-v7:$support_version"),
-            support_design             : new DepConfig("com.android.support:design:$support_version"),
+            support_appcompat_v7       : new DepConfig("androidx.appcompat:appcompat:$androidx_version"),
+            support_material           : new DepConfig("com.google.android.material:material:$androidx_version"),
             support_multidex           : new DepConfig("com.android.support:multidex:1.0.2"),
 
             constraint                 : new DepConfig("com.android.support.constraint:constraint-layout:1.1.3"),
diff --git a/gradle/config/configApp.gradle b/gradle/config/configApp.gradle
index cb8d5a290a..809cb07cd4 100644
--- a/gradle/config/configApp.gradle
+++ b/gradle/config/configApp.gradle
@@ -42,8 +42,11 @@ android {
     }
 
     dexOptions {
+        preDexLibraries true
         javaMaxHeapSize "8g"
         maxProcessCount 8
+        incremental true
+        dexInProcess = true
     }
 }
 
@@ -57,7 +60,7 @@ dependencies {
 
 private String getSuffix() {
     if (project.path == ":launcher:app") return ""
-    return project.path.replace(":" , "_").substring(0, project.path.length() - 4)
+    return project.path.replace(":", "_").substring(0, project.path.length() - 4)
 }
 
 def configSigning(Project pro) {
diff --git a/launcher/app/build.gradle b/launcher/app/build.gradle
index eb9f8d906f..bf68fb45ff 100644
--- a/launcher/app/build.gradle
+++ b/launcher/app/build.gradle
@@ -4,7 +4,7 @@ apply {
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation project(':launcher:pkg')
-    implementation project(':subutil:pkg')
-    implementation project(':utilcode:pkg')
+    implementation gradle.ext.dep.launcher_pkg
+    implementation gradle.ext.dep.subutil_pkg
+    implementation gradle.ext.dep.utilcode_pkg
 }
\ No newline at end of file
diff --git a/launcher/pkg/build.gradle b/launcher/pkg/build.gradle
index 9fe360a5dd..881637b34a 100644
--- a/launcher/pkg/build.gradle
+++ b/launcher/pkg/build.gradle
@@ -4,5 +4,5 @@ apply {
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    api project(':lib:base')
+    api gradle.ext.dep.lib_base
 }
\ No newline at end of file
diff --git a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
index 02491cd88d..0e9f0a8477 100644
--- a/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
+++ b/launcher/pkg/src/main/java/com/blankj/launcher/pkg/MainActivity.kt
@@ -2,7 +2,7 @@ package com.blankj.launcher.pkg
 
 import android.graphics.Color
 import android.os.Bundle
-import android.support.v7.app.ActionBarDrawerToggle
+import androidx.appcompat.app.ActionBarDrawerToggle
 import android.view.View
 import android.widget.ImageView
 import com.blankj.lib.base.BaseDrawerActivity
diff --git a/launcher/pkg/src/main/res/layout/activity_main.xml b/launcher/pkg/src/main/res/layout/activity_main.xml
index 3b31dafe32..ee8b62a6fa 100644
--- a/launcher/pkg/src/main/res/layout/activity_main.xml
+++ b/launcher/pkg/src/main/res/layout/activity_main.xml
@@ -1,17 +1,17 @@
 
-
 
-    
 
-        
 
-            
 
-        
-    
+        
+    
 
     
 
-    
@@ -69,5 +69,5 @@
                 android:text="@string/sub_util" />
 
         
-    
-
+    
+
diff --git a/lib/base/build.gradle b/lib/base/build.gradle
index 370036c062..67f9762d82 100644
--- a/lib/base/build.gradle
+++ b/lib/base/build.gradle
@@ -8,7 +8,7 @@ dependencies {
     api gradle.ext.dep.subutil_lib
 
     api gradle.ext.dep.support_appcompat_v7
-    api gradle.ext.dep.support_design
+    api gradle.ext.dep.support_material
     api gradle.ext.dep.support_multidex
     api gradle.ext.dep.constraint
     api gradle.ext.dep.kotlin
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java b/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java
index caae1d45cf..0c9d8fa419 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseActivity.java
@@ -3,11 +3,12 @@
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.os.Bundle;
-import android.support.annotation.LayoutRes;
-import android.support.v7.app.AppCompatActivity;
 import android.view.LayoutInflater;
 import android.view.View;
 
+import androidx.annotation.LayoutRes;
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.blankj.swipepanel.SwipePanel;
 import com.blankj.utilcode.util.AntiShakeUtils;
 import com.blankj.utilcode.util.AppUtils;
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java b/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java
index 1e0ddc0b27..5d2eba8260 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseApplication.java
@@ -2,7 +2,8 @@
 
 import android.app.Application;
 import android.content.Context;
-import android.support.multidex.MultiDex;
+
+import androidx.multidex.MultiDex;
 
 import com.blankj.utilcode.util.AppUtils;
 import com.blankj.utilcode.util.CrashUtils;
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java b/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java
index c7f7f1daea..ec3c895f6e 100755
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseDrawerActivity.java
@@ -3,17 +3,18 @@
 import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.net.Uri;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
-import android.support.design.widget.NavigationView;
-import android.support.v4.widget.DrawerLayout;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.widget.FrameLayout;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+import androidx.drawerlayout.widget.DrawerLayout;
+
 import com.blankj.utilcode.util.ActivityUtils;
 import com.blankj.utilcode.util.StringUtils;
+import com.google.android.material.navigation.NavigationView;
 
 
 /**
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java b/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java
index 5667f3f02c..0e4e7ba5cc 100755
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseFragment.java
@@ -4,17 +4,18 @@
 import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.IdRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.annotation.IdRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
 import com.blankj.utilcode.util.AntiShakeUtils;
 
 /**
diff --git a/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java b/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java
index a40230420d..e0ed3ed10a 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/BaseTitleActivity.java
@@ -1,16 +1,17 @@
 package com.blankj.lib.base;
 
 import android.annotation.SuppressLint;
-import android.support.annotation.LayoutRes;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.Toolbar;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewStub;
 import android.widget.FrameLayout;
 
+import androidx.annotation.LayoutRes;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.widget.Toolbar;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+
 import com.blankj.utilcode.util.BarUtils;
 import com.blankj.utilcode.util.ColorUtils;
 
diff --git a/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java b/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java
index 29e8553899..b0550f126c 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/IBaseView.java
@@ -1,10 +1,11 @@
 package com.blankj.lib.base;
 
 import android.os.Bundle;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.Nullable;
 import android.view.View;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
+
 
 /**
  * 
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java
index 11aa94e015..e69be6c6df 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseAdapter.java
@@ -1,12 +1,13 @@
 package com.blankj.lib.base.rv;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
 import java.util.List;
 
 /**
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java
index cdf42c7882..332c4caee0 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseCell.java
@@ -1,10 +1,11 @@
 package com.blankj.lib.base.rv;
 
-import android.support.annotation.NonNull;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.view.View;
 
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: blankj
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java
index ceb1c46eac..0bd892f317 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/BaseViewHolder.java
@@ -1,7 +1,7 @@
 package com.blankj.lib.base.rv;
 
-import android.support.annotation.IdRes;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.IdRes;
+import androidx.recyclerview.widget.RecyclerView;
 import android.util.SparseArray;
 import android.view.View;
 
diff --git a/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java b/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java
index 3d2b90f302..dd20894e10 100644
--- a/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java
+++ b/lib/base/src/main/java/com/blankj/lib/base/rv/RecycleViewDivider.java
@@ -5,11 +5,11 @@
 import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.view.ViewCompat;
-import android.support.v7.widget.RecyclerView;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.RecyclerView;
 import android.view.View;
 import android.widget.LinearLayout;
 
diff --git a/lib/base/src/main/res/layout/activity_base_title.xml b/lib/base/src/main/res/layout/activity_base_title.xml
index b11ecf7341..986d3669b6 100644
--- a/lib/base/src/main/res/layout/activity_base_title.xml
+++ b/lib/base/src/main/res/layout/activity_base_title.xml
@@ -1,24 +1,23 @@
 
-
 
-    
 
-        
-    
+    
 
     
 
-
+
diff --git a/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml b/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml
index 96f5e09d49..bd031cfb67 100644
--- a/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml
+++ b/lib/base/src/main/res/layout/activity_base_title_stub_scroll.xml
@@ -1,5 +1,5 @@
 
-
 
-
+
 
diff --git a/lib/base/src/main/res/layout/activity_drawer.xml b/lib/base/src/main/res/layout/activity_drawer.xml
index 72f70ed969..be44cd718c 100644
--- a/lib/base/src/main/res/layout/activity_drawer.xml
+++ b/lib/base/src/main/res/layout/activity_drawer.xml
@@ -1,5 +1,5 @@
 
-
 
-    
 
-
+
diff --git a/subutil/app/build.gradle b/subutil/app/build.gradle
index a2e0172413..a7027c15ef 100644
--- a/subutil/app/build.gradle
+++ b/subutil/app/build.gradle
@@ -4,5 +4,5 @@ apply {
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation project(':subutil:pkg')
+    implementation gradle.ext.dep.subutil_pkg
 }
\ No newline at end of file
diff --git a/subutil/lib/build.gradle b/subutil/lib/build.gradle
index 9dcbe0b542..f3140b4f0b 100644
--- a/subutil/lib/build.gradle
+++ b/subutil/lib/build.gradle
@@ -14,7 +14,7 @@ readme {
 
 dependencies {
     compileOnly gradle.ext.dep.support_appcompat_v7
-    compileOnly gradle.ext.dep.support_design
+    compileOnly gradle.ext.dep.support_material
     api(gradle.ext.dep.glide) {
         exclude group: "com.android.support"
     }
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
index 7ee8747902..0c177b534c 100755
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
@@ -11,7 +11,7 @@
 import android.location.LocationProvider;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
 import android.util.Log;
 
 import java.io.IOException;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
index 22486b3a91..934408c65e 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.subutil.util;
 
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
 
 /**
  * 
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
index 9cbf4e06fd..91b336abcf 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/Utils.java
@@ -7,8 +7,8 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 import java.lang.reflect.InvocationTargetException;
 
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java
index f5583397d9..2f26fb9c24 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/ExecutorFactory.java
@@ -2,7 +2,8 @@
 
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 import java.util.concurrent.Executor;
 import java.util.concurrent.LinkedBlockingQueue;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java
index b952f318cb..bdd4174486 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/HttpUtils.java
@@ -1,7 +1,8 @@
 package com.blankj.subutil.util.http;
 
 import android.accounts.NetworkErrorException;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java
index fe39b1299c..c6eddf9b96 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/Request.java
@@ -1,6 +1,7 @@
 package com.blankj.subutil.util.http;
 
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
diff --git a/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java b/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java
index b8624af490..0cf43662f2 100644
--- a/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java
+++ b/subutil/lib/src/main/java/com/blankj/subutil/util/http/SSLConfig.java
@@ -2,7 +2,8 @@
 
 import android.annotation.SuppressLint;
 import android.os.Build;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 import java.io.IOException;
 import java.net.InetAddress;
diff --git a/subutil/pkg/build.gradle b/subutil/pkg/build.gradle
index 9fe360a5dd..881637b34a 100644
--- a/subutil/pkg/build.gradle
+++ b/subutil/pkg/build.gradle
@@ -4,5 +4,5 @@ apply {
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    api project(':lib:base')
+    api gradle.ext.dep.lib_base
 }
\ No newline at end of file
diff --git a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
index 45e67a4a0d..9eba25c622 100644
--- a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
+++ b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt
@@ -1,6 +1,6 @@
 package com.blankj.subutil.pkg.helper
 
-import android.support.v7.app.AlertDialog
+import androidx.appcompat.app.AlertDialog
 import com.blankj.subutil.pkg.R
 import com.blankj.utilcode.util.ActivityUtils
 import com.blankj.utilcode.util.PermissionUtils
diff --git a/utilcode/README-CN.md b/utilcode/README-CN.md
index 445f206121..0bdb622940 100644
--- a/utilcode/README-CN.md
+++ b/utilcode/README-CN.md
@@ -5,7 +5,7 @@ Gradle:
 implementation 'com.blankj:utilcode:1.24.0'
 
 // if u use AndroidX, use the following
-implementation 'com.blankj:utilcodex:1.23.7'
+implementation 'com.blankj:utilcodex:1.24.0'
 ```
 
 
diff --git a/utilcode/README.md b/utilcode/README.md
index f449736061..5a6a295b4c 100644
--- a/utilcode/README.md
+++ b/utilcode/README.md
@@ -5,7 +5,7 @@ Gradle:
 implementation 'com.blankj:utilcode:1.24.0'
 
 // if u use AndroidX, use the following
-implementation 'com.blankj:utilcodex:1.23.7'
+implementation 'com.blankj:utilcodex:1.24.0'
 ```
 
 
diff --git a/utilcode/app/build.gradle b/utilcode/app/build.gradle
index 5616386892..ea5c172cd7 100644
--- a/utilcode/app/build.gradle
+++ b/utilcode/app/build.gradle
@@ -4,5 +4,5 @@ apply {
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation project(':utilcode:pkg')
+    implementation gradle.ext.dep.utilcode_pkg
 }
\ No newline at end of file
diff --git a/utilcode/lib/build.gradle b/utilcode/lib/build.gradle
index e4dd3a6716..6d6c599298 100644
--- a/utilcode/lib/build.gradle
+++ b/utilcode/lib/build.gradle
@@ -18,7 +18,7 @@ dependencies {
     compile gradle.ext.dep.gson
 
     compileOnly gradle.ext.dep.support_appcompat_v7
-    compileOnly gradle.ext.dep.support_design
+    compileOnly gradle.ext.dep.support_material
 
     testImplementation gradle.ext.dep.junit
     testImplementation gradle.ext.dep.robolectric
diff --git a/utilcode/lib/project.properties b/utilcode/lib/project.properties
index 22ae3b8603..d238eda740 100644
--- a/utilcode/lib/project.properties
+++ b/utilcode/lib/project.properties
@@ -1,9 +1,9 @@
 #project
-project.name=UtilCode
+project.name=UtilCodeX
 project.groupId=com.blankj
-project.artifactId=utilcode
+project.artifactId=utilcodex
 project.packaging=aar
 project.siteUrl=https://github.com/Blankj/AndroidUtilCode
 project.gitUrl=https://github.com/Blankj/AndroidUtilCode.git
 #javadoc
-javadoc.name=UtilCode
\ No newline at end of file
+javadoc.name=UtilCodeX
\ No newline at end of file
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
index b68bfcb113..5c05c0163e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.constant;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
index 76f7e9a217..6db826e4ab 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java
@@ -4,7 +4,7 @@
 import android.Manifest.permission;
 import android.annotation.SuppressLint;
 import android.os.Build;
-import android.support.annotation.StringDef;
+import androidx.annotation.StringDef;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
index 9932037bf8..45090576e3 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/constant/TimeConstants.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.constant;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
index d6a671e4fe..de1bfeb005 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
@@ -10,14 +10,15 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v4.util.Pair;
 import android.util.Log;
 import android.view.View;
 
+import androidx.annotation.AnimRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.util.Pair;
+
 import java.util.List;
 
 /**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
index 7e87e73474..ca9036225e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AntiShakeUtils.java
@@ -1,9 +1,10 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
 import android.view.View;
 
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
index a9368be59f..5a9194ce66 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/AppUtils.java
@@ -17,8 +17,6 @@
 import android.net.Uri;
 import android.os.Build;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
 import android.util.Log;
 
 import java.io.File;
@@ -27,6 +25,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
index 7b5509b2b5..22178a5c20 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BarUtils.java
@@ -8,11 +8,6 @@
 import android.graphics.Color;
 import android.graphics.Point;
 import android.os.Build;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.widget.DrawerLayout;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.Display;
@@ -27,6 +22,12 @@
 
 import java.lang.reflect.Method;
 
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
+import androidx.drawerlayout.widget.DrawerLayout;
+
 import static android.Manifest.permission.EXPAND_STATUS_BAR;
 
 /**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
index f9344b0a59..bacc519540 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java
@@ -2,11 +2,12 @@
 
 import android.content.ContentResolver;
 import android.provider.Settings;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
 import android.view.Window;
 import android.view.WindowManager;
 
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java
index f04202043e..d272c99b98 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/BusUtils.java
@@ -16,11 +16,12 @@
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
index bb48a4b5cf..c5a9a17a6d 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java
@@ -3,13 +3,14 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
 
 import org.json.JSONArray;
 import org.json.JSONObject;
 
 import java.io.Serializable;
 
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
index 67e6b3fb0e..a8ae8afa5b 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDiskUtils.java
@@ -8,9 +8,10 @@
 import android.graphics.drawable.Drawable;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
 import com.blankj.utilcode.constant.CacheConstants;
 
 import org.json.JSONArray;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
index 2ef267bd01..6dbb9f7475 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleStaticUtils.java
@@ -3,13 +3,14 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
 
 import org.json.JSONArray;
 import org.json.JSONObject;
 
 import java.io.Serializable;
 
+import androidx.annotation.NonNull;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
index c800423c78..aca1c25837 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java
@@ -3,7 +3,7 @@
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.os.Parcelable;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import com.blankj.utilcode.constant.CacheConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
index 56abfba117..aedcfa7fc4 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryStaticUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
index d0e06e394d..ddaa2baed9 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CacheMemoryUtils.java
@@ -1,7 +1,7 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.NonNull;
-import android.support.v4.util.LruCache;
+import androidx.annotation.NonNull;
+import androidx.collection.LruCache;
 
 import com.blankj.utilcode.constant.CacheConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
index 4c0c22232b..a6603cfc44 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ColorUtils.java
@@ -1,12 +1,12 @@
 package com.blankj.utilcode.util;
 
 import android.graphics.Color;
-import android.support.annotation.ColorInt;
-import android.support.annotation.ColorRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.ColorRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
index 18b5f814a3..081dd09761 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/CrashUtils.java
@@ -5,8 +5,8 @@
 import android.content.pm.PackageManager;
 import android.os.Build;
 import android.os.Environment;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
 import android.util.Log;
 
 import java.io.BufferedWriter;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
index e6b1910cfc..c641c9bdae 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
@@ -11,11 +11,12 @@
 import android.os.Debug;
 import android.os.PowerManager;
 import android.provider.Settings;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.RequiresPermission;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
+import androidx.annotation.RequiresApi;
+import androidx.annotation.RequiresPermission;
+
 import java.io.File;
 import java.net.InetAddress;
 import java.net.NetworkInterface;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
index 43b8537e75..9e8ae14ef1 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
@@ -3,16 +3,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.annotation.AnimRes;
-import android.support.annotation.AnimatorRes;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IdRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
 import android.util.Log;
 import android.view.View;
 
@@ -20,6 +10,17 @@
 import java.util.Collections;
 import java.util.List;
 
+import androidx.annotation.AnimRes;
+import androidx.annotation.AnimatorRes;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IdRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
 /**
  * 
  *     author: Blankj
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
index 83e01eb1ad..cbee7dd4bd 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ImageUtils.java
@@ -27,13 +27,13 @@
 import android.renderscript.Element;
 import android.renderscript.RenderScript;
 import android.renderscript.ScriptIntrinsicBlur;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
 import android.view.View;
 
 import java.io.BufferedOutputStream;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
index 6faa37d043..1e26dc8a9a 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/IntentUtils.java
@@ -8,8 +8,8 @@
 import android.os.Bundle;
 import android.provider.MediaStore;
 import android.provider.Settings;
-import android.support.annotation.RequiresPermission;
-import android.support.v4.content.FileProvider;
+import androidx.annotation.RequiresPermission;
+import androidx.core.content.FileProvider;
 
 import java.io.File;
 import java.util.ArrayList;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
index cfa568fa7c..de3eb285cc 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
@@ -7,7 +7,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewTreeObserver.OnGlobalLayoutListener;
@@ -16,6 +15,8 @@
 import android.view.inputmethod.InputMethodManager;
 import android.widget.FrameLayout;
 
+import androidx.annotation.NonNull;
+
 import java.lang.reflect.Field;
 
 /**
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
index 1372ecd40b..9a7e11cbf5 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java
@@ -10,10 +10,10 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.RequiresApi;
+import androidx.collection.SimpleArrayMap;
 import android.util.Log;
 
 import com.google.gson.Gson;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
index 6f6cf85b80..bd4b8da935 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
@@ -8,7 +8,7 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ServiceInfo;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
index d59eb28240..24a05a26b7 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
@@ -7,13 +7,14 @@
 import android.net.NetworkInfo;
 import android.net.wifi.WifiManager;
 import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.text.format.Formatter;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
+
 import java.lang.reflect.Method;
 import java.net.InetAddress;
 import java.net.InterfaceAddress;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
index b8163d2e66..73a900b465 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/NotificationUtils.java
@@ -5,9 +5,9 @@
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.Nullable;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
index be5491ece0..3c0c087a39 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ObjectUtils.java
@@ -1,9 +1,9 @@
 package com.blankj.utilcode.util;
 
 import android.os.Build;
-import android.support.annotation.RequiresApi;
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
+import androidx.annotation.RequiresApi;
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
index d35cbcc620..602efcb5db 100755
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PermissionUtils.java
@@ -9,10 +9,10 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.core.content.ContextCompat;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.WindowManager;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
index 99068781a4..f407f81b5f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/PhoneUtils.java
@@ -7,7 +7,7 @@
 import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Build;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
 import android.telephony.SmsManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
index adcd265f72..619b175549 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ProcessUtils.java
@@ -10,8 +10,8 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
 import android.util.Log;
 
 import java.util.Arrays;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
index ba57fab956..817a94149f 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/RegexUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
 
 import com.blankj.utilcode.constant.RegexConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
index 81d10f08cf..3fb515c06b 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ResourceUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.RawRes;
+import androidx.annotation.RawRes;
 
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
index d3e21fb873..21274c3023 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPStaticUtils.java
@@ -1,7 +1,7 @@
 package com.blankj.utilcode.util;
 
 import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import java.util.Map;
 import java.util.Set;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
index 554a2ed586..a9d18a1a55 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SPUtils.java
@@ -3,7 +3,7 @@
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import java.util.Collections;
 import java.util.HashMap;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
index 7390fceed0..3245eb115c 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
@@ -10,8 +10,8 @@
 import android.graphics.Point;
 import android.os.Build;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
 import android.util.DisplayMetrics;
 import android.view.Surface;
 import android.view.View;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
index b7ad2fa9d2..fc10a601ae 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ShellUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import java.io.BufferedReader;
 import java.io.DataOutputStream;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
index b164e6154e..eab1990d29 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java
@@ -1,12 +1,12 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.design.widget.Snackbar;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import com.google.android.material.snackbar.Snackbar;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.style.ForegroundColorSpan;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
index b8d9d53aed..4d49451ec0 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SpanUtils.java
@@ -14,14 +14,14 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
 import android.text.Layout;
 import android.text.Layout.Alignment;
 import android.text.SpannableStringBuilder;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
index c3254e3d32..70f0defe50 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/StringUtils.java
@@ -1,8 +1,8 @@
 package com.blankj.utilcode.util;
 
 import android.content.res.Resources;
-import android.support.annotation.ArrayRes;
-import android.support.annotation.StringRes;
+import androidx.annotation.ArrayRes;
+import androidx.annotation.StringRes;
 
 /**
  * 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
index 0545a27fa0..19de94ca33 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ThreadUtils.java
@@ -2,10 +2,11 @@
 
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
 import android.util.Log;
 
+import androidx.annotation.IntRange;
+import androidx.annotation.NonNull;
+
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.Executor;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
index adaa920474..a5286b0fbe 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/TimeUtils.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.util;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 import com.blankj.utilcode.constant.TimeConstants;
 
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
index 150425cdba..0dd47cfa3e 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ToastUtils.java
@@ -12,11 +12,11 @@
 import android.os.Build;
 import android.os.Handler;
 import android.os.Message;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.StringRes;
-import android.support.v4.app.NotificationManagerCompat;
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+import androidx.core.app.NotificationManagerCompat;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
index 9ad408912a..20fdc39b81 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java
@@ -8,12 +8,14 @@
 import android.os.Environment;
 import android.provider.DocumentsContract;
 import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
+import android.text.TextUtils;
 import android.util.Log;
 
 import java.io.File;
 
+import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
 /**
  * 
  *     author: Blankj
@@ -75,12 +77,19 @@ public static File uri2File(@NonNull final Uri uri) {
                 Log.d("UriUtils", uri.toString() + " parse failed. -> 1");
                 return null;
             } else if ("com.android.providers.downloads.documents".equals(authority)) {
-                final String id = DocumentsContract.getDocumentId(uri);
-                final Uri contentUri = ContentUris.withAppendedId(
-                        Uri.parse("content://downloads/public_downloads"),
-                        Long.valueOf(id)
-                );
-                return getFileFromUri(contentUri, 2);
+                String id = DocumentsContract.getDocumentId(uri);
+                if (!TextUtils.isEmpty(id)) {
+                    if (id.startsWith("raw:")) {
+                        return new File(id.substring(4));
+                    }
+                    final Uri contentUri = ContentUris.withAppendedId(
+                            Uri.parse(Environment.DIRECTORY_DOWNLOADS),
+                            Long.valueOf(id)
+                    );
+                    return getFileFromUri(contentUri, 2);
+                }
+                Log.d("UriUtils", uri.toString() + " parse failed. -> 3");
+                return null;
             } else if ("com.android.providers.media.documents".equals(authority)) {
                 final String docId = DocumentsContract.getDocumentId(uri);
                 final String[] split = docId.split(":");
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
index d0c98afc96..1992a2c902 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/Utils.java
@@ -13,13 +13,14 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.support.v4.content.FileProvider;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 
+import androidx.core.content.FileProvider;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
index a57bbb8241..622d657817 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/VibrateUtils.java
@@ -2,7 +2,7 @@
 
 import android.content.Context;
 import android.os.Vibrator;
-import android.support.annotation.RequiresPermission;
+import androidx.annotation.RequiresPermission;
 
 import static android.Manifest.permission.VIBRATE;
 
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
index 85bc9d8ac2..2dadedff8c 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java
@@ -1,8 +1,5 @@
 package com.blankj.utilcode.util;
 
-
-import android.support.annotation.NonNull;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -29,7 +26,7 @@ public BaseTest() {
         ShadowLog.stream = System.out;
         ThreadUtils.setDeliver(new Executor() {
             @Override
-            public void execute(@NonNull Runnable command) {
+            public void execute(Runnable command) {
                 command.run();
             }
         });
@@ -201,8 +198,8 @@ public void onFail(Throwable t) {
     static class Person implements Comparable {
 
         String name;
-        int age;
-        int time;
+        int    age;
+        int    time;
 
         public Person(String name) {
             this.name = name;
@@ -220,7 +217,7 @@ public String toString() {
         }
 
         @Override
-        public int compareTo(@NonNull Person o) {
+        public int compareTo(Person o) {
             int res = o.age - age;
             if (res != 0) {
                 return res;
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
index a0203f78fc..ed12c24d8d 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java
@@ -1,7 +1,5 @@
 package com.blankj.utilcode.util;
 
-import android.support.v4.util.LongSparseArray;
-import android.support.v4.util.SimpleArrayMap;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
@@ -12,6 +10,9 @@
 import java.util.HashMap;
 import java.util.LinkedList;
 
+import androidx.collection.LongSparseArray;
+import androidx.collection.SimpleArrayMap;
+
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
diff --git a/utilcode/pkg/build.gradle b/utilcode/pkg/build.gradle
index 9fe360a5dd..881637b34a 100644
--- a/utilcode/pkg/build.gradle
+++ b/utilcode/pkg/build.gradle
@@ -4,5 +4,5 @@ apply {
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    api project(':lib:base')
+    api gradle.ext.dep.lib_base
 }
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
index e784f98401..9982c948b7 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt
@@ -6,7 +6,7 @@ import android.graphics.Bitmap
 import android.graphics.drawable.BitmapDrawable
 import android.os.Build
 import android.os.Bundle
-import android.support.v4.app.ActivityOptionsCompat
+import androidx.core.app.ActivityOptionsCompat
 import android.view.View
 import android.view.Window
 import com.blankj.lib.base.BaseTitleActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
index 0c63773639..abf0151bbc 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/SubActivityActivity.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.activity
 
 import android.os.Build
 import android.os.Bundle
-import android.support.v4.app.ActivityCompat
+import androidx.core.app.ActivityCompat
 import android.view.View
 import android.view.Window
 import com.blankj.lib.base.BaseTitleActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
index d4f0d60530..fc8020b3e5 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusFragmentActivity.kt
@@ -3,10 +3,10 @@ package com.blankj.utilcode.pkg.feature.bar
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentPagerAdapter
-import android.support.v4.view.ViewPager
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentPagerAdapter
+import androidx.viewpager.widget.ViewPager
 import android.view.View
 import com.blankj.lib.base.BaseActivity
 import com.blankj.utilcode.pkg.R
@@ -37,7 +37,7 @@ class BarStatusFragmentActivity : BaseActivity() {
             R.id.barStatusFragmentNavigationCustom
     )
 
-    private val mFragmentList = ArrayList()
+    private val mFragmentList = ArrayList()
 
     private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener l@{ item ->
         when (item.itemId) {
@@ -78,8 +78,8 @@ class BarStatusFragmentActivity : BaseActivity() {
         mFragmentList.add(BarStatusCustomFragment.newInstance())
 
         barStatusFragmentVp.offscreenPageLimit = 3
-        barStatusFragmentVp.adapter = object : FragmentPagerAdapter(supportFragmentManager) {
-            override fun getItem(position: Int): Fragment {
+        barStatusFragmentVp.adapter = object : androidx.fragment.app.FragmentPagerAdapter(supportFragmentManager) {
+            override fun getItem(position: Int): androidx.fragment.app.Fragment {
                 return mFragmentList[position]
             }
 
@@ -88,7 +88,7 @@ class BarStatusFragmentActivity : BaseActivity() {
             }
         }
 
-        barStatusFragmentVp.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+        barStatusFragmentVp.addOnPageChangeListener(object : androidx.viewpager.widget.ViewPager.OnPageChangeListener {
             override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
 
             override fun onPageSelected(position: Int) {
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
index ada9dd0d10..86972c449d 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/ContainerFragment.kt
@@ -2,8 +2,8 @@ package com.blankj.utilcode.pkg.feature.fragment
 
 import android.os.Build
 import android.os.Bundle
-import android.support.annotation.RequiresApi
-import android.support.v4.app.Fragment
+import androidx.annotation.RequiresApi
+import androidx.fragment.app.Fragment
 import android.transition.*
 import android.view.View
 import com.blankj.lib.base.BaseLazyFragment
@@ -128,7 +128,7 @@ class ContainerFragment : BaseLazyFragment(), FragmentUtils.OnBackClickListener
         }
     }
 
-    private fun addSharedElement(fragment: Fragment): Fragment {
+    private fun addSharedElement(fragment: androidx.fragment.app.Fragment): androidx.fragment.app.Fragment {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             fragment.sharedElementEnterTransition = DetailTransition()
             fragment.enterTransition = Fade()
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
index 446271b366..b18a2e236b 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/fragment/FragmentActivity.kt
@@ -4,8 +4,8 @@ import android.content.Context
 import android.content.Intent
 import android.os.Bundle
 import android.os.PersistableBundle
-import android.support.design.widget.BottomNavigationView
-import android.support.v4.app.Fragment
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import androidx.fragment.app.Fragment
 import android.view.View
 import com.blankj.lib.base.BaseActivity
 import com.blankj.utilcode.pkg.R
@@ -29,7 +29,7 @@ class FragmentActivity : BaseActivity() {
         }
     }
 
-    private val mFragments = arrayListOf()
+    private val mFragments = arrayListOf()
     private var curIndex: Int = 0
 
     private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
index 0e092e0062..2c6656f220 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
@@ -6,12 +6,12 @@ import android.graphics.Bitmap
 import android.graphics.Color
 import android.os.Build
 import android.os.Bundle
-import android.support.annotation.StringRes
-import android.support.v7.widget.LinearLayoutManager
 import android.view.View
 import android.widget.Button
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.annotation.StringRes
+import androidx.recyclerview.widget.LinearLayoutManager
 import com.blankj.lib.base.BaseTaskActivity
 import com.blankj.lib.base.rv.BaseAdapter
 import com.blankj.lib.base.rv.BaseCell
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
index a0ea36d528..cd1c1b0d99 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
 import android.content.Intent
 import android.graphics.Color
 import android.os.Bundle
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import android.text.SpannableStringBuilder
 import android.view.View
 import android.view.ViewGroup
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
index d84ced168c..202069ed61 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt
@@ -5,7 +5,7 @@ import android.content.Context
 import android.content.Intent
 import android.graphics.*
 import android.os.Bundle
-import android.support.annotation.ColorInt
+import androidx.annotation.ColorInt
 import android.text.Layout
 import android.text.SpannableStringBuilder
 import android.text.TextPaint
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
index 314ba33d59..458ecbb3fb 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
@@ -2,7 +2,7 @@ package com.blankj.utilcode.pkg.feature.toast
 
 import android.os.Handler
 import android.os.Looper
-import android.support.annotation.StringRes
+import androidx.annotation.StringRes
 import android.widget.TextView
 import android.widget.Toast
 
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
index 51c9e53774..47f91e826e 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
 import android.content.Intent
 import android.graphics.Color
 import android.os.Bundle
-import android.support.v4.content.ContextCompat
+import androidx.core.content.ContextCompat
 import android.view.Gravity
 import android.view.View
 import com.blankj.lib.base.BaseTitleActivity
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
index 344a69e448..a495a13013 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt
@@ -3,7 +3,6 @@ package com.blankj.utilcode.pkg.helper
 import android.app.Dialog
 import android.graphics.Bitmap
 import android.graphics.drawable.ColorDrawable
-import android.support.v7.app.AlertDialog
 import android.text.method.ScrollingMovementMethod
 import android.view.Gravity
 import android.view.LayoutInflater
@@ -12,9 +11,9 @@ import android.widget.Button
 import android.widget.EditText
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.appcompat.app.AlertDialog
 import com.blankj.utilcode.pkg.R
 import com.blankj.utilcode.util.*
-import com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldRequest
 
 /**
  * ```
@@ -26,7 +25,7 @@ import com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldReques
  */
 object DialogHelper {
 
-    fun showRationaleDialog(shouldRequest: ShouldRequest) {
+    fun showRationaleDialog(shouldRequest: PermissionUtils.OnRationaleListener.ShouldRequest) {
         val topActivity = ActivityUtils.getTopActivity()
         AlertDialog.Builder(topActivity)
                 .setTitle(android.R.string.dialog_alert_title)
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
index 792ae5672e..9be8749952 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen.xml
@@ -1,5 +1,5 @@
 
-
 
-
+
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
index ccc88dddb6..1522b0741b 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_close.xml
@@ -8,7 +8,7 @@
     android:fillViewport="true"
     tools:context=".feature.adaptScreen.AdaptCloseActivity">
 
-    
 
@@ -43,6 +43,6 @@
             android:textSize="30pt"
             app:layout_constraintTop_toBottomOf="@id/adaptScreenCloseAdaptDpTv" />
 
-    
+    
 
 
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
index 350921b04d..75fa87e8e5 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_height.xml
@@ -1,13 +1,12 @@
 
-
 
-    
 
@@ -94,6 +93,6 @@
                 android:textSize="30pt" />
         
 
-    
+    
 
 
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
index 121415e1b6..dd9f9f40c7 100644
--- a/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_adaptscreen_width.xml
@@ -8,7 +8,7 @@
     android:fillViewport="true"
     tools:context=".feature.adaptScreen.AdaptWidthActivity">
 
-    
 
@@ -149,6 +149,6 @@
 
         
 
-    
+    
 
 
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
index 3ce196004b..bd6e43e7a7 100644
--- a/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_bar_status_fragment.xml
@@ -6,7 +6,7 @@
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-    
 
-    
 
-    
-
Date: Sat, 29 Jun 2019 19:59:42 +0800
Subject: [PATCH 005/122] see 06/29 log

---
 .../test/java/com/blankj/utilcode/util/TimeUtilsTest.java    | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java
index 2ba0a41586..5ab8ee17eb 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java
@@ -42,15 +42,14 @@ public class TimeUtilsTest  {
     public void millis2String() {
         assertEquals(timeString, TimeUtils.millis2String(timeMillis));
         assertEquals(timeStringFormat, TimeUtils.millis2String(timeMillis, mFormat));
-        assertEquals("2017年05月04日", TimeUtils.millis2String(timeMillis, "yyyy年MM月dd日"));
-        assertEquals("16时37分", TimeUtils.millis2String(timeMillis, "HH时mm分"));
+        assertEquals(timeStringFormat, TimeUtils.millis2String(timeMillis, "yyyy MM dd HH:mm:ss"));
     }
 
     @Test
     public void string2Millis() {
         assertEquals(timeMillis, TimeUtils.string2Millis(timeString));
         assertEquals(timeMillis, TimeUtils.string2Millis(timeStringFormat, mFormat));
-        assertEquals(timeMillis, TimeUtils.string2Millis(timeStringFormat, "yyyy年MM月dd日HH时mm分"));
+        assertEquals(timeMillis, TimeUtils.string2Millis(timeStringFormat, "yyyy MM dd HH:mm:ss"));
     }
 
     @Test

From 40c0e36fbb1dc33ebce09a6fa162e07380271cf9 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Thu, 15 Aug 2019 01:36:03 +0800
Subject: [PATCH 006/122] see 08/15 log

---
 lib/utilcode/README-CN.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
index d610595e3c..cce78181fc 100644
--- a/lib/utilcode/README-CN.md
+++ b/lib/utilcode/README-CN.md
@@ -1185,7 +1185,7 @@ getComments       : 获取压缩文件中的注释链表
 [log.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
 
 [map.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/MapUtils.java
-[map.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/MapUtilsTest.java
+[map.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/MapUtilsTest.java
 
 [metaData.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
 [metaData.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/metaData/MetaDataActivity.kt

From 73dc60c4cdfa10a2b296df3e28ce9af2784be582 Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Sat, 30 Nov 2019 13:03:30 +0800
Subject: [PATCH 007/122] see 11/30 log

---
 buildSrc/src/main/groovy/Config.groovy                        | 2 +-
 config.json                                                   | 2 +-
 .../pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt     | 2 +-
 .../utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java  | 2 +-
 lib/base/build.gradle                                         | 2 +-
 lib/subutil/build.gradle                                      | 4 ++--
 lib/utildebug/build.gradle                                    | 2 +-
 7 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
index 03181d7927..cc279262a8 100644
--- a/buildSrc/src/main/groovy/Config.groovy
+++ b/buildSrc/src/main/groovy/Config.groovy
@@ -41,7 +41,7 @@ class Config {
             lib_base                   : new DepConfig(true, true, ":lib:base"),
             lib_common                 : new DepConfig(true, true, ":lib:common"),
             lib_subutil                : new DepConfig(true, true, ":lib:subutil"),
-            lib_utilcode               : new DepConfig(true, true, ":lib:utilcode", "com.blankj:utilcode:1.26.0"),
+            lib_utilcodex              : new DepConfig(true, true, ":lib:utilcodex", "com.blankj:utilcodex:1.26.0"),
             lib_utildebug              : new DepConfig(true, true, ":lib:utildebug", "com.blankj:utildebug:1.25.10-alpha5"),
             lib_utildebug_no_op        : new DepConfig(true, true, ":lib:utildebug-no-op", "com.blankj:utildebug-no-op:1.25.10-alpha5"),
             /*Never delete this line*/
diff --git a/config.json b/config.json
index 188e2ff509..630e76de6a 100644
--- a/config.json
+++ b/config.json
@@ -20,7 +20,7 @@
     {"isApply": true, "useLocal": true, "localPath": ":lib:base"},
     {"isApply": true, "useLocal": true, "localPath": ":lib:common"},
     {"isApply": true, "useLocal": true, "localPath": ":lib:subutil"},
-    {"isApply": true, "useLocal": true, "localPath": ":lib:utilcode", "remotePath": "com.blankj:utilcode:1.26.0"},
+    {"isApply": true, "useLocal": true, "localPath": ":lib:utilcodex", "remotePath": "com.blankj:utilcodex:1.26.0"},
     {"isApply": true, "useLocal": true, "localPath": ":lib:utildebug", "remotePath": "com.blankj:utildebug:1.25.10-alpha5"},
     {"isApply": true, "useLocal": true, "localPath": ":lib:utildebug-no-op", "remotePath": "com.blankj:utildebug-no-op:1.25.10-alpha5"}
   ]
diff --git a/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt b/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt
index fb45369c5b..ccce008ded 100644
--- a/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt
+++ b/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt
@@ -2,8 +2,8 @@ package com.blankj.main.pkg
 
 import android.graphics.Color
 import android.os.Bundle
-import androidx.appcompat.app.ActionBarDrawerToggle
 import android.view.View
+import androidx.appcompat.app.ActionBarDrawerToggle
 import com.blankj.common.activity.CommonActivity
 import com.blankj.common.item.CommonItem
 import com.blankj.common.item.CommonItemClick
diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java
index e62c518699..b7efb5f4d7 100644
--- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java
+++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/reflect/TestPrivateStaticFinal.java
@@ -1,6 +1,6 @@
 package com.blankj.utilcode.pkg.feature.reflect;
 
-import android.support.annotation.Keep;
+import androidx.annotation.Keep;
 
 /**
  * 
diff --git a/lib/base/build.gradle b/lib/base/build.gradle
index 2285071b5e..6fffd3af61 100644
--- a/lib/base/build.gradle
+++ b/lib/base/build.gradle
@@ -1,7 +1,7 @@
 dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
     api Config.depConfig.lib_subutil.dep
-    api Config.depConfig.lib_utilcode.dep
+    api Config.depConfig.lib_utilcodex.dep
 
     api Config.depConfig.support_appcompat.dep
     api Config.depConfig.support_material.dep
diff --git a/lib/subutil/build.gradle b/lib/subutil/build.gradle
index 662f2a4ec7..e7eaf45da1 100644
--- a/lib/subutil/build.gradle
+++ b/lib/subutil/build.gradle
@@ -13,14 +13,14 @@ readme {
 dependencies {
     compileOnly Config.depConfig.support_appcompat.dep
     compileOnly Config.depConfig.support_material.dep
-    compileOnly Config.depConfig.lib_utilcode.dep
+    compileOnly Config.depConfig.lib_utilcodex.dep
     api(Config.depConfig.glide.dep) {
         exclude group: "com.android.support"
     }
     api Config.depConfig.retrofit.dep
     api Config.depConfig.gson.dep
 
-    testImplementation Config.depConfig.lib_utilcode.dep
+    testImplementation Config.depConfig.lib_utilcodex.dep
     testImplementation Config.depConfig.test_junit.dep
     testImplementation Config.depConfig.test_robolectric.dep
 }
\ No newline at end of file
diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle
index b6380100bb..558735162a 100644
--- a/lib/utildebug/build.gradle
+++ b/lib/utildebug/build.gradle
@@ -5,7 +5,7 @@ apply {
 }
 
 dependencies {
-    implementation Config.depConfig.lib_utilcode.dep
+    implementation Config.depConfig.lib_utilcodex.dep
     implementation Config.depConfig.swipe_panel.dep
     implementation Config.depConfig.photo_view.dep
     compileOnly Config.depConfig.support_appcompat.dep

From 4d3d5cd24d641967d33dbd13e991b54d64505b0d Mon Sep 17 00:00:00 2001
From: Blankj <625783482@qq.com>
Date: Sat, 30 Nov 2019 18:12:15 +0800
Subject: [PATCH 008/122] see 11/30 log

---
 buildSrc/src/main/groovy/Config.groovy        |  2 +-
 .../com/blankj/utilcode/util/RegexUtils.java  | 28 ++++++++++++++++++-
 .../blankj/utilcode/util/RegexUtilsTest.java  |  1 +
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
index 4a24413e04..388502f920 100644
--- a/buildSrc/src/main/groovy/Config.groovy
+++ b/buildSrc/src/main/groovy/Config.groovy
@@ -67,7 +67,7 @@ class Config {
             leakcanary_android_no_op   : new DepConfig("com.squareup.leakcanary:leakcanary-android-no-op:$leakcanary_version"),
             leakcanary_support_fragment: new DepConfig("com.squareup.leakcanary:leakcanary-support-fragment:$leakcanary_version"),
 
-            free_proguard              : new DepConfig("com.blankj:free-proguard:1.0.1"),
+            free_proguard              : new DepConfig("com.blankj:free-proguard:1.0.2"),
             swipe_panel                : new DepConfig("com.blankj:swipe-panel:1.2"),
 
             gson                       : new DepConfig("com.google.code.gson:gson:2.8.6"),
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java
index ba57fab956..40334ff414 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java
@@ -47,7 +47,33 @@ public static boolean isMobileSimple(final CharSequence input) {
      * @return {@code true}: yes
{@code false}: no */ public static boolean isMobileExact(final CharSequence input) { - return isMatch(RegexConstants.REGEX_MOBILE_EXACT, input); + return isMobileExact(input, null); + } + + /** + * Return whether input matches regex of exact mobile. + * + * @param input The input. + * @param newSegments The new segments of mobile number. + * @return {@code true}: yes
{@code false}: no + */ + public static boolean isMobileExact(final CharSequence input, List newSegments) { + boolean match = isMatch(RegexConstants.REGEX_MOBILE_EXACT, input); + if (match) return true; + if (newSegments == null) return false; + if (input == null || input.length() != 11) return false; + String content = input.toString(); + for (char c : content.toCharArray()) { + if (!Character.isDigit(c)) { + return false; + } + } + for (String newSegment : newSegments) { + if (content.startsWith(newSegment)) { + return true; + } + } + return false; } /** diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java index 9c3227c72b..8233231a40 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java @@ -26,6 +26,7 @@ public void isMobileSimple() { public void isMobileExact() { assertFalse(RegexUtils.isMobileExact("11111111111")); assertTrue(RegexUtils.isMobileExact("13888880000")); + assertTrue(RegexUtils.isMobileExact("12088880000", CollectionUtils.newArrayList("120"))); } @Test From f0021969ba457003a115f9ac436737139c27ee20 Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Sat, 30 Nov 2019 18:37:41 +0800 Subject: [PATCH 009/122] see 11/30 log --- .../com/blankj/utilcode/util/BusUtilsVsEventBusTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsVsEventBusTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsVsEventBusTest.java index 60d208a216..3bd3272a17 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsVsEventBusTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsVsEventBusTest.java @@ -36,7 +36,7 @@ public void setUp() throws Exception { /** * 注册 10000 个订阅者,共执行 10 次取平均值 */ - @Test +// @Test public void compareRegister10000Times() { final List eventBusTests = new ArrayList<>(); final List busUtilsTests = new ArrayList<>(); @@ -74,7 +74,7 @@ public void restState() { /** * 向 1 个订阅者发送 * 1000000 次,共执行 10 次取平均值 */ - @Test +// @Test public void comparePostTo1Subscriber1000000Times() { comparePostTemplate("Post to 1 subscriber 1000000 times.", 1, 1000000); } @@ -82,7 +82,7 @@ public void comparePostTo1Subscriber1000000Times() { /** * 向 100 个订阅者发送 * 100000 次,共执行 10 次取平均值 */ - @Test +// @Test public void comparePostTo100Subscribers100000Times() { comparePostTemplate("Post to 100 subscribers 100000 times.", 100, 100000); } @@ -121,7 +121,7 @@ public void restState() { /** * 注销 10000 个订阅者,共执行 10 次取平均值 */ - @Test +// @Test public void compareUnregister10000Times() { final List tests = new ArrayList<>(); for (int i = 0; i < 10000; i++) { From 79478ed5c5fc7f621c3658a1d7b5159464704493 Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Sat, 30 Nov 2019 23:49:07 +0800 Subject: [PATCH 010/122] see 11/30 log --- build.gradle | 2 +- buildSrc/src/main/groovy/Config.groovy | 23 ++++++++++--------- .../com/blankj/subutil/util/BaseTest.java | 1 - 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index 04628ed39a..9f37b616e1 100644 --- a/build.gradle +++ b/build.gradle @@ -58,7 +58,7 @@ allprojects { resolutionStrategy.eachDependency { if (it.requested.group == 'com.android.support' && !it.requested.name.contains('multidex')) { - it.useVersion Config.support_version + it.useVersion Config.supportVersion } } } diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 388502f920..9ba8d490ea 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -18,9 +18,10 @@ class Config { static versionName = '1.26.1'// E.g. 1.9.72 => 1,009,072 // lib version - static kotlin_version = '1.3.50' - static support_version = '28.0.0' - static leakcanary_version = '1.6.3' + static gradlePluginVersion = '3.5.2' + static kotlinVersion = '1.3.50' + static supportVersion = '28.0.0' + static leakcanaryVersion = '1.6.3' static depConfig = [ /*Never delete this line*/ @@ -44,8 +45,8 @@ class Config { lib_utildebug : new DepConfig(true, true, ":lib:utildebug", "com.blankj:utildebug:1.25.10-alpha5"), lib_utildebug_no_op : new DepConfig(true, true, ":lib:utildebug-no-op", "com.blankj:utildebug-no-op:1.25.10-alpha5"), /*Never delete this line*/ - plugin_gradle : new DepConfig(pluginPath: "com.android.tools.build:gradle:3.5.2"), - plugin_kotlin : new DepConfig(pluginPath: "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"), + plugin_gradle : new DepConfig(pluginPath: "com.android.tools.build:gradle:$gradlePluginVersion"), + plugin_kotlin : new DepConfig(pluginPath: "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"), plugin_maven : new DepConfig(pluginPath: "com.github.dcendents:android-maven-gradle-plugin:2.1", pluginId: "com.github.dcendents.android-maven"),// 上传到 maven plugin_bintray : new DepConfig(pluginPath: "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4", pluginId: "com.jfrog.bintray"),// 上传到 bintray plugin_traute : new DepConfig(pluginPath: "tech.harmonysoft:traute-gradle:1.1.10", pluginId: "tech.harmonysoft.oss.traute"),// 注解转非空判断 @@ -56,16 +57,16 @@ class Config { plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.2", pluginId: "com.blankj.api"), plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.4", pluginId: "com.blankj.bus"), - support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$support_version"), - support_design : new DepConfig("com.android.support:design:$support_version"), + support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$supportVersion"), + support_design : new DepConfig("com.android.support:design:$supportVersion"), support_multidex : new DepConfig("com.android.support:multidex:1.0.2"), support_constraint : new DepConfig("com.android.support.constraint:constraint-layout:1.1.3"), - kotlin : new DepConfig("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"), + kotlin : new DepConfig("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"), - leakcanary_android : new DepConfig("com.squareup.leakcanary:leakcanary-android:$leakcanary_version"), - leakcanary_android_no_op : new DepConfig("com.squareup.leakcanary:leakcanary-android-no-op:$leakcanary_version"), - leakcanary_support_fragment: new DepConfig("com.squareup.leakcanary:leakcanary-support-fragment:$leakcanary_version"), + leakcanary_android : new DepConfig("com.squareup.leakcanary:leakcanary-android:$leakcanaryVersion"), + leakcanary_android_no_op : new DepConfig("com.squareup.leakcanary:leakcanary-android-no-op:$leakcanaryVersion"), + leakcanary_support_fragment: new DepConfig("com.squareup.leakcanary:leakcanary-support-fragment:$leakcanaryVersion"), free_proguard : new DepConfig("com.blankj:free-proguard:1.0.2"), swipe_panel : new DepConfig("com.blankj:swipe-panel:1.2"), diff --git a/lib/subutil/src/test/java/com/blankj/subutil/util/BaseTest.java b/lib/subutil/src/test/java/com/blankj/subutil/util/BaseTest.java index de2d6b30c8..d21100695e 100644 --- a/lib/subutil/src/test/java/com/blankj/subutil/util/BaseTest.java +++ b/lib/subutil/src/test/java/com/blankj/subutil/util/BaseTest.java @@ -30,6 +30,5 @@ public BaseTest() { @Test public void test() throws Exception { - System.out.println("1234"); } } From 359dc53f704608df44ef2032d889ab0f4eeaee66 Mon Sep 17 00:00:00 2001 From: xxjy Date: Fri, 6 Dec 2019 16:52:17 +0800 Subject: [PATCH 011/122] =?UTF-8?q?fix=20bug=201.ClickUtils.createStyleDra?= =?UTF-8?q?wable()=E4=B8=AD=E7=9A=84createAlphaDrawable=E5=88=9B=E5=BB=BAd?= =?UTF-8?q?isable=E4=BC=A0=E5=80=BC=E9=97=AE=E9=A2=98=EF=BC=9B=202.ClickUt?= =?UTF-8?q?ils.createAlphaDrawable=E5=92=8CcreateDarkDrawable=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98=EF=BC=8C=E4=B8=80=E4=BA=9B?= =?UTF-8?q?getIntrinsicWidth()<0=E7=9A=84drawable=E4=BC=9A=E9=97=AA?= =?UTF-8?q?=E9=80=80=EF=BC=9B=203.api21=E4=B9=8B=E5=89=8D=EF=BC=8CView.pos?= =?UTF-8?q?t=E7=9A=84=E5=9B=9E=E8=B0=83=E6=98=AF=E6=9C=89=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=9C=A8view=E8=BF=98=E6=B2=A1=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=B0window=E5=89=8D=E6=89=A7=E8=A1=8C=E7=9A=84=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=88=A4=E6=96=AD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/blankj/utilcode/util/ClickUtils.java | 83 +++++++++++++++---- .../base/view/BaseContentFloatView.java | 4 +- 2 files changed, 70 insertions(+), 17 deletions(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java index 1f0b5b5e9c..76b5d1d661 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java @@ -3,8 +3,10 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.ColorFilter; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; +import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; @@ -198,7 +200,7 @@ private static Drawable createStyleDrawable(Drawable src, int style, float value } Drawable disable = src.getConstantState().newDrawable().mutate(); - disable = createAlphaDrawable(pressed, 0.5f); + disable = createAlphaDrawable(disable, 0.5f); StateListDrawable drawable = new StateListDrawable(); drawable.addState(new int[]{android.R.attr.state_pressed}, pressed); @@ -208,27 +210,20 @@ private static Drawable createStyleDrawable(Drawable src, int style, float value } private static Drawable createAlphaDrawable(Drawable drawable, float alpha) { - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT - && !(drawable instanceof ColorDrawable)) { - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - Canvas myCanvas = new Canvas(bitmap); - drawable.setAlpha((int) (alpha * 255)); - drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); - drawable.draw(myCanvas); - return new BitmapDrawable(Resources.getSystem(), bitmap); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + DrawableWrapperBefore21 drawableWrapper = new DrawableWrapperBefore21(drawable); + drawableWrapper.setAlphaFix((int) (alpha * 255)); + return drawableWrapper; } drawable.setAlpha((int) (alpha * 255)); return drawable; } private static Drawable createDarkDrawable(Drawable drawable, float alpha) { - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT && !(drawable instanceof ColorDrawable)) { - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - Canvas myCanvas = new Canvas(bitmap); - drawable.setColorFilter(getDarkColorFilter(alpha)); - drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); - drawable.draw(myCanvas); - return new BitmapDrawable(Resources.getSystem(), bitmap); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + DrawableWrapperBefore21 drawableWrapper = new DrawableWrapperBefore21(drawable); + drawableWrapper.setColorFilterFix(getDarkColorFilter(alpha)); + return drawableWrapper; } drawable.setColorFilter(getDarkColorFilter(alpha)); return drawable; @@ -509,4 +504,60 @@ private static class LazyHolder { private static final OnUtilsTouchListener INSTANCE = new OnUtilsTouchListener(); } } + + static class DrawableWrapperBefore21 extends ShadowUtils.DrawableWrapper { + + private BitmapDrawable mBitmapDrawable = null; + + //低版本ColorDrawable.setColorFilter无效,这里直接用画笔画上 + private Paint mColorPaint = null; + + public DrawableWrapperBefore21(Drawable drawable) { + super(drawable); + if (drawable instanceof ColorDrawable) { + mColorPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); + mColorPaint.setColor(((ColorDrawable) drawable).getColor()); + } + } + + @Override + public void setColorFilter(ColorFilter cf) { + //低版本StateListDrawable.selectDrawable会重置ColorFilter + } + + public void setColorFilterFix(ColorFilter cf) { + super.setColorFilter(cf); + if (mColorPaint != null) { + mColorPaint.setColorFilter(cf); + } + } + + @Override + public void setAlpha(int alpha) { + //低版本StateListDrawable.selectDrawable会重置Alpha + } + + public void setAlphaFix(int alpha) { + super.setAlpha(alpha); + if (mColorPaint != null) { + mColorPaint.setColor(((ColorDrawable) getWrappedDrawable()).getColor()); + } + } + + @Override + public void draw(Canvas canvas) { + if (mBitmapDrawable == null) { + Bitmap bitmap = Bitmap.createBitmap(getBounds().width(), getBounds().height(), Bitmap.Config.ARGB_8888); + Canvas myCanvas = new Canvas(bitmap); + if (mColorPaint != null) { + myCanvas.drawRect(getBounds(), mColorPaint); + } else { + super.draw(myCanvas); + } + mBitmapDrawable = new BitmapDrawable(Resources.getSystem(), bitmap); + mBitmapDrawable.setBounds(getBounds()); + } + mBitmapDrawable.draw(canvas); + } + } } diff --git a/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentFloatView.java b/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentFloatView.java index c1d956eb40..49ad870e53 100644 --- a/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentFloatView.java +++ b/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentFloatView.java @@ -317,7 +317,9 @@ protected void onCreateLayoutParams() { post(new Runnable() { @Override public void run() { - wrapWindow(); + if (getParent() != null) { + wrapWindow(); + } } }); } From d133408a03a8bd42bc3ffb7f4ee659f7b18f27e6 Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Fri, 6 Dec 2019 21:43:15 +0800 Subject: [PATCH 012/122] see 12/06 log --- CHANGELOG.md | 2 + buildSrc/src/main/groovy/Config.groovy | 2 +- lib/utilcode/proguard-rules.pro | 4 + .../com/blankj/utilcode/util/ApiUtils.java | 105 +++++- .../blankj/utilcode/util/ApiUtilsTest.java | 6 +- plugin/api-gradle-plugin/CHANGELOG.md | 3 + plugin/api-gradle-plugin/build.gradle | 1 + .../reports/profile/css/base-style.css | 179 ++++++++++ .../reports/profile/css/style.css | 4 + .../reports/profile/js/report.js | 194 +++++++++++ .../profile/profile-2019-12-05-14-55-48.html | 317 ++++++++++++++++++ .../java/com/blankj/api/ApiClassVisitor.java | 14 +- .../java/com/blankj/api/ApiExtension.groovy | 4 +- .../main/java/com/blankj/api/ApiInject.groovy | 45 --- .../main/java/com/blankj/api/ApiPlugin.groovy | 4 +- .../main/java/com/blankj/api/ApiScan.groovy | 7 +- .../java/com/blankj/api/ApiTransform.groovy | 92 +++-- .../com/blankj/api/ApiUtilsClassVisitor.java | 64 ---- .../main/java/com/blankj/api/Config.groovy | 1 + .../src/test/java/com/blankj/api/ApiTest.java | 13 +- 20 files changed, 871 insertions(+), 190 deletions(-) create mode 100644 plugin/api-gradle-plugin/reports/profile/css/base-style.css create mode 100644 plugin/api-gradle-plugin/reports/profile/css/style.css create mode 100644 plugin/api-gradle-plugin/reports/profile/js/report.js create mode 100644 plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html delete mode 100755 plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy delete mode 100644 plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiUtilsClassVisitor.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 30c8d44b10..8a75b7f74c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +* `19/12/06` [add] Publish api plugin v1.3. +* `19/11/30` [add] Publish bus plugin v2.4. Publish api plugin v1.2. * `19/11/28` [add] Publish v1.26.0. * `19/11/27` [add] Shadow demo. * `19/11/26` [add] MVP demo. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 9ba8d490ea..2f070d1b12 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -54,7 +54,7 @@ class Config { // 本地第一次上传插件新的版本需设置 isApply = false, useLocal = true // 本地上传成功之后 isApply = true 即可应用插件来调试,后续版本更新无需设置 isApply = false // 发布版本的话把 isApply = false, useLocal = false,更新版本号,发布成功后 isApply = true 即可使用远程库版本 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.2", pluginId: "com.blankj.api"), + plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.3", pluginId: "com.blankj.api"), plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.4", pluginId: "com.blankj.bus"), support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$supportVersion"), diff --git a/lib/utilcode/proguard-rules.pro b/lib/utilcode/proguard-rules.pro index a35f9c0d91..b0df707115 100644 --- a/lib/utilcode/proguard-rules.pro +++ b/lib/utilcode/proguard-rules.pro @@ -21,4 +21,8 @@ @com.blankj.utilcode.util.BusUtils$Bus ; } +-keep public class * extends com.blankj.utilcode.util.ApiUtils$BaseApi +-keep,allowobfuscation @interface com.blankj.utilcode.util.ApiUtils$Api +-keep @com.blankj.utilcode.util.ApiUtils$Api class * + -keepattributes *Annotation* \ No newline at end of file diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java index cd3346f36d..87b3babdef 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java @@ -1,8 +1,10 @@ package com.blankj.utilcode.util; import android.support.annotation.NonNull; +import android.text.TextUtils; import android.util.Log; +import java.io.IOException; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -23,21 +25,23 @@ public final class ApiUtils { private static final String TAG = "ApiUtils"; + private static final String PREFIX = "blankj.api/"; + private Map mApiMap = new ConcurrentHashMap<>(); private Map mInjectApiImplMap = new HashMap<>(); private ApiUtils() { - init(); } - /** - * It'll be injected the implClasses who have {@link ApiUtils.Api} annotation - * by function of {@link ApiUtils#registerImpl} when execute transform task. - */ - private void init() {/*inject*/} - private void registerImpl(Class implClass) { - mInjectApiImplMap.put(implClass.getSuperclass(), implClass); + if (implClass == null) return; + Class superclass = implClass.getSuperclass(); + if (superclass == null) return; + mInjectApiImplMap.put(superclass, implClass); + } + + public static void register(Class implClass) { + getInstance().registerImpl(implClass); } /** @@ -57,7 +61,17 @@ public static String toString_() { @Override public String toString() { - return "ApiUtils: " + mInjectApiImplMap; + getAllApis(); + StringBuilder sb = new StringBuilder(); + sb.append("ApiUtils {"); + for (Map.Entry entry : mInjectApiImplMap.entrySet()) { + sb.append("\n ") + .append(entry.getKey().getName()) + .append(": ") + .append(entry.getValue().getName()); + } + sb.append("\n}"); + return sb.toString(); } private static ApiUtils getInstance() { @@ -70,17 +84,17 @@ private Result getApiInner(Class apiClass) { synchronized (this) { api = mApiMap.get(apiClass); if (api == null) { - Class implClass = mInjectApiImplMap.get(apiClass); + Class implClass = getApiImplClass(apiClass); if (implClass != null) { try { api = (BaseApi) implClass.newInstance(); mApiMap.put(apiClass, api); } catch (Exception ignore) { - Log.e(TAG, "The <" + implClass + "> has no parameterless constructor."); + Log.e(TAG, "The api of <" + implClass + "> has no parameterless constructor."); return null; } } else { - Log.e(TAG, "The <" + apiClass + "> doesn't implement."); + Log.e(TAG, "The api of <" + apiClass + "> doesn't implement."); return null; } } @@ -90,6 +104,73 @@ private Result getApiInner(Class apiClass) { return (Result) api; } + private Class getApiImplClass(Class apiClass) { + Class apiImplClass = mInjectApiImplMap.get(apiClass); + if (apiImplClass != null) return apiImplClass; + try { + String[] apiImpls = Utils.getApp().getAssets().list(PREFIX + apiClass.getName()); + if (apiImpls == null) { + return null; + } + if (apiImpls.length != 1) { + Log.e(TAG, "The api of <" + apiClass + "> has more than one implement."); + return null; + } + String apiImpl = apiImpls[0]; + if (TextUtils.isEmpty(apiImpl)) { + Log.e(TAG, "The api of <" + apiClass + ">'s name is empty."); + return null; + } + String[] apiImpl_isMock = apiImpl.split("-"); + if (apiImpl_isMock.length != 2) { + Log.e(TAG, "The api of <" + apiClass + ">'s implement <" + apiImpl + + "> which format of name is wrong."); + return null; + } + String className = apiImpl_isMock[0]; + boolean isMock = Boolean.parseBoolean(apiImpl_isMock[1]); + if (TextUtils.isEmpty(className)) { + return null; + } + apiImplClass = Class.forName(className); + Class superclass = apiImplClass.getSuperclass(); + if (superclass != null) { + //noinspection unchecked + if (apiClass.isAssignableFrom(apiImplClass)) { + mInjectApiImplMap.put(apiClass, apiImplClass); + return apiImplClass; + } else { + Log.e(TAG, "<" + apiImplClass.getName() + ">'s superClass is <" + + superclass.getName() + ">, not <" + apiClass.getName() + ">"); + return null; + } + } else { + Log.e(TAG, "<" + apiImplClass.getName() + ">'s superClass is <" + + "null>, not <" + apiClass.getName() + ">"); + return null; + } + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + private void getAllApis() { + try { + String[] apis = Utils.getApp().getAssets().list(PREFIX); + if (apis == null) return; + for (String api : apis) { + try { + getApiImplClass(Class.forName(api)); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + private static class LazyHolder { private static final ApiUtils INSTANCE = new ApiUtils(); } diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java index 740e5eefda..f39c32661e 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java @@ -11,13 +11,11 @@ * desc : *
*/ -public class ApiUtilsTest { +public class ApiUtilsTest extends BaseTest { @Before public void setUp() throws Exception { - ReflectUtils.reflect(ApiUtils.class) - .method("getInstance") - .method("registerImpl", TestApiImpl.class); + ApiUtils.register(TestApiImpl.class); } @Test diff --git a/plugin/api-gradle-plugin/CHANGELOG.md b/plugin/api-gradle-plugin/CHANGELOG.md index a292a61344..27236b2b08 100644 --- a/plugin/api-gradle-plugin/CHANGELOG.md +++ b/plugin/api-gradle-plugin/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## v1.3 +更新注入模式为插入到 assets 文件中,不再往 ApiUtils 中插入代码,为支持 adb install-multiple 作准备 + ## v1.2 去除 gradle 版本依赖的问题 diff --git a/plugin/api-gradle-plugin/build.gradle b/plugin/api-gradle-plugin/build.gradle index a197a30db1..f51fb6a251 100755 --- a/plugin/api-gradle-plugin/build.gradle +++ b/plugin/api-gradle-plugin/build.gradle @@ -29,6 +29,7 @@ dependencies { implementation gradleApi() implementation localGroovy() + testImplementation Config.depConfig.plugin_gradle.dep testImplementation Config.depConfig.test_junit.dep } diff --git a/plugin/api-gradle-plugin/reports/profile/css/base-style.css b/plugin/api-gradle-plugin/reports/profile/css/base-style.css new file mode 100644 index 0000000000..4afa73e3dd --- /dev/null +++ b/plugin/api-gradle-plugin/reports/profile/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/plugin/api-gradle-plugin/reports/profile/css/style.css b/plugin/api-gradle-plugin/reports/profile/css/style.css new file mode 100644 index 0000000000..c4a4239337 --- /dev/null +++ b/plugin/api-gradle-plugin/reports/profile/css/style.css @@ -0,0 +1,4 @@ + +div.tab td.indentPath { + padding-left: 3em; +} diff --git a/plugin/api-gradle-plugin/reports/profile/js/report.js b/plugin/api-gradle-plugin/reports/profile/js/report.js new file mode 100644 index 0000000000..83bab4a19f --- /dev/null +++ b/plugin/api-gradle-plugin/reports/profile/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html b/plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html new file mode 100644 index 0000000000..29873c9bb7 --- /dev/null +++ b/plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html @@ -0,0 +1,317 @@ + + + + + +Profile report + + + + + +
+

Profile report

+ +
+ +
+

Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDuration
Total Build Time1.907s
Startup0.028s
Settings and BuildSrc0.005s
Loading Projects0.101s
Configuring Projects-49.542s
Artifact Transforms0s
Task Execution0s
+
+
+

Configuration

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProjectDuration
All projects-49.542s
:lib:base0.584s
:lib:utilcode0.237s
:0.124s
:lib:subutil0.072s
:plugin:api-gradle-plugin0.048s
:plugin:bus-gradle-plugin0.024s
:lib:utildebug0.020s
:lib:utildebug-no-op0.019s
:lib:common0.018s
:plugin0.001s
:feature0s
:feature:launcher0s
:feature:main0s
:feature:subutil0s
:feature:utilcode0s
:lib0s
:feature:launcher:app-50.689s
+
+
+

Dependency Resolution

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DependenciesDuration
All dependencies0.055s
:classpath0.050s
detachedConfiguration10.002s
:plugin:api-gradle-plugin:classpath0.001s
:plugin:bus-gradle-plugin:classpath0.001s
detachedConfiguration20.001s
+
+
+

Artifact Transforms

+ + + + + + + + + + + +
TransformDuration
All transforms0s
+
+
+

Task Execution

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TaskDurationResult
:0s(total)
:feature0s(total)
:feature:launcher0s(total)
:feature:launcher:app0s(total)
:feature:main0s(total)
:feature:subutil0s(total)
:feature:utilcode0s(total)
:lib0s(total)
:lib:base0s(total)
:lib:common0s(total)
:lib:subutil0s(total)
:lib:utilcode0s(total)
:lib:utildebug0s(total)
:lib:utildebug-no-op0s(total)
:plugin0s(total)
:plugin:api-gradle-plugin0s(total)
:plugin:bus-gradle-plugin0s(total)
+
+
+ +
+ + diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java index 443f0a846d..23ea8cb1f7 100644 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java @@ -39,7 +39,7 @@ public void visit(int version, int access, String name, String signature, String className = name; superClassName = superName; if ((mApiUtilsClass + "$BaseApi").equals(superName)) { - mApiClasses.add(name); + mApiClasses.add(name.replace("/", ".")); } super.visit(version, access, name, signature, superName, interfaces); } @@ -63,16 +63,18 @@ public void visit(String name, Object value) {// 可获取注解的值 public void visitEnd() { super.visitEnd(); if (hasAnnotation) { + String key = superClassName.replace("/", "."); + String value = className.replace("/", "."); if (!isMock) {// 如果不是 mock 的话 - ApiInfo apiInfo = mApiImplMap.get(superClassName); + ApiInfo apiInfo = mApiImplMap.get(key); if (apiInfo == null) { - mApiImplMap.put(superClassName, new ApiInfo(className, false)); + mApiImplMap.put(key, new ApiInfo(value, false)); } else {// 存在一个 api 多个实现就报错 - errorStr = "<" + className + "> and <" + apiInfo.implApiClass + "> impl same api of <" + superClassName + ">"; + errorStr = "<" + value + "> and <" + apiInfo.implApiClass + "> impl same api of <" + superClassName + ">"; } } else {// mock 的话,如果 map 中已存在就不覆盖了 - if (!mApiImplMap.containsKey(superClassName)) { - mApiImplMap.put(superClassName, new ApiInfo(className, true)); + if (!mApiImplMap.containsKey(key)) { + mApiImplMap.put(key, new ApiInfo(value, true)); } } } diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiExtension.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiExtension.groovy index 87ec26e571..3221a74042 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiExtension.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiExtension.groovy @@ -2,7 +2,6 @@ package com.blankj.api class ApiExtension { - boolean abortOnError = true String apiUtilsClass = "com.blankj.utilcode.util.ApiUtils"; String onlyScanLibRegex = "" String jumpScanLibRegex = "" @@ -10,8 +9,7 @@ class ApiExtension { @Override String toString() { return "ApiExtension { " + - "abortOnError: " + abortOnError + - ", apiUtilsClass: " + apiUtilsClass + + "apiUtilsClass: " + apiUtilsClass + (onlyScanLibRegex == "" ? "" : ", onlyScanLibRegex: " + onlyScanLibRegex) + (jumpScanLibRegex == "" ? "" : ", jumpScanLibRegex: " + jumpScanLibRegex) + " }"; diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy deleted file mode 100755 index e5755f5cfe..0000000000 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy +++ /dev/null @@ -1,45 +0,0 @@ -package com.blankj.api - -import com.blankj.api.util.ZipUtils -import org.apache.commons.io.FileUtils -import org.objectweb.asm.ClassReader -import org.objectweb.asm.ClassVisitor -import org.objectweb.asm.ClassWriter - -class ApiInject { - - static void start(Map apiImplMap, File apiUtilsTransformFile, String busUtilsClass) { - if (apiUtilsTransformFile.getPath().endsWith(".jar")) { - String jarPath = apiUtilsTransformFile.getAbsolutePath() - String decompressedJarPath = jarPath.substring(0, jarPath.length() - 4); - File decompressedJar = new File(decompressedJarPath) - ZipUtils.unzipFile(apiUtilsTransformFile, decompressedJar) - - File apiUtilsFile = new File( - decompressedJarPath + Config.FILE_SEP + - busUtilsClass.replace('.', Config.FILE_SEP) + '.class' - ) - - inject2ApiUtils(apiUtilsFile, apiImplMap, busUtilsClass) - - FileUtils.forceDelete(apiUtilsTransformFile) - ZipUtils.zipFiles(Arrays.asList(decompressedJar.listFiles()), apiUtilsTransformFile) - FileUtils.forceDelete(decompressedJar) - } else { - File apiUtilsFile = new File( - apiUtilsTransformFile.getAbsolutePath() + Config.FILE_SEP + - busUtilsClass.replace('.', Config.FILE_SEP) + '.class' - ) - - inject2ApiUtils(apiUtilsFile, apiImplMap, busUtilsClass) - } - } - - private static void inject2ApiUtils(File apiUtilsFile, Map apiImplMap, String apiUtilsClass) { - ClassReader cr = new ClassReader(apiUtilsFile.bytes); - ClassWriter cw = new ClassWriter(cr, 0); - ClassVisitor cv = new ApiUtilsClassVisitor(cw, apiImplMap, apiUtilsClass); - cr.accept(cv, ClassReader.SKIP_FRAMES); - FileUtils.writeByteArrayToFile(apiUtilsFile, cw.toByteArray()) - } -} \ No newline at end of file diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy index 3f79f72b56..5cfb4eb845 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy @@ -1,9 +1,7 @@ package com.blankj.api import com.android.build.gradle.AppExtension -import com.android.build.gradle.AppPlugin import com.blankj.api.util.LogUtils -import org.apache.commons.io.FileUtils import org.gradle.api.Plugin import org.gradle.api.Project @@ -11,7 +9,7 @@ class ApiPlugin implements Plugin { @Override void apply(Project project) { - if (project.plugins.hasPlugin(AppPlugin)) { + if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.dynamic-feature")) { LogUtils.init(project) LogUtils.l('project(' + project.toString() + ') apply api gradle plugin!') project.extensions.create(Config.EXT_NAME, ApiExtension) diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy index ad2525d063..8fa2fbcbf8 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy @@ -1,6 +1,6 @@ package com.blankj.api -import com.blankj.api.util.LogUtils + import com.blankj.api.util.ZipUtils import groovy.io.FileType import org.apache.commons.io.FileUtils @@ -12,7 +12,6 @@ class ApiScan { Map apiImplMap = [:] List apiClasses = [] - File apiUtilsTransformFile String apiUtilsClass ApiScan(String apiUtilsClass) { @@ -54,10 +53,6 @@ class ApiScan { def className = packagePath.replace(Config.FILE_SEP, ".") // delete .class className = className.substring(0, className.length() - 6) - if (apiUtilsClass == className) { - apiUtilsTransformFile = source - LogUtils.l(": $source") - } ClassReader cr = new ClassReader(file.bytes); ClassWriter cw = new ClassWriter(cr, 0); diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy index 34ce323c81..9291d0fa6d 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy @@ -4,6 +4,7 @@ import com.android.build.api.transform.* import com.android.build.gradle.internal.pipeline.TransformManager import com.blankj.api.util.JsonUtils import com.blankj.api.util.LogUtils +import com.blankj.api.util.ZipUtils import org.apache.commons.io.FileUtils import org.gradle.api.Project @@ -24,7 +25,7 @@ class ApiTransform extends Transform { @Override Set getInputTypes() { - return TransformManager.CONTENT_CLASS + return TransformManager.CONTENT_JARS } @Override @@ -62,6 +63,8 @@ class ApiTransform extends Transform { ApiScan apiScan = new ApiScan(ext.apiUtilsClass) + File javaResJar + inputs.each { TransformInput input -> input.directoryInputs.each { DirectoryInput dirInput ->// 遍历文件夹 File dir = dirInput.file @@ -90,6 +93,12 @@ class ApiTransform extends Transform { ) FileUtils.copyFile(jar, dest) + if (javaResJar == null && jarInput.contentTypes == TransformManager.CONTENT_RESOURCES) { + LogUtils.l("resources jar: $jarName -> $dest") + javaResJar = dest + return + } + if (jumpScan(jarName, ext)) { LogUtils.l("jump jar: $jarName -> $dest") return @@ -101,48 +110,63 @@ class ApiTransform extends Transform { } } - if (apiScan.apiUtilsTransformFile != null) { - if (apiScan.apiClasses.isEmpty()) { - LogUtils.l("no api.") + if (apiScan.apiClasses.isEmpty()) { + LogUtils.l("no api.") + } else { + if (javaResJar == null) { + LogUtils.w("javaResJar didn't existed.") } else { - Map implApis = [:] - List noImplApis = [] - apiScan.apiImplMap.each { key, value -> - implApis.put(key, value.toString()) - } - apiScan.apiClasses.each { - if (!apiScan.apiImplMap.containsKey(it)) { - noImplApis.add(it) - } - } - Map apiDetails = [:] - apiDetails.put("ApiUtilsClass", ext.apiUtilsClass) - apiDetails.put("implApis", implApis) - apiDetails.put("noImplApis", noImplApis) - String apiJson = JsonUtils.getFormatJson(apiDetails) - LogUtils.l(jsonFile.toString() + ": " + apiJson) - FileUtils.write(jsonFile, apiJson) - - if (noImplApis.size() > 0) { - if (ext.abortOnError) { - throw new Exception("u should impl these apis: " + noImplApis + - "\n u can check it in file: " + jsonFile.toString()) - } - } - ApiInject.start(apiScan.apiImplMap, apiScan.apiUtilsTransformFile, ext.apiUtilsClass) + injectApis2Assets(javaResJar, apiScan) + print2__api__(apiScan, ext, jsonFile) } - } else { - throw new Exception("No ApiUtils of ${ext.apiUtilsClass} in $mProject.") } LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms") } - private static jumpScan(String jarName, ApiExtension ext) { - if (jarName.contains("utilcode")) { - return false + private static void injectApis2Assets(File javaResJar, ApiScan apiScan) { + String javaResPath = javaResJar.getAbsolutePath() + File unzipJavaResDir = new File(javaResPath.substring(0, javaResPath.lastIndexOf("."))) + unzipJavaResDir.mkdirs() + ZipUtils.unzipFile(javaResJar, unzipJavaResDir) + File apiDir = new File(unzipJavaResDir, Config.API_PATH) + apiDir.mkdirs() + apiScan.apiImplMap.each { key, value -> + File apiClassDir = new File(apiDir, key) + apiClassDir.mkdir() + File apiClassImplDir = new File(apiClassDir, value.implApiClass + "-" + value.isMock) + apiClassImplDir.createNewFile() } + javaResJar.delete() + ZipUtils.zipFiles(Arrays.asList(unzipJavaResDir.listFiles()), javaResJar) + } + private static void print2__api__(ApiScan apiScan, ApiExtension ext, File jsonFile) { + Map implApis = [:] + List noImplApis = [] + apiScan.apiImplMap.each { key, value -> + implApis.put(key, value.toString()) + } + apiScan.apiClasses.each { + if (!apiScan.apiImplMap.containsKey(it)) { + noImplApis.add(it) + } + } + Map apiDetails = [:] + apiDetails.put("ApiUtilsClass", ext.apiUtilsClass) + apiDetails.put("implApis", implApis) + apiDetails.put("noImplApis", noImplApis) + String apiJson = JsonUtils.getFormatJson(apiDetails) + LogUtils.l(jsonFile.toString() + ": " + apiJson) + FileUtils.write(jsonFile, apiJson) + + if (noImplApis.size() > 0) { + LogUtils.w("u should impl these apis: " + noImplApis + + "\n u can check it in file: " + jsonFile.toString()) + } + } + + private static jumpScan(String jarName, ApiExtension ext) { if (ext.onlyScanLibRegex != null && ext.onlyScanLibRegex.trim().length() > 0) { return !Pattern.matches(ext.onlyScanLibRegex, jarName) } diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiUtilsClassVisitor.java b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiUtilsClassVisitor.java deleted file mode 100644 index e9d3c938d0..0000000000 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiUtilsClassVisitor.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.blankj.api; - -import org.objectweb.asm.AnnotationVisitor; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.AdviceAdapter; - -import java.util.Map; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2019/07/09
- *     desc  :
- * 
- */ -public class ApiUtilsClassVisitor extends ClassVisitor { - - private Map mApiImplMap; - private String mApiUtilsClass; - - public ApiUtilsClassVisitor(ClassVisitor classVisitor, Map apiImplMap, String apiUtilsClass) { - super(Opcodes.ASM5, classVisitor); - mApiImplMap = apiImplMap; - mApiUtilsClass = apiUtilsClass.replace(".", "/"); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) { - if (!"init".equals(name)) { - return super.visitMethod(access, name, descriptor, signature, exceptions); - } - // 往 init() 函数中写入 - if (cv == null) return null; - MethodVisitor mv = cv.visitMethod(access, name, descriptor, signature, exceptions); - mv = new AdviceAdapter(Opcodes.ASM5, mv, access, name, descriptor) { - - @Override - public AnnotationVisitor visitAnnotation(String desc, boolean visible) { - return super.visitAnnotation(desc, visible); - } - - @Override - protected void onMethodEnter() { - super.onMethodEnter(); - } - - @Override - protected void onMethodExit(int opcode) { - super.onMethodExit(opcode); - for (Map.Entry apiImplEntry : mApiImplMap.entrySet()) { - mv.visitVarInsn(Opcodes.ALOAD, 0); - mv.visitLdcInsn(Type.getType("L" + apiImplEntry.getValue().implApiClass + ";")); - mv.visitMethodInsn(Opcodes.INVOKESPECIAL, mApiUtilsClass, "registerImpl", "(Ljava/lang/Class;)V", false); - } - } - }; - return mv; - } -} diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy index fcf51fec4e..fc7c6c4aee 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy @@ -3,6 +3,7 @@ package com.blankj.api class Config { public static final String EXT_NAME = 'api' + public static final String API_PATH = "assets/blankj.api" public static final List EXCLUDE_LIBS_START_WITH = [ 'com.android.support', diff --git a/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiTest.java b/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiTest.java index 94fdce9fe0..26996b953a 100644 --- a/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiTest.java +++ b/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiTest.java @@ -1,12 +1,10 @@ package com.blankj.api; -import org.apache.commons.io.FileUtils; import org.junit.Test; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; -import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -25,7 +23,7 @@ public class ApiTest { @Test public void testInject() throws IOException { - inject2ApiUtils(getApiImplMap()); + getApiImplMap(); } private static Map getApiImplMap() throws IOException { @@ -49,15 +47,6 @@ private static Map getApiImplMap() throws IOException { return apiImplMap; } - private static void inject2ApiUtils(Map apiImpls) throws IOException { - ClassReader cr = new ClassReader(ApiUtils.class.getName()); - ClassWriter cw = new ClassWriter(cr, 0); - ClassVisitor cv = new ApiUtilsClassVisitor(cw, apiImpls, ApiUtils.class.getCanonicalName()); - cr.accept(cv, ClassReader.SKIP_FRAMES); - - FileUtils.writeByteArrayToFile(new File("ApiUtils2333.class"), cw.toByteArray()); - } - @ApiUtils.Api(isMock = true) public static class TestApiImpl extends TestApi { From 254a02514f54cf7281fd1c05006f886c6804c5d0 Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Sun, 8 Dec 2019 23:12:44 +0800 Subject: [PATCH 013/122] see 12/08 log --- gradle/wrapper/gradle-wrapper.properties | 2 +- .../com/blankj/utilcode/util/BusUtils.java | 94 ++++++++++--- .../blankj/utilcode/util/ApiUtilsTest.java | 2 +- .../com/blankj/utilcode/util/BaseTest.java | 6 +- .../blankj/utilcode/util/BusUtilsTest.java | 24 ++-- plugin/bus-gradle-plugin/.gitignore | 3 +- plugin/bus-gradle-plugin/CHANGELOG.md | 3 + plugin/bus-gradle-plugin/README.md | 2 +- plugin/bus-gradle-plugin/build.gradle | 1 + .../java/com/blankj/bus/BusExtension.groovy | 4 +- .../src/main/java/com/blankj/bus/BusInfo.java | 6 + .../main/java/com/blankj/bus/BusInject.groovy | 45 ------ .../main/java/com/blankj/bus/BusPlugin.groovy | 3 +- .../main/java/com/blankj/bus/BusScan.groovy | 5 - .../java/com/blankj/bus/BusTransform.groovy | 129 +++++++++++------- .../com/blankj/bus/BusUtilsClassVisitor.java | 79 ----------- .../main/java/com/blankj/bus/Config.groovy | 1 + .../src/test/java/com/blankj/bus/BusTest.java | 16 +-- 18 files changed, 183 insertions(+), 242 deletions(-) delete mode 100755 plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy delete mode 100644 plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusUtilsClassVisitor.java diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 36fcbfeb86..e4718dff4d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java index 269c384d3b..e6aec5f30a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java @@ -2,6 +2,7 @@ import android.util.Log; +import java.io.IOException; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -9,6 +10,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -28,8 +31,9 @@ */ public final class BusUtils { - private static final Object NULL = "nULl"; - private static final String TAG = "BusUtils"; + private static final Object NULL = "nULl"; + private static final String TAG = "BusUtils"; + private static final String PREFIX = "blankj.bus/"; private final Map> mTag_BusInfoListMap = new HashMap<>(); @@ -38,24 +42,65 @@ public final class BusUtils { private final Map> mClassName_Tag_Arg4StickyMap = new ConcurrentHashMap<>(); private BusUtils() { - init(); + try { + String[] tags = Utils.getApp().getAssets().list(PREFIX); + if (tags == null || tags.length == 0) { + Log.w(TAG, "no bus"); + return; + } + for (String tag : tags) { + String[] busInfos = Utils.getApp().getAssets().list(PREFIX + tag); + if (busInfos == null || busInfos.length == 0) { + Log.w(TAG, "The tag of <" + tag + "> no bus."); + continue; + } + for (String busInfo : busInfos) { + parseBusInfo(tag, busInfo); + } + sortBusByPriority(tag); + } + } catch (IOException e) { + e.printStackTrace(); + } } - /** - * It'll be injected the bus who have {@link Bus} annotation - * by function of {@link BusUtils#registerBus} when execute transform task. - */ - private void init() {/*inject*/} + private void parseBusInfo(String tag, String busInfo) { + String[] split = busInfo.split("-"); + if (split.length != 7) { + Log.e(TAG, "The tag of <" + tag + ">'s bus <" + busInfo + "> which format is wrong."); + return; + } + String className = split[0]; + String funName = split[1]; + String paramType = split[2]; + String paramName = split[3]; + boolean sticky = Boolean.parseBoolean(split[4]); + String threadMode = split[5]; + int priority; + try { + priority = Integer.parseInt(split[6]); + } catch (NumberFormatException e) { + Log.e(TAG, "The tag of <" + tag + ">'s bus <" + busInfo + "> which format is wrong."); + return; + } + registerBusInner(tag, className, funName, paramType, paramName, sticky, threadMode, priority); + } - private void registerBus(String tag, - String className, String funName, String paramType, String paramName, - boolean sticky, String threadMode) { - registerBus(tag, className, funName, paramType, paramName, sticky, threadMode, 0); + private void sortBusByPriority(String tag) { + List busInfoList = mTag_BusInfoListMap.get(tag); + if (busInfoList != null && busInfoList.size() > 1) { + Collections.sort(busInfoList, new Comparator() { + @Override + public int compare(BusInfo o0, BusInfo o1) { + return o1.priority - o0.priority; + } + }); + } } - private void registerBus(String tag, - String className, String funName, String paramType, String paramName, - boolean sticky, String threadMode, int priority) { + private void registerBusInner(String tag, + String className, String funName, String paramType, String paramName, + boolean sticky, String threadMode, int priority) { List busInfoList = mTag_BusInfoListMap.get(tag); if (busInfoList == null) { busInfoList = new ArrayList<>(); @@ -64,6 +109,12 @@ private void registerBus(String tag, busInfoList.add(new BusInfo(className, funName, paramType, paramName, sticky, threadMode, priority)); } + public static void registerBus(String tag, + String className, String funName, String paramType, String paramName, + boolean sticky, String threadMode, int priority) { + getInstance().registerBusInner(tag, className, funName, paramType, paramName, sticky, threadMode, priority); + } + public static void register(final Object bus) { getInstance().registerInner(bus); } @@ -128,7 +179,7 @@ private void registerInner(final Object bus) { try { if (Class.forName(busInfo.className).isAssignableFrom(aClass)) { tags.add(entry.getKey()); - busInfo.classNames.add(className); + busInfo.subClassNames.add(className); } } catch (ClassNotFoundException e) { e.printStackTrace(); @@ -179,6 +230,9 @@ private void postInner(final String tag, final Object arg, final boolean sticky) if (busInfo.method == null) { Method method = getMethodByBusInfo(busInfo); if (method == null) { + Log.e(TAG, "The bus of tag <" + tag + ">'s method <" + busInfo.funName + + ("".equals(busInfo.paramType) ? "()" : ("(" + busInfo.paramType + " " + busInfo.paramName + ")")) + + "> is not exists."); return; } busInfo.method = method; @@ -255,8 +309,8 @@ public void run() { private void realInvokeMethod(final String tag, Object arg, BusInfo busInfo, boolean sticky) { Set buses = new HashSet<>(); - for (String className : busInfo.classNames) { - Set subBuses = mClassName_BusesMap.get(className); + for (String subClassName : busInfo.subClassNames) { + Set subBuses = mClassName_BusesMap.get(subClassName); if (subBuses != null && !subBuses.isEmpty()) { buses.addAll(subBuses); } @@ -341,7 +395,7 @@ private static final class BusInfo { String threadMode; int priority; Method method; - List classNames; + List subClassNames; BusInfo(String className, String funName, String paramType, String paramName, boolean sticky, String threadMode, int priority) { @@ -352,7 +406,7 @@ private static final class BusInfo { this.sticky = sticky; this.threadMode = threadMode; this.priority = priority; - this.classNames = new CopyOnWriteArrayList<>(); + this.subClassNames = new CopyOnWriteArrayList<>(); } @Override diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java index f39c32661e..a0bc3cf3ea 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java @@ -15,7 +15,7 @@ public class ApiUtilsTest extends BaseTest { @Before public void setUp() throws Exception { - ApiUtils.register(TestApiImpl.class); + ApiUtils.registerApi(TestApiImpl.class); } @Test diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java index ba2d6097e1..abf00d3a9b 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java @@ -1,7 +1,7 @@ package com.blankj.utilcode.util; import android.support.annotation.NonNull; -import java.util.concurrent.Executor; + import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -9,6 +9,8 @@ import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowLog; +import java.util.concurrent.Executor; + /** *
  *     author: Blankj
@@ -18,7 +20,7 @@
  * 
*/ @RunWith(RobolectricTestRunner.class) -@Config(manifest = Config.NONE, shadows = { ShadowLog.class }) +@Config(manifest = Config.NONE, shadows = {ShadowLog.class}) public class BaseTest { @BusUtils.Bus(tag = "base") diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java index 89877a1314..0ae721c396 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java @@ -3,12 +3,7 @@ import org.junit.Before; import org.junit.Test; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; /** *
@@ -83,16 +78,15 @@ public void singleFun(CountDownLatch latch) {
 
     @Before
     public void setUp() throws Exception {
-        ReflectUtils getInstance = ReflectUtils.reflect(BusUtils.class).method("getInstance");
-        getInstance.method("registerBus", TAG_NO_PARAM, BusUtilsTest.class.getName(), "noParamFun", "", "", false, "POSTING");
-        getInstance.method("registerBus", TAG_ONE_PARAM, BusUtilsTest.class.getName(), "oneParamFun", String.class.getName(), "param", false, "POSTING");
-        getInstance.method("registerBus", TAG_NO_PARAM_STICKY, BusUtilsTest.class.getName(), "noParamStickyFun", "", "", true, "POSTING");
-        getInstance.method("registerBus", TAG_ONE_PARAM_STICKY, BusUtilsTest.class.getName(), "oneParamStickyFun", Callback.class.getName(), "callback", true, "POSTING");
-
-        getInstance.method("registerBus", TAG_IO, BusUtilsTest.class.getName(), "ioFun", CountDownLatch.class.getName(), "latch", false, "IO");
-        getInstance.method("registerBus", TAG_CPU, BusUtilsTest.class.getName(), "cpuFun", CountDownLatch.class.getName(), "latch", false, "CPU");
-        getInstance.method("registerBus", TAG_CACHED, BusUtilsTest.class.getName(), "cachedFun", CountDownLatch.class.getName(), "latch", false, "CACHED");
-        getInstance.method("registerBus", TAG_SINGLE, BusUtilsTest.class.getName(), "singleFun", CountDownLatch.class.getName(), "latch", false, "SINGLE");
+        BusUtils.registerBus(TAG_NO_PARAM, BusUtilsTest.class.getName(), "noParamFun", "", "", false, "POSTING", 0);
+        BusUtils.registerBus(TAG_ONE_PARAM, BusUtilsTest.class.getName(), "oneParamFun", String.class.getName(), "param", false, "POSTING", 0);
+        BusUtils.registerBus(TAG_NO_PARAM_STICKY, BusUtilsTest.class.getName(), "noParamStickyFun", "", "", true, "POSTING", 0);
+        BusUtils.registerBus(TAG_ONE_PARAM_STICKY, BusUtilsTest.class.getName(), "oneParamStickyFun", Callback.class.getName(), "callback", true, "POSTING", 0);
+
+        BusUtils.registerBus(TAG_IO, BusUtilsTest.class.getName(), "ioFun", CountDownLatch.class.getName(), "latch", false, "IO", 0);
+        BusUtils.registerBus(TAG_CPU, BusUtilsTest.class.getName(), "cpuFun", CountDownLatch.class.getName(), "latch", false, "CPU", 0);
+        BusUtils.registerBus(TAG_CACHED, BusUtilsTest.class.getName(), "cachedFun", CountDownLatch.class.getName(), "latch", false, "CACHED", 0);
+        BusUtils.registerBus(TAG_SINGLE, BusUtilsTest.class.getName(), "singleFun", CountDownLatch.class.getName(), "latch", false, "SINGLE", 0);
     }
 
     @Test
diff --git a/plugin/bus-gradle-plugin/.gitignore b/plugin/bus-gradle-plugin/.gitignore
index 88d5a8b163..42afabfd2a 100755
--- a/plugin/bus-gradle-plugin/.gitignore
+++ b/plugin/bus-gradle-plugin/.gitignore
@@ -1,2 +1 @@
-/build
-BusUtils2333.class
\ No newline at end of file
+/build
\ No newline at end of file
diff --git a/plugin/bus-gradle-plugin/CHANGELOG.md b/plugin/bus-gradle-plugin/CHANGELOG.md
index b5e650c18a..69479ba134 100644
--- a/plugin/bus-gradle-plugin/CHANGELOG.md
+++ b/plugin/bus-gradle-plugin/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Change Log
 
+## v2.5
+更新注入模式为插入到 assets 文件中,不再往 BusUtils 中插入代码,为支持 adb install-multiple 作准备
+
 ## v2.4
 去除 gradle 版本依赖的问题
 
diff --git a/plugin/bus-gradle-plugin/README.md b/plugin/bus-gradle-plugin/README.md
index 0071e2e33c..d28163bc41 100644
--- a/plugin/bus-gradle-plugin/README.md
+++ b/plugin/bus-gradle-plugin/README.md
@@ -19,7 +19,7 @@
 buildscript {
     dependencies {
         ...
-        classpath 'com.blankj:bus-gradle-plugin:2.4'
+        classpath 'com.blankj:bus-gradle-plugin:2.5'
     }
 }
 ```
diff --git a/plugin/bus-gradle-plugin/build.gradle b/plugin/bus-gradle-plugin/build.gradle
index 44fd510bb9..76d9d575b4 100755
--- a/plugin/bus-gradle-plugin/build.gradle
+++ b/plugin/bus-gradle-plugin/build.gradle
@@ -29,6 +29,7 @@ dependencies {
     implementation gradleApi()
     implementation localGroovy()
 
+    testImplementation Config.depConfig.plugin_gradle.dep
     testImplementation Config.depConfig.test_junit.dep
 }
 
diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusExtension.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusExtension.groovy
index 14d296b2d7..994b51a567 100755
--- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusExtension.groovy
+++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusExtension.groovy
@@ -2,7 +2,6 @@ package com.blankj.bus;
 
 class BusExtension {
 
-    boolean abortOnError = true;
     String busUtilsClass = "com.blankj.utilcode.util.BusUtils";
     String onlyScanLibRegex = ""
     String jumpScanLibRegex = ""
@@ -10,8 +9,7 @@ class BusExtension {
     @Override
     String toString() {
         return "BusExtension { " +
-                "abortOnError: " + abortOnError +
-                ", busUtilsClass: " + busUtilsClass +
+                "busUtilsClass: " + busUtilsClass +
                 (onlyScanLibRegex == "" ? "" : ", onlyScanLibRegex: " + onlyScanLibRegex) +
                 (jumpScanLibRegex == "" ? "" : ", jumpScanLibRegex: " + jumpScanLibRegex) +
                 " }";
diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInfo.java b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInfo.java
index 060c5b866e..8b350d65ce 100644
--- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInfo.java
+++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInfo.java
@@ -31,6 +31,12 @@ public BusInfo(String className, String funName) {
         isParamSizeNoMoreThanOne = true;
     }
 
+    public String getFileDesc() {
+        return className + "-" + funName + "-"
+                + (paramsInfo.size() == 0 ? "-" : paramsInfo.get(0).className + "-" + paramsInfo.get(0).name) + "-"
+                + sticky + "-" + threadMode + "-" + priority;
+    }
+
     @Override
     public String toString() {
         String paramsInfoString = paramsInfo.toString();
diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy
deleted file mode 100755
index b0727700bc..0000000000
--- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.blankj.bus
-
-import com.blankj.bus.util.ZipUtils
-import org.apache.commons.io.FileUtils
-import org.objectweb.asm.ClassReader
-import org.objectweb.asm.ClassVisitor
-import org.objectweb.asm.ClassWriter
-
-class BusInject {
-
-    static void start(Map busMap, File busUtilsTransformFile, String busUtilsClass) {
-        if (busUtilsTransformFile.getPath().endsWith(".jar")) {
-            String jarPath = busUtilsTransformFile.getAbsolutePath()
-            String decompressedJarPath = jarPath.substring(0, jarPath.length() - 4);
-            File decompressedJar = new File(decompressedJarPath)
-            ZipUtils.unzipFile(busUtilsTransformFile, decompressedJar)
-
-            File busUtilsFile = new File(
-                    decompressedJarPath + Config.FILE_SEP +
-                            busUtilsClass.replace('.', Config.FILE_SEP) + '.class'
-            )
-
-            inject2BusUtils(busUtilsFile, busMap, busUtilsClass)
-
-            FileUtils.forceDelete(busUtilsTransformFile)
-            ZipUtils.zipFiles(Arrays.asList(decompressedJar.listFiles()), busUtilsTransformFile)
-            FileUtils.forceDelete(decompressedJar)
-        } else {
-            File apiUtilsFile = new File(
-                    busUtilsTransformFile.getAbsolutePath() + Config.FILE_SEP +
-                            busUtilsClass.replace('.', Config.FILE_SEP) + '.class'
-            )
-
-            inject2BusUtils(apiUtilsFile, busMap, busUtilsClass)
-        }
-    }
-
-    private static void inject2BusUtils(File apiUtilsFile, Map busMap, String busUtilsClass) {
-        ClassReader cr = new ClassReader(apiUtilsFile.bytes);
-        ClassWriter cw = new ClassWriter(cr, 0);
-        ClassVisitor cv = new BusUtilsClassVisitor(cw, busMap, busUtilsClass);
-        cr.accept(cv, ClassReader.SKIP_FRAMES);
-        FileUtils.writeByteArrayToFile(apiUtilsFile, cw.toByteArray())
-    }
-}
\ No newline at end of file
diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy
index c06c8bf499..3efaee802e 100755
--- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy
+++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy
@@ -1,7 +1,6 @@
 package com.blankj.bus
 
 import com.android.build.gradle.AppExtension
-import com.android.build.gradle.AppPlugin
 import com.blankj.bus.util.LogUtils
 import org.gradle.api.Plugin
 import org.gradle.api.Project
@@ -10,7 +9,7 @@ class BusPlugin implements Plugin {
 
     @Override
     void apply(Project project) {
-        if (project.plugins.hasPlugin(AppPlugin)) {
+        if (project.plugins.hasPlugin("com.android.application") || project.plugins.hasPlugin("com.android.dynamic-feature")) {
             LogUtils.init(project)
             LogUtils.l('project(' + project.toString() + ') apply bus gradle plugin!')
             project.extensions.create(Config.EXT_NAME, BusExtension)
diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy
index a08d53f202..1ca2b4cdea 100755
--- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy
+++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy
@@ -11,7 +11,6 @@ import org.objectweb.asm.ClassWriter
 class BusScan {
 
     Map> busMap = [:]
-    File busUtilsTransformFile
     String busUtilsClass
 
     BusScan(String busUtilsClass) {
@@ -52,10 +51,6 @@ class BusScan {
             def className = packagePath.replace(Config.FILE_SEP, ".")
             // delete .class
             className = className.substring(0, className.length() - 6)
-            if (busUtilsClass == className) {
-                busUtilsTransformFile = source
-                LogUtils.l(": $source")
-            }
 
             ClassReader cr = new ClassReader(file.bytes);
             ClassWriter cw = new ClassWriter(cr, 0);
diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy
index 1581a61fb7..fa75203b91 100755
--- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy
+++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy
@@ -4,6 +4,7 @@ import com.android.build.api.transform.*
 import com.android.build.gradle.internal.pipeline.TransformManager
 import com.blankj.bus.util.JsonUtils
 import com.blankj.bus.util.LogUtils
+import com.blankj.bus.util.ZipUtils
 import org.apache.commons.io.FileUtils
 import org.gradle.api.Project
 
@@ -24,7 +25,7 @@ class BusTransform extends Transform {
 
     @Override
     Set getInputTypes() {
-        return TransformManager.CONTENT_CLASS
+        return TransformManager.CONTENT_JARS
     }
 
     @Override
@@ -61,6 +62,8 @@ class BusTransform extends Transform {
 
         BusScan busScan = new BusScan(ext.busUtilsClass)
 
+        File javaResJar
+
         inputs.each { TransformInput input ->
             input.directoryInputs.each { DirectoryInput dirInput ->// 遍历文件夹
                 File dir = dirInput.file
@@ -89,6 +92,12 @@ class BusTransform extends Transform {
                 )
                 FileUtils.copyFile(jar, dest)
 
+                if (javaResJar == null && jarInput.contentTypes == TransformManager.CONTENT_RESOURCES) {
+                    LogUtils.l("resources jar: $jarName -> $dest")
+                    javaResJar = dest
+                    return
+                }
+
                 if (jumpScan(jarName, ext)) {
                     LogUtils.l("jump jar: $jarName -> $dest")
                     return
@@ -99,67 +108,83 @@ class BusTransform extends Transform {
             }
         }
 
-        if (busScan.busUtilsTransformFile != null) {
-            if (busScan.busMap.isEmpty()) {
-                LogUtils.l("no bus.")
+        if (busScan.busMap.isEmpty()) {
+            LogUtils.l("no bus.")
+        } else {
+            if (javaResJar == null) {
+                LogUtils.w("javaResJar didn't existed.")
             } else {
-                busScan.busMap.each { String tag, List infoList ->
-                    infoList.sort(new Comparator() {
-                        @Override
-                        int compare(BusInfo t0, BusInfo t1) {
-                            return t1.priority - t0.priority
-                        }
-                    })
-                }
+                print2__bus__(busScan, ext, jsonFile)
+                injectBuses2Assets(javaResJar, busScan)
+            }
+        }
 
-                Map> rightBus = [:]
-                Map> wrongBus = [:]
-                busScan.busMap.each { String tag, List infoList ->
-                    List rightInfoString = []
-                    List wrongInfoString = []
-                    infoList.each { BusInfo info ->
-                        if (info.isParamSizeNoMoreThanOne) {
-                            rightInfoString.add(info.toString())
-                        } else {
-                            wrongInfoString.add(info.toString())
-                        }
-                    }
-                    if (!rightInfoString.isEmpty()) {
-                        rightBus.put(tag, rightInfoString)
-                    }
-                    if (!wrongInfoString.isEmpty()) {
-                        wrongBus.put(tag, wrongInfoString)
-                    }
-                }
-                Map busDetails = [:]
-                busDetails.put("BusUtilsClass", ext.busUtilsClass)
-                busDetails.put("rightBus", rightBus)
-                busDetails.put("wrongBus", wrongBus)
-                String busJson = JsonUtils.getFormatJson(busDetails)
-                LogUtils.l(jsonFile.toString() + ": " + busJson)
-                FileUtils.write(jsonFile, busJson)
-
-                if (wrongBus.size() > 0) {
-                    if (ext.abortOnError) {
-                        throw new Exception("These buses is not right: " + wrongBus +
-                                "\n u can check it in file: " + jsonFile.toString())
-                    }
+        LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms")
+    }
+
+    private static void print2__bus__(BusScan busScan, BusExtension ext, File jsonFile) {
+        busScan.busMap.each { String tag, List infoList ->
+            infoList.sort(new Comparator() {
+                @Override
+                int compare(BusInfo t0, BusInfo t1) {
+                    return t1.priority - t0.priority
                 }
+            })
+        }
 
-                BusInject.start(busScan.busMap, busScan.busUtilsTransformFile, ext.busUtilsClass)
+        Map> rightBus = [:]
+        Map> wrongBus = [:]
+        busScan.busMap.each { String tag, List infoList ->
+            List rightInfoString = []
+            List wrongInfoString = []
+            infoList.each { BusInfo info ->
+                if (info.isParamSizeNoMoreThanOne && info.priority >= 0) {
+                    rightInfoString.add(info.toString())
+                } else {
+                    wrongInfoString.add(info.toString())
+                }
+            }
+            if (!rightInfoString.isEmpty()) {
+                rightBus.put(tag, rightInfoString)
+            }
+            if (!wrongInfoString.isEmpty()) {
+                wrongBus.put(tag, wrongInfoString)
             }
-        } else {
-            throw new Exception("No BusUtils of ${ext.busUtilsClass} in $mProject.")
         }
-
-        LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms")
+        Map busDetails = [:]
+        busDetails.put("BusUtilsClass", ext.busUtilsClass)
+        busDetails.put("rightBus", rightBus)
+        busDetails.put("wrongBus", wrongBus)
+        String busJson = JsonUtils.getFormatJson(busDetails)
+        LogUtils.l(jsonFile.toString() + ": " + busJson)
+        FileUtils.write(jsonFile, busJson)
+
+        if (wrongBus.size() > 0) {
+            throw new IllegalArgumentException("These buses is not right: " + wrongBus +
+                    "\n u can check it in file: " + jsonFile.toString())
+        }
     }
 
-    private static jumpScan(String jarName, BusExtension ext) {
-        if (jarName.contains("utilcode")) {
-            return false
+    private static void injectBuses2Assets(File javaResJar, BusScan busScan) {
+        String javaResPath = javaResJar.getAbsolutePath()
+        File unzipJavaResDir = new File(javaResPath.substring(0, javaResPath.lastIndexOf(".")))
+        unzipJavaResDir.mkdirs()
+        ZipUtils.unzipFile(javaResJar, unzipJavaResDir)
+        File busDir = new File(unzipJavaResDir, Config.BUS_PATH)
+        busDir.mkdirs()
+        busScan.busMap.each { String tag, List infoList ->
+            File busTagDir = new File(busDir, tag)
+            busTagDir.mkdir()
+            for (info in infoList) {
+                File busInfoFile = new File(busTagDir, info.getFileDesc())
+                busInfoFile.createNewFile()
+            }
         }
+        javaResJar.delete()
+        ZipUtils.zipFiles(Arrays.asList(unzipJavaResDir.listFiles()), javaResJar)
+    }
 
+    private static jumpScan(String jarName, BusExtension ext) {
         if (ext.onlyScanLibRegex != null && ext.onlyScanLibRegex.trim().length() > 0) {
             return !Pattern.matches(ext.onlyScanLibRegex, jarName)
         }
diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusUtilsClassVisitor.java b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusUtilsClassVisitor.java
deleted file mode 100644
index 97523cd645..0000000000
--- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusUtilsClassVisitor.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package com.blankj.bus;
-
-import org.objectweb.asm.AnnotationVisitor;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.commons.AdviceAdapter;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2019/07/09
- *     desc  :
- * 
- */ -public class BusUtilsClassVisitor extends ClassVisitor { - - private Map> mBusMap; - private String mBusUtilsClass; - - public BusUtilsClassVisitor(ClassVisitor classVisitor, Map> busMap, String busUtilsClass) { - super(Opcodes.ASM5, classVisitor); - mBusMap = busMap; - mBusUtilsClass = busUtilsClass.replace(".", "/"); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) { - if (!"init".equals(name)) { - return super.visitMethod(access, name, descriptor, signature, exceptions); - } - // 往 init() 函数中写入 - if (cv == null) return null; - MethodVisitor mv = cv.visitMethod(access, name, descriptor, signature, exceptions); - mv = new AdviceAdapter(Opcodes.ASM5, mv, access, name, descriptor) { - - @Override - public AnnotationVisitor visitAnnotation(String desc, boolean visible) { - return super.visitAnnotation(desc, visible); - } - - @Override - protected void onMethodEnter() { - super.onMethodEnter(); - } - - @Override - protected void onMethodExit(int opcode) { - super.onMethodExit(opcode); - for (Map.Entry> busEntry : mBusMap.entrySet()) { - List infoList = busEntry.getValue(); - for (BusInfo busInfo : infoList) { - if (!busInfo.isParamSizeNoMoreThanOne) continue; - mv.visitVarInsn(ALOAD, 0); - mv.visitLdcInsn(busEntry.getKey()); - mv.visitLdcInsn(busInfo.className); - mv.visitLdcInsn(busInfo.funName); - if (busInfo.paramsInfo.size() == 1) { - mv.visitLdcInsn(busInfo.paramsInfo.get(0).className); - mv.visitLdcInsn(busInfo.paramsInfo.get(0).name); - } else { - mv.visitLdcInsn(""); - mv.visitLdcInsn(""); - } - mv.visitInsn(busInfo.sticky ? ICONST_1 : ICONST_0); - mv.visitLdcInsn(busInfo.threadMode); - mv.visitIntInsn(SIPUSH, busInfo.priority); - mv.visitMethodInsn(INVOKESPECIAL, mBusUtilsClass, "registerBus", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;I)V", false); - } - } - } - }; - return mv; - } -} diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy index e52424affa..846b1daebd 100755 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy +++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy @@ -3,6 +3,7 @@ package com.blankj.bus class Config { public static final String EXT_NAME = 'bus' + public static final String BUS_PATH = "assets/blankj.bus" public static final List EXCLUDE_LIBS_START_WITH = [ 'com.android.support', diff --git a/plugin/bus-gradle-plugin/src/test/java/com/blankj/bus/BusTest.java b/plugin/bus-gradle-plugin/src/test/java/com/blankj/bus/BusTest.java index b3af21cddb..037af9bc86 100644 --- a/plugin/bus-gradle-plugin/src/test/java/com/blankj/bus/BusTest.java +++ b/plugin/bus-gradle-plugin/src/test/java/com/blankj/bus/BusTest.java @@ -1,13 +1,10 @@ package com.blankj.bus; - -import org.apache.commons.io.FileUtils; import org.junit.Test; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; -import java.io.File; import java.io.IOException; import java.util.Comparator; import java.util.HashMap; @@ -29,7 +26,7 @@ public class BusTest { private static final String TAG_NO_PARAM_STICKY = "TagNoParamSticky"; private static final String TAG_ONE_PARAM_STICKY = "TagOneParamSticky"; - private String[] arr = new String[]{"0", "1"}; + private String[] arr = new String[]{"0", "1"}; private String[] arr2 = new String[]{"0", "1"}; @BusUtils.Bus(tag = TAG_NO_PARAM) @@ -88,7 +85,7 @@ public String call() { @Test public void testInject() throws IOException { - inject2BusUtils(getBuses()); + getBuses(); } private static Map> getBuses() throws IOException { @@ -111,15 +108,6 @@ public int compare(BusInfo t0, BusInfo t1) { return busMap; } - private static void inject2BusUtils(Map> busMap) throws IOException { - ClassReader cr = new ClassReader(BusUtils.class.getName()); - ClassWriter cw = new ClassWriter(cr, 0); - ClassVisitor cv = new BusUtilsClassVisitor(cw, busMap, BusUtils.class.getName()); - cr.accept(cv, ClassReader.SKIP_FRAMES); - - FileUtils.writeByteArrayToFile(new File("BusUtils2333.class"), cw.toByteArray()); - } - public interface Callback { String call(); } From 2d09b624b02db68ed07701704fdeeea21662e3c0 Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Mon, 30 Dec 2019 23:07:01 +0800 Subject: [PATCH 014/122] see 12/30 log --- .gitignore | 3 +- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 8 ++--- config.json | 4 +-- .../java/com/blankj/main/pkg/MainActivity.kt | 5 +-- .../pkg/feature/shadow/ShadowActivity.kt | 2 +- lib/utilcode/README-CN.md | 9 +++-- lib/utilcode/README.md | 5 +++ lib/utilcode/build.gradle | 22 ++++++++++++ .../blankj/utilcode/util/ActivityUtils.java | 12 +++++++ .../com/blankj/utilcode/util/ApiUtils.java | 6 ++-- .../com/blankj/utilcode/util/JsonUtils.java | 9 ++++- .../blankj/utilcode/util/LanguageUtils.java | 28 ++++++++------- .../blankj/utilcode/util/ResourceUtils.java | 29 ++++++++------- .../com/blankj/utilcode/util/SpanUtils.java | 4 +-- .../com/blankj/utilcode/util/ThreadUtils.java | 8 +++++ plugin/api-gradle-plugin/.gitignore | 3 +- .../src/main/java/com/blankj/api/ApiInfo.java | 4 +++ .../java/com/blankj/api/ApiTransform.groovy | 36 +++++++++---------- .../test/java/com/blankj/api/ApiUtils.java | 11 ------ 20 files changed, 130 insertions(+), 79 deletions(-) diff --git a/.gitignore b/.gitignore index 94dfba6c2e..7b626d5177 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ local.properties /apk *.phrof /maven -/reports \ No newline at end of file +/reports +*/reports \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a75b7f74c..8cde8a8f6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `19/12/08` [add] Publish bus plugin v2.5. * `19/12/06` [add] Publish api plugin v1.3. * `19/11/30` [add] Publish bus plugin v2.4. Publish api plugin v1.2. * `19/11/28` [add] Publish v1.26.0. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 2f070d1b12..5b70ea8b37 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 28 static versionCode = 1_026_001 - static versionName = '1.26.1'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.26.1-alpha1'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.2' @@ -26,8 +26,8 @@ class Config { static depConfig = [ /*Never delete this line*/ /*Generated by "config.json"*/ - plugin_api_gradle_plugin : new DepConfig(false, true, ":plugin:api-gradle-plugin"), - plugin_bus_gradle_plugin : new DepConfig(false, true, ":plugin:bus-gradle-plugin"), + plugin_api_gradle_plugin : new DepConfig(true, true, ":plugin:api-gradle-plugin"), + plugin_bus_gradle_plugin : new DepConfig(true, true, ":plugin:bus-gradle-plugin"), feature_mock : new DepConfig(false, true, ":feature:mock"), feature_launcher_app : new DepConfig(true, true, ":feature:launcher:app"), feature_main_app : new DepConfig(false, true, ":feature:main:app"), @@ -55,7 +55,7 @@ class Config { // 本地上传成功之后 isApply = true 即可应用插件来调试,后续版本更新无需设置 isApply = false // 发布版本的话把 isApply = false, useLocal = false,更新版本号,发布成功后 isApply = true 即可使用远程库版本 plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.3", pluginId: "com.blankj.api"), - plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.4", pluginId: "com.blankj.bus"), + plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.5", pluginId: "com.blankj.bus"), support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$supportVersion"), support_design : new DepConfig("com.android.support:design:$supportVersion"), diff --git a/config.json b/config.json index 188e2ff509..2e75edcc97 100644 --- a/config.json +++ b/config.json @@ -5,8 +5,8 @@ "pkgConfig": [], "proConfigDesc": "proConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig", "proConfig": [ - {"isApply": false, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, - {"isApply": false, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, + {"isApply": true, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, + {"isApply": true, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, {"isApply": true, "useLocal": true, "localPath": ":feature:mock"}, {"isApply": true, "useLocal": true, "localPath": ":feature:launcher:app"}, {"isApply": true, "useLocal": true, "localPath": ":feature:main:app"}, diff --git a/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt b/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt index 228abbf0a5..cfe99f595d 100644 --- a/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt +++ b/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt @@ -9,10 +9,7 @@ import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.subutil.export.api.SubUtilApi import com.blankj.utilcode.export.api.UtilCodeApi -import com.blankj.utilcode.util.ActivityUtils -import com.blankj.utilcode.util.ApiUtils -import com.blankj.utilcode.util.BarUtils -import com.blankj.utilcode.util.CollectionUtils +import com.blankj.utilcode.util.* import kotlinx.android.synthetic.main.activity_main.* diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt index fc34e89e60..d2ddebcb09 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt @@ -41,7 +41,7 @@ class ShadowActivity : CommonActivity() { super.initView(savedInstanceState, contentView) ShadowUtils.apply(shadowRectView, Config().setShadowRadius(0.01f).setShadowColor(Color.BLUE, Color.GREEN)) ShadowUtils.apply(shadowRoundRectView, Config().setShadowRadius( - SizeUtils.dp2px(16f).toFloat()).setShadowColor(Color.RED, Color.BLUE)) + SizeUtils.dp2px(16f).toFloat())) ShadowUtils.apply(shadowCircleView, Config().setCircle().setShadowColor(Color.GREEN, Color.BLUE)) } } diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index a8c77bc6b8..8b27a2aaa0 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -578,8 +578,11 @@ clickBlankArea2HideSoftInput : 点击屏幕空白区域隐藏软键盘 * ### 语言相关 -> [LanguageUtils.java][language.java] -> [Demo][language.demo] ``` -applySystemLanguage: 应用系统语言 -applyLanguage : 应用语言 +applySystemLanguage : 应用系统语言 +applyLanguage : 应用语言 +isAppliedSystemLanguage: 判断是否使用系统语言 +isAppliedLanguage : 判断是否使用某语言 +getCurrentLocale : 获取当前语言 ``` * ### 日志相关 -> [LogUtils.java][log.java] -> [Demo][log.demo] @@ -1010,6 +1013,8 @@ toSBC : 转化为全角字符 * ### 线程相关 -> [ThreadUtils.java][thread.java] -> [Test][thread.test] ``` isMainThread : 判断当前是否主线程 +runOnUiThread : 运行在主线程 +runOnUiThreadDelayed : 延时运行在主线程 getFixedPool : 获取固定线程池 getSinglePool : 获取单线程池 getCachedPool : 获取缓冲线程池 diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index a982b784eb..664b337e03 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -580,6 +580,9 @@ clickBlankArea2HideSoftInput ``` applySystemLanguage applyLanguage +isAppliedSystemLanguage +isAppliedLanguage +getCurrentLocale ``` * ### About Log -> [LogUtils.java][log.java] -> [Demo][log.demo] @@ -1010,6 +1013,8 @@ toSBC * ### About Thread -> [ThreadUtils.java][thread.java] -> [Test][thread.test] ``` isMainThread +runOnUiThread +runOnUiThreadDelayed getFixedPool getSinglePool getCachedPool diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index f38995ed6e..c73b8cf41b 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -11,6 +11,28 @@ readme { readmeCnFile file('./README-CN.md') } +android { + compileSdkVersion Config.compileSdkVersion + defaultConfig { + minSdkVersion Config.minSdkVersion + versionCode Config.versionCode + versionName Config.versionName + consumerProguardFiles 'proguard-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + consumerProguardFiles 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } +} + dependencies { implementation Config.depConfig.gson.dep diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 8d3983fb5c..59e17b3594 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -20,6 +20,8 @@ import android.util.Log; import android.view.View; +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @@ -55,6 +57,16 @@ public static Activity getActivityByView(@NonNull View view) { */ public static Activity getActivityByContext(Context context) { if (context instanceof Activity) return (Activity) context; + if (context != null && context.getClass().getName().equals("com.android.internal.policy.DecorContext")) { + try { + Field mActivityContextField = context.getClass().getDeclaredField("mActivityContext"); + mActivityContextField.setAccessible(true); + //noinspection unchecked + return ((WeakReference) mActivityContextField.get(context)).get(); + } catch (Exception e) { + e.printStackTrace(); + } + } while (context instanceof ContextWrapper) { if (context instanceof Activity) { return (Activity) context; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java index 87b3babdef..7ed9184cd5 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java @@ -33,15 +33,15 @@ public final class ApiUtils { private ApiUtils() { } - private void registerImpl(Class implClass) { + private void registerApiInner(Class implClass) { if (implClass == null) return; Class superclass = implClass.getSuperclass(); if (superclass == null) return; mInjectApiImplMap.put(superclass, implClass); } - public static void register(Class implClass) { - getInstance().registerImpl(implClass); + public static void registerApi(Class implClass) { + getInstance().registerApiInner(implClass); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java index 55ac8803d1..5945b05807 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java @@ -1,12 +1,19 @@ package com.blankj.utilcode.util; - import android.util.Log; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +/** + *
+ *     author: Blankj
+ *     blog  : http://blankj.com
+ *     time  : 2019/01/07
+ *     desc  : utils about json
+ * 
+ */ public final class JsonUtils { private static final byte TYPE_BOOLEAN = 0x00; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java index bb29430d60..5d1b05af1e 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java @@ -1,7 +1,6 @@ package com.blankj.utilcode.util; import android.app.Activity; -import android.app.Application; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -10,6 +9,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.os.Build; +import android.os.Bundle; import android.support.annotation.NonNull; import android.text.TextUtils; import android.util.DisplayMetrics; @@ -36,23 +36,14 @@ private LanguageUtils() { } /** - * Apply the system language in the {@link Application#onCreate()}. + * Apply the system language. + * It will not restart Activity. u can put it in ur {@link Activity#onCreate(Bundle)}. */ - public static void applySystemLanguageInAppOnCreate() { + public static void applySystemLanguage() { if (isAppliedSystemLanguage()) return; applyLanguage(Resources.getSystem().getConfiguration().locale, "", true, false); } - /** - * Apply the language in the {@link Application#onCreate()}. - * - * @param locale The language of locale. - */ - public static void applyLanguageInAppOnCreate(@NonNull final Locale locale) { - if (isAppliedLanguage()) return; - applyLanguage(locale, "", false, false); - } - /** * Apply the system language. * @@ -71,6 +62,17 @@ public static void applySystemLanguage(final String activityClassName) { applyLanguage(Resources.getSystem().getConfiguration().locale, activityClassName, true, true); } + /** + * Apply the language. + * It will not restart Activity. u can put it in ur {@link Activity#onCreate(Bundle)}. + * + * @param locale The language of locale. + */ + public static void applyLanguage(@NonNull final Locale locale) { + if (isAppliedLanguage()) return; + applyLanguage(locale, "", false, false); + } + /** * Apply the language. * diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java index ae22d03d84..d6413d6269 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java @@ -191,25 +191,24 @@ public static String readAssets2String(final String assetsFilePath) { * @return the content of assets */ public static String readAssets2String(final String assetsFilePath, final String charsetName) { - InputStream is; try { - is = Utils.getApp().getAssets().open(assetsFilePath); + InputStream is = Utils.getApp().getAssets().open(assetsFilePath); + byte[] bytes = is2Bytes(is);// close stream in it + if (bytes == null) return null; + if (isSpace(charsetName)) { + return new String(bytes); + } else { + try { + return new String(bytes, charsetName); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + return ""; + } + } } catch (IOException e) { e.printStackTrace(); return null; } - byte[] bytes = is2Bytes(is); - if (bytes == null) return null; - if (isSpace(charsetName)) { - return new String(bytes); - } else { - try { - return new String(bytes, charsetName); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - return ""; - } - } } /** @@ -274,7 +273,7 @@ public static String readRaw2String(@RawRes final int resId) { */ public static String readRaw2String(@RawRes final int resId, final String charsetName) { InputStream is = Utils.getApp().getResources().openRawResource(resId); - byte[] bytes = is2Bytes(is); + byte[] bytes = is2Bytes(is);// close stream in it if (bytes == null) return null; if (isSpace(charsetName)) { return new String(bytes); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java index 7f00a06c67..67d11cdfc8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java @@ -1009,7 +1009,7 @@ static class CustomLineHeightSpan implements LineHeightSpan { @Override public void chooseHeight(final CharSequence text, final int start, final int end, final int spanstartv, final int v, final Paint.FontMetricsInt fm) { - LogUtils.e(fm, sfm); +// LogUtils.e(fm, sfm); if (sfm == null) { sfm = new Paint.FontMetricsInt(); sfm.top = fm.top; @@ -1049,7 +1049,7 @@ public void chooseHeight(final CharSequence text, final int start, final int end if (end == ((Spanned) text).getSpanEnd(this)) { sfm = null; } - LogUtils.e(fm, sfm); +// LogUtils.e(fm, sfm); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java index 6af32eb623..5c8b3bbcba 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java @@ -56,6 +56,14 @@ public static boolean isMainThread() { return Looper.myLooper() == Looper.getMainLooper(); } + public static void runOnUiThread(final Runnable runnable) { + Utils.runOnUiThread(runnable); + } + + public static void runOnUiThreadDelayed(final Runnable runnable, long delayMillis) { + Utils.runOnUiThreadDelayed(runnable, delayMillis); + } + /** * Return a thread pool that reuses a fixed number of threads * operating off a shared unbounded queue, using the provided diff --git a/plugin/api-gradle-plugin/.gitignore b/plugin/api-gradle-plugin/.gitignore index c351bdb35e..42afabfd2a 100755 --- a/plugin/api-gradle-plugin/.gitignore +++ b/plugin/api-gradle-plugin/.gitignore @@ -1,2 +1 @@ -/build -ApiUtils2333.class \ No newline at end of file +/build \ No newline at end of file diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInfo.java b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInfo.java index d6d9ccce5f..3546334a42 100644 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInfo.java +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInfo.java @@ -18,6 +18,10 @@ public ApiInfo(String implApiClass, boolean isMock) { this.isMock = isMock; } + public String getFileDesc() { + return implApiClass + "-" + isMock; + } + @Override public String toString() { return "{ implApiClass: " + implApiClass + diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy index 9291d0fa6d..9ddb4dd10a 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy @@ -116,31 +116,14 @@ class ApiTransform extends Transform { if (javaResJar == null) { LogUtils.w("javaResJar didn't existed.") } else { - injectApis2Assets(javaResJar, apiScan) print2__api__(apiScan, ext, jsonFile) + injectApis2Assets(javaResJar, apiScan) } } LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms") } - private static void injectApis2Assets(File javaResJar, ApiScan apiScan) { - String javaResPath = javaResJar.getAbsolutePath() - File unzipJavaResDir = new File(javaResPath.substring(0, javaResPath.lastIndexOf("."))) - unzipJavaResDir.mkdirs() - ZipUtils.unzipFile(javaResJar, unzipJavaResDir) - File apiDir = new File(unzipJavaResDir, Config.API_PATH) - apiDir.mkdirs() - apiScan.apiImplMap.each { key, value -> - File apiClassDir = new File(apiDir, key) - apiClassDir.mkdir() - File apiClassImplDir = new File(apiClassDir, value.implApiClass + "-" + value.isMock) - apiClassImplDir.createNewFile() - } - javaResJar.delete() - ZipUtils.zipFiles(Arrays.asList(unzipJavaResDir.listFiles()), javaResJar) - } - private static void print2__api__(ApiScan apiScan, ApiExtension ext, File jsonFile) { Map implApis = [:] List noImplApis = [] @@ -166,6 +149,23 @@ class ApiTransform extends Transform { } } + private static void injectApis2Assets(File javaResJar, ApiScan apiScan) { + String javaResPath = javaResJar.getAbsolutePath() + File unzipJavaResDir = new File(javaResPath.substring(0, javaResPath.lastIndexOf("."))) + unzipJavaResDir.mkdirs() + ZipUtils.unzipFile(javaResJar, unzipJavaResDir) + File apiDir = new File(unzipJavaResDir, Config.API_PATH) + apiDir.mkdirs() + apiScan.apiImplMap.each { key, value -> + File apiClassDir = new File(apiDir, key) + apiClassDir.mkdir() + File apiClassImplFile = new File(apiClassDir, value.getFileDesc()) + apiClassImplFile.createNewFile() + } + javaResJar.delete() + ZipUtils.zipFiles(Arrays.asList(unzipJavaResDir.listFiles()), javaResJar) + } + private static jumpScan(String jarName, ApiExtension ext) { if (ext.onlyScanLibRegex != null && ext.onlyScanLibRegex.trim().length() > 0) { return !Pattern.matches(ext.onlyScanLibRegex, jarName) diff --git a/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiUtils.java b/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiUtils.java index a8cf9237de..e0a81b0a6a 100644 --- a/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiUtils.java +++ b/plugin/api-gradle-plugin/src/test/java/com/blankj/api/ApiUtils.java @@ -26,17 +26,6 @@ public class ApiUtils { private Map mInjectApiImplMap = new HashMap<>(); private ApiUtils() { - init(); - } - - /** - * It'll be injected the implClasses who have {@link ApiUtils.Api} annotation - * by function of {@link ApiUtils#registerImpl} when execute transform task. - */ - private void init() {/*inject*/} - - private void registerImpl(Class implClass) { - mInjectApiImplMap.put(implClass.getSuperclass(), implClass); } /** From f799e70dbff2e759a20ec25ab3dd260276085f6e Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Mon, 6 Jan 2020 21:58:42 +0800 Subject: [PATCH 015/122] see 01/06 log --- buildSrc/src/main/groovy/Config.groovy | 6 +- config.json | 2 +- .../java/com/blankj/main/pkg/MainActivity.kt | 7 +- .../adaptScreen/AdaptScreenActivity.kt | 2 - .../java/com/blankj/base/rv/BaseItem.java | 10 + lib/common/src/main/assets/test_install | Bin 1800374 -> 0 bytes lib/utilcode/README-CN.md | 1 + lib/utilcode/src/main/AndroidManifest.xml | 4 +- .../blankj/utilcode/util/ActivityUtils.java | 2 +- .../com/blankj/utilcode/util/BarUtils.java | 2 +- .../com/blankj/utilcode/util/ClickUtils.java | 53 ++- .../com/blankj/utilcode/util/ImageUtils.java | 6 +- .../blankj/utilcode/util/PermissionUtils.java | 35 +- .../java/com/blankj/utilcode/util/Utils.java | 8 + .../reports/profile/css/base-style.css | 179 ---------- .../reports/profile/css/style.css | 4 - .../reports/profile/js/report.js | 194 ----------- .../profile/profile-2019-12-05-14-55-48.html | 317 ------------------ .../main/java/com/blankj/api/ApiPlugin.groovy | 8 +- 19 files changed, 115 insertions(+), 725 deletions(-) delete mode 100644 lib/common/src/main/assets/test_install delete mode 100644 plugin/api-gradle-plugin/reports/profile/css/base-style.css delete mode 100644 plugin/api-gradle-plugin/reports/profile/css/style.css delete mode 100644 plugin/api-gradle-plugin/reports/profile/js/report.js delete mode 100644 plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 5b70ea8b37..750c47b9a0 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 28 static versionCode = 1_026_001 - static versionName = '1.26.1-alpha1'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.26.1-alpha0'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.2' @@ -27,7 +27,7 @@ class Config { /*Never delete this line*/ /*Generated by "config.json"*/ plugin_api_gradle_plugin : new DepConfig(true, true, ":plugin:api-gradle-plugin"), - plugin_bus_gradle_plugin : new DepConfig(true, true, ":plugin:bus-gradle-plugin"), + plugin_bus_gradle_plugin : new DepConfig(false, true, ":plugin:bus-gradle-plugin"), feature_mock : new DepConfig(false, true, ":feature:mock"), feature_launcher_app : new DepConfig(true, true, ":feature:launcher:app"), feature_main_app : new DepConfig(false, true, ":feature:main:app"), @@ -54,7 +54,7 @@ class Config { // 本地第一次上传插件新的版本需设置 isApply = false, useLocal = true // 本地上传成功之后 isApply = true 即可应用插件来调试,后续版本更新无需设置 isApply = false // 发布版本的话把 isApply = false, useLocal = false,更新版本号,发布成功后 isApply = true 即可使用远程库版本 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.3", pluginId: "com.blankj.api"), + plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.3-release", pluginId: "com.blankj.api"), plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.5", pluginId: "com.blankj.bus"), support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$supportVersion"), diff --git a/config.json b/config.json index 2e75edcc97..5e2bb5cade 100644 --- a/config.json +++ b/config.json @@ -6,7 +6,7 @@ "proConfigDesc": "proConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig", "proConfig": [ {"isApply": true, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, - {"isApply": true, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, + {"isApply": false, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, {"isApply": true, "useLocal": true, "localPath": ":feature:mock"}, {"isApply": true, "useLocal": true, "localPath": ":feature:launcher:app"}, {"isApply": true, "useLocal": true, "localPath": ":feature:main:app"}, diff --git a/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt b/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt index cfe99f595d..650af50720 100644 --- a/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt +++ b/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt @@ -9,7 +9,10 @@ import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.subutil.export.api.SubUtilApi import com.blankj.utilcode.export.api.UtilCodeApi -import com.blankj.utilcode.util.* +import com.blankj.utilcode.util.ApiUtils +import com.blankj.utilcode.util.BarUtils +import com.blankj.utilcode.util.ClickUtils +import com.blankj.utilcode.util.CollectionUtils import kotlinx.android.synthetic.main.activity_main.* @@ -66,6 +69,6 @@ class MainActivity : CommonActivity() { } override fun onBackPressed() { - ActivityUtils.startHomeActivity() + ClickUtils.back2HomeFriendly("Press again to exit.") } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt index a6035dc038..9219c75bb5 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt @@ -3,8 +3,6 @@ package com.blankj.utilcode.pkg.feature.adaptScreen import android.content.Context import android.content.Intent import com.blankj.common.activity.CommonActivity -import com.blankj.common.activity.CommonActivityItemsView -import com.blankj.common.activity.CommonActivityTitleView import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.utilcode.pkg.R diff --git a/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java b/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java index 7ca2a573d4..3dff8d36d4 100644 --- a/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java +++ b/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java @@ -9,6 +9,8 @@ import android.view.View; import android.view.ViewGroup; +import java.util.List; + /** *
  *     author: Blankj
@@ -117,6 +119,14 @@ public void update() {
         getAdapter().updateItem((T) this);
     }
 
+    public List getItems() {
+        return getAdapter().getItems();
+    }
+
+    public int getCount() {
+        return getAdapter().getItemCount();
+    }
+
     public int getIndex() {
         //noinspection SuspiciousMethodCalls
         return getAdapter().getItems().indexOf(this);
diff --git a/lib/common/src/main/assets/test_install b/lib/common/src/main/assets/test_install
deleted file mode 100644
index 50afc3206adf23f037b0ff4590066c62f54a27c8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1800374
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 z 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%0ALZ{JJjZoc&HU!(9*cX}a>$s24c(MgJut@?Z7aO1 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

q!WN*c}n}hU2ny#p> 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

uo41iejmeVptF6Y?5hms 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 YXDH{7uSbjoG#w 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 EA9*9R4cm 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

WTdfy9hriH_RoY_zsJ>mR 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

(amV7<#vqMq@zHW&$fh`-t0Pcv| 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

xn#}#9xr^wVp~(zP!*?N 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

)?I) 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 EAImuiX#fBK diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 8b27a2aaa0..70e30cd682 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -272,6 +272,7 @@ applyPressedBgAlpha : 应用点击后对背景改变透明度 applyPressedBgDark : 应用点击后对背景加深 applySingleDebouncing : 对单视图应用防抖点击 applyGlobalDebouncing : 对所有设置 GlobalDebouncing 的视图应用防抖点击 +back2HomeFriendly : 友好地返回桌面 ClickUtils#OnDebouncingClickListener: 防抖点击监听器 ClickUtils#OnMultiClickListener : 连续点击监听器 ``` diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml index bc6ab22622..11c3f2ad51 100644 --- a/lib/utilcode/src/main/AndroidManifest.xml +++ b/lib/utilcode/src/main/AndroidManifest.xml @@ -21,7 +21,9 @@ android:resource="@xml/util_code_provider_paths" /> - + diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 59e17b3594..928a5398c5 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -1352,7 +1352,7 @@ public static void startActivities(@NonNull final Activity activity, /** * Start home activity. */ - public static void startHomeActivity() throws SecurityException { + public static void startHomeActivity() { Intent homeIntent = new Intent(Intent.ACTION_MAIN); homeIntent.addCategory(Intent.CATEGORY_HOME); homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index c6427c9cb8..46b8a66fa0 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -651,7 +651,7 @@ public static boolean isSupportNavBar() { */ public static void setNavBarLightMode(@NonNull final Activity activity, final boolean isLightMode) { - setStatusBarLightMode(activity.getWindow(), isLightMode); + setNavBarLightMode(activity.getWindow(), isLightMode); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java index 76b5d1d661..2ff6954abd 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java @@ -1,5 +1,6 @@ package com.blankj.utilcode.util; +import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -345,9 +346,55 @@ public void onDebouncingClick(View v) { } } - private static int dp2px(final float dpValue) { - final float scale = Resources.getSystem().getDisplayMetrics().density; - return (int) (dpValue * scale + 0.5f); + private static final long TIP_DURATION = 2000L; + private static long sLastClickMillis; + private static int sClickCount; + + public static void back2HomeFriendly(final CharSequence tip) { + back2HomeFriendly(tip, TIP_DURATION, Back2HomeFriendlyListener.DEFAULT); + } + + public static void back2HomeFriendly(@NonNull final CharSequence tip, + final long duration, + @NonNull Back2HomeFriendlyListener listener) { + long nowMillis = System.currentTimeMillis(); + if (nowMillis - sLastClickMillis < duration) { + sClickCount++; + if (sClickCount == 2) { + startHomeActivity(); + listener.dismiss(); + sLastClickMillis = 0; + } + } else { + sClickCount = 1; + listener.show(tip, duration); + sLastClickMillis = nowMillis; + } + } + + public interface Back2HomeFriendlyListener { + Back2HomeFriendlyListener DEFAULT = new Back2HomeFriendlyListener() { + @Override + public void show(CharSequence text, long duration) { + Utils.toastShowShort(text); + } + + @Override + public void dismiss() { + Utils.toastCancel(); + } + }; + + void show(CharSequence text, long duration); + + void dismiss(); + } + + private static void startHomeActivity() { + Intent homeIntent = new Intent(Intent.ACTION_MAIN); + homeIntent.addCategory(Intent.CATEGORY_HOME); + homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + Utils.getApp().startActivity(homeIntent); } public static abstract class OnDebouncingClickListener implements View.OnClickListener { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index c1b6c50f8f..24f7bf8d89 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -1557,7 +1557,7 @@ public static boolean isImage(final String filePath) { options.inJustDecodeBounds = true; try { Bitmap bitmap = BitmapFactory.decodeFile(filePath, options); - return options.outWidth != -1 && options.outHeight != -1; + return bitmap != null && options.outWidth != -1 && options.outHeight != -1; } catch (Exception e) { return false; } @@ -1942,8 +1942,8 @@ public static int[] getSize(File file) { * @return the sample size */ public static int calculateInSampleSize(final BitmapFactory.Options options, - final int maxWidth, - final int maxHeight) { + final int maxWidth, + final int maxHeight) { int height = options.outHeight; int width = options.outWidth; int inSampleSize = 1; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index 5afc46cf98..eb97f85c95 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -280,7 +280,7 @@ private void startPermissionActivity() { } @RequiresApi(api = Build.VERSION_CODES.M) - private boolean rationale(final Activity activity) { + private boolean rationale(final Activity activity, final Runnable againRunnable) { boolean isRationale = false; if (mOnRationaleListener != null) { for (String permission : mPermissionsRequest) { @@ -289,12 +289,12 @@ private boolean rationale(final Activity activity) { mOnRationaleListener.rationale(new ShouldRequest() { @Override public void again(boolean again) { - activity.finish(); if (again) { mPermissionsDenied = new ArrayList<>(); mPermissionsDeniedForever = new ArrayList<>(); - startPermissionActivity(); + againRunnable.run(); } else { + activity.finish(); requestCallback(); } } @@ -373,7 +373,7 @@ public Void call(Intent data) { } @Override - public void onCreated(Activity activity, @Nullable Bundle savedInstanceState) { + public void onCreated(final Activity activity, @Nullable Bundle savedInstanceState) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH); int type = activity.getIntent().getIntExtra(TYPE, -1); @@ -386,17 +386,15 @@ public void onCreated(Activity activity, @Nullable Bundle savedInstanceState) { if (sInstance.mThemeCallback != null) { sInstance.mThemeCallback.onActivityCreate(activity); } - if (sInstance.rationale(activity)) { - return; - } - if (sInstance.mPermissionsRequest != null) { - int size = sInstance.mPermissionsRequest.size(); - if (size <= 0) { - activity.finish(); - return; + if (sInstance.rationale(activity, new Runnable() { + @Override + public void run() { + requestPermissions(activity); } - activity.requestPermissions(sInstance.mPermissionsRequest.toArray(new String[size]), 1); + })) { + return; } + requestPermissions(activity); } else if (type == TYPE_WRITE_SETTINGS) { startWriteSettingsActivity(activity, TYPE_WRITE_SETTINGS); } else if (type == TYPE_DRAW_OVERLAYS) { @@ -407,6 +405,17 @@ public void onCreated(Activity activity, @Nullable Bundle savedInstanceState) { } } + private void requestPermissions(Activity activity) { + if (sInstance.mPermissionsRequest != null) { + int size = sInstance.mPermissionsRequest.size(); + if (size <= 0) { + activity.finish(); + return; + } + activity.requestPermissions(sInstance.mPermissionsRequest.toArray(new String[size]), 1); + } + } + @Override public void onRequestPermissionsResult(Activity activity, int requestCode, diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java index e959630133..e484f4ec10 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java @@ -210,6 +210,14 @@ static SPUtils getSpUtils4Utils() { return SPUtils.getInstance("Utils"); } + static void toastShowShort(final CharSequence text) { + ToastUtils.showShort(text); + } + + static void toastCancel() { + ToastUtils.cancel(); + } + /////////////////////////////////////////////////////////////////////////// // private method /////////////////////////////////////////////////////////////////////////// diff --git a/plugin/api-gradle-plugin/reports/profile/css/base-style.css b/plugin/api-gradle-plugin/reports/profile/css/base-style.css deleted file mode 100644 index 4afa73e3dd..0000000000 --- a/plugin/api-gradle-plugin/reports/profile/css/base-style.css +++ /dev/null @@ -1,179 +0,0 @@ - -body { - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 12pt; -} - -body, a, a:visited { - color: #303030; -} - -#content { - padding-left: 50px; - padding-right: 50px; - padding-top: 30px; - padding-bottom: 30px; -} - -#content h1 { - font-size: 160%; - margin-bottom: 10px; -} - -#footer { - margin-top: 100px; - font-size: 80%; - white-space: nowrap; -} - -#footer, #footer a { - color: #a0a0a0; -} - -#line-wrapping-toggle { - vertical-align: middle; -} - -#label-for-line-wrapping-toggle { - vertical-align: middle; -} - -ul { - margin-left: 0; -} - -h1, h2, h3 { - white-space: nowrap; -} - -h2 { - font-size: 120%; -} - -ul.tabLinks { - padding-left: 0; - padding-top: 10px; - padding-bottom: 10px; - overflow: auto; - min-width: 800px; - width: auto !important; - width: 800px; -} - -ul.tabLinks li { - float: left; - height: 100%; - list-style: none; - padding-left: 10px; - padding-right: 10px; - padding-top: 5px; - padding-bottom: 5px; - margin-bottom: 0; - -moz-border-radius: 7px; - border-radius: 7px; - margin-right: 25px; - border: solid 1px #d4d4d4; - background-color: #f0f0f0; -} - -ul.tabLinks li:hover { - background-color: #fafafa; -} - -ul.tabLinks li.selected { - background-color: #c5f0f5; - border-color: #c5f0f5; -} - -ul.tabLinks a { - font-size: 120%; - display: block; - outline: none; - text-decoration: none; - margin: 0; - padding: 0; -} - -ul.tabLinks li h2 { - margin: 0; - padding: 0; -} - -div.tab { -} - -div.selected { - display: block; -} - -div.deselected { - display: none; -} - -div.tab table { - min-width: 350px; - width: auto !important; - width: 350px; - border-collapse: collapse; -} - -div.tab th, div.tab table { - border-bottom: solid #d0d0d0 1px; -} - -div.tab th { - text-align: left; - white-space: nowrap; - padding-left: 6em; -} - -div.tab th:first-child { - padding-left: 0; -} - -div.tab td { - white-space: nowrap; - padding-left: 6em; - padding-top: 5px; - padding-bottom: 5px; -} - -div.tab td:first-child { - padding-left: 0; -} - -div.tab td.numeric, div.tab th.numeric { - text-align: right; -} - -span.code { - display: inline-block; - margin-top: 0em; - margin-bottom: 1em; -} - -span.code pre { - font-size: 11pt; - padding-top: 10px; - padding-bottom: 10px; - padding-left: 10px; - padding-right: 10px; - margin: 0; - background-color: #f7f7f7; - border: solid 1px #d0d0d0; - min-width: 700px; - width: auto !important; - width: 700px; -} - -span.wrapped pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-all; -} - -label.hidden { - display: none; -} \ No newline at end of file diff --git a/plugin/api-gradle-plugin/reports/profile/css/style.css b/plugin/api-gradle-plugin/reports/profile/css/style.css deleted file mode 100644 index c4a4239337..0000000000 --- a/plugin/api-gradle-plugin/reports/profile/css/style.css +++ /dev/null @@ -1,4 +0,0 @@ - -div.tab td.indentPath { - padding-left: 3em; -} diff --git a/plugin/api-gradle-plugin/reports/profile/js/report.js b/plugin/api-gradle-plugin/reports/profile/js/report.js deleted file mode 100644 index 83bab4a19f..0000000000 --- a/plugin/api-gradle-plugin/reports/profile/js/report.js +++ /dev/null @@ -1,194 +0,0 @@ -(function (window, document) { - "use strict"; - - var tabs = {}; - - function changeElementClass(element, classValue) { - if (element.getAttribute("className")) { - element.setAttribute("className", classValue); - } else { - element.setAttribute("class", classValue); - } - } - - function getClassAttribute(element) { - if (element.getAttribute("className")) { - return element.getAttribute("className"); - } else { - return element.getAttribute("class"); - } - } - - function addClass(element, classValue) { - changeElementClass(element, getClassAttribute(element) + " " + classValue); - } - - function removeClass(element, classValue) { - changeElementClass(element, getClassAttribute(element).replace(classValue, "")); - } - - function initTabs() { - var container = document.getElementById("tabs"); - - tabs.tabs = findTabs(container); - tabs.titles = findTitles(tabs.tabs); - tabs.headers = findHeaders(container); - tabs.select = select; - tabs.deselectAll = deselectAll; - tabs.select(0); - - return true; - } - - function getCheckBox() { - return document.getElementById("line-wrapping-toggle"); - } - - function getLabelForCheckBox() { - return document.getElementById("label-for-line-wrapping-toggle"); - } - - function findCodeBlocks() { - var spans = document.getElementById("tabs").getElementsByTagName("span"); - var codeBlocks = []; - for (var i = 0; i < spans.length; ++i) { - if (spans[i].className.indexOf("code") >= 0) { - codeBlocks.push(spans[i]); - } - } - return codeBlocks; - } - - function forAllCodeBlocks(operation) { - var codeBlocks = findCodeBlocks(); - - for (var i = 0; i < codeBlocks.length; ++i) { - operation(codeBlocks[i], "wrapped"); - } - } - - function toggleLineWrapping() { - var checkBox = getCheckBox(); - - if (checkBox.checked) { - forAllCodeBlocks(addClass); - } else { - forAllCodeBlocks(removeClass); - } - } - - function initControls() { - if (findCodeBlocks().length > 0) { - var checkBox = getCheckBox(); - var label = getLabelForCheckBox(); - - checkBox.onclick = toggleLineWrapping; - checkBox.checked = false; - - removeClass(label, "hidden"); - } - } - - function switchTab() { - var id = this.id.substr(1); - - for (var i = 0; i < tabs.tabs.length; i++) { - if (tabs.tabs[i].id === id) { - tabs.select(i); - break; - } - } - - return false; - } - - function select(i) { - this.deselectAll(); - - changeElementClass(this.tabs[i], "tab selected"); - changeElementClass(this.headers[i], "selected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var h2 = document.createElement("H2"); - - h2.appendChild(document.createTextNode(this.titles[i])); - this.headers[i].appendChild(h2); - } - - function deselectAll() { - for (var i = 0; i < this.tabs.length; i++) { - changeElementClass(this.tabs[i], "tab deselected"); - changeElementClass(this.headers[i], "deselected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var a = document.createElement("A"); - - a.setAttribute("id", "ltab" + i); - a.setAttribute("href", "#tab" + i); - a.onclick = switchTab; - a.appendChild(document.createTextNode(this.titles[i])); - - this.headers[i].appendChild(a); - } - } - - function findTabs(container) { - return findChildElements(container, "DIV", "tab"); - } - - function findHeaders(container) { - var owner = findChildElements(container, "UL", "tabLinks"); - return findChildElements(owner[0], "LI", null); - } - - function findTitles(tabs) { - var titles = []; - - for (var i = 0; i < tabs.length; i++) { - var tab = tabs[i]; - var header = findChildElements(tab, "H2", null)[0]; - - header.parentNode.removeChild(header); - - if (header.innerText) { - titles.push(header.innerText); - } else { - titles.push(header.textContent); - } - } - - return titles; - } - - function findChildElements(container, name, targetClass) { - var elements = []; - var children = container.childNodes; - - for (var i = 0; i < children.length; i++) { - var child = children.item(i); - - if (child.nodeType === 1 && child.nodeName === name) { - if (targetClass && child.className.indexOf(targetClass) < 0) { - continue; - } - - elements.push(child); - } - } - - return elements; - } - - // Entry point. - - window.onload = function() { - initTabs(); - initControls(); - }; -} (window, window.document)); \ No newline at end of file diff --git a/plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html b/plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html deleted file mode 100644 index 29873c9bb7..0000000000 --- a/plugin/api-gradle-plugin/reports/profile/profile-2019-12-05-14-55-48.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - -Profile report - - - - - -

-

Profile report

- -
- -
-

Summary

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DescriptionDuration
Total Build Time1.907s
Startup0.028s
Settings and BuildSrc0.005s
Loading Projects0.101s
Configuring Projects-49.542s
Artifact Transforms0s
Task Execution0s
-
-
-

Configuration

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ProjectDuration
All projects-49.542s
:lib:base0.584s
:lib:utilcode0.237s
:0.124s
:lib:subutil0.072s
:plugin:api-gradle-plugin0.048s
:plugin:bus-gradle-plugin0.024s
:lib:utildebug0.020s
:lib:utildebug-no-op0.019s
:lib:common0.018s
:plugin0.001s
:feature0s
:feature:launcher0s
:feature:main0s
:feature:subutil0s
:feature:utilcode0s
:lib0s
:feature:launcher:app-50.689s
-
-
-

Dependency Resolution

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DependenciesDuration
All dependencies0.055s
:classpath0.050s
detachedConfiguration10.002s
:plugin:api-gradle-plugin:classpath0.001s
:plugin:bus-gradle-plugin:classpath0.001s
detachedConfiguration20.001s
-
-
-

Artifact Transforms

- - - - - - - - - - - -
TransformDuration
All transforms0s
-
-
-

Task Execution

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TaskDurationResult
:0s(total)
:feature0s(total)
:feature:launcher0s(total)
:feature:launcher:app0s(total)
:feature:main0s(total)
:feature:subutil0s(total)
:feature:utilcode0s(total)
:lib0s(total)
:lib:base0s(total)
:lib:common0s(total)
:lib:subutil0s(total)
:lib:utilcode0s(total)
:lib:utildebug0s(total)
:lib:utildebug-no-op0s(total)
:plugin0s(total)
:plugin:api-gradle-plugin0s(total)
:plugin:bus-gradle-plugin0s(total)
-
-
- -
- - diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy index 5cfb4eb845..43de8f5e4b 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy @@ -2,6 +2,7 @@ package com.blankj.api import com.android.build.gradle.AppExtension import com.blankj.api.util.LogUtils +import org.gradle.api.Action import org.gradle.api.Plugin import org.gradle.api.Project @@ -14,7 +15,12 @@ class ApiPlugin implements Plugin { LogUtils.l('project(' + project.toString() + ') apply api gradle plugin!') project.extensions.create(Config.EXT_NAME, ApiExtension) def android = project.extensions.getByType(AppExtension) - android.registerTransform(new ApiTransform(project)) + project.afterEvaluate(new Action() { + @Override + void execute(Project project1) { + project1.android.registerTransform(new ApiTransform(project1)) + } + }) } } } \ No newline at end of file From 7cd66ff07a81042151dff0e22edfe893ea98baf8 Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Mon, 20 Jan 2020 18:24:34 +0800 Subject: [PATCH 016/122] see 01/20 log --- buildApp.gradle | 6 +- buildSrc/src/main/groovy/Config.groovy | 10 +- buildSrc/src/main/groovy/ConfigUtils.groovy | 2 +- buildSrc/src/main/groovy/GitUtils.groovy | 132 ++++++++++++------ config.json | 2 +- lib/utilcode/README-CN.md | 1 + .../com/blankj/utilcode/util/ApiUtils.java | 76 +++++----- .../com/blankj/utilcode/util/AppUtils.java | 1 - .../com/blankj/utilcode/util/ClickUtils.java | 31 ++++ .../blankj/utilcode/util/KeyboardUtils.java | 29 +++- .../blankj/utilcode/util/MessengerUtils.java | 1 - .../java/com/blankj/utilcode/util/Utils.java | 2 - plugin/api-gradle-plugin/CHANGELOG.md | 7 +- .../main/java/com/blankj/api/ApiPlugin.groovy | 8 +- .../java/com/blankj/api/ApiTransform.groovy | 66 +++++---- .../main/java/com/blankj/api/Config.groovy | 2 +- .../java/com/blankj/bus/BusTransform.groovy | 67 +++++---- .../main/java/com/blankj/bus/Config.groovy | 2 +- 18 files changed, 278 insertions(+), 167 deletions(-) diff --git a/buildApp.gradle b/buildApp.gradle index e9cdd3ad72..afcb359808 100644 --- a/buildApp.gradle +++ b/buildApp.gradle @@ -2,12 +2,12 @@ apply { plugin "com.android.application" plugin "kotlin-android" plugin "kotlin-android-extensions" - if (Config.depConfig.plugin_bus.isApply) { - plugin Config.depConfig.plugin_bus.pluginId - } if (Config.depConfig.plugin_api.isApply) { plugin Config.depConfig.plugin_api.pluginId } + if (Config.depConfig.plugin_bus.isApply) { + plugin Config.depConfig.plugin_bus.pluginId + } } configSigning() diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 750c47b9a0..cd9d8c02f0 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -27,7 +27,7 @@ class Config { /*Never delete this line*/ /*Generated by "config.json"*/ plugin_api_gradle_plugin : new DepConfig(true, true, ":plugin:api-gradle-plugin"), - plugin_bus_gradle_plugin : new DepConfig(false, true, ":plugin:bus-gradle-plugin"), + plugin_bus_gradle_plugin : new DepConfig(true, true, ":plugin:bus-gradle-plugin"), feature_mock : new DepConfig(false, true, ":feature:mock"), feature_launcher_app : new DepConfig(true, true, ":feature:launcher:app"), feature_main_app : new DepConfig(false, true, ":feature:main:app"), @@ -54,8 +54,12 @@ class Config { // 本地第一次上传插件新的版本需设置 isApply = false, useLocal = true // 本地上传成功之后 isApply = true 即可应用插件来调试,后续版本更新无需设置 isApply = false // 发布版本的话把 isApply = false, useLocal = false,更新版本号,发布成功后 isApply = true 即可使用远程库版本 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.3-release", pluginId: "com.blankj.api"), - plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.5", pluginId: "com.blankj.bus"), + plugin_api : new DepConfig(isApply: false, useLocal: true, pluginPath: "com.blankj:api-gradle-plugin:1.3-r4", pluginId: "com.blankj.api"), + //./gradlew plugin:api-gradle-plugin:uploadArchives // 上传到本地 maven + //./gradlew plugin:api-gradle-plugin:bintrayUpload // 上传到 jcenter + plugin_bus : new DepConfig(isApply: true, useLocal: true, pluginPath: "com.blankj:bus-gradle-plugin:2.5", pluginId: "com.blankj.bus"), + //./gradlew plugin:bus-gradle-plugin:uploadArchives // 上传到本地 maven + //./gradlew plugin:bus-gradle-plugin:bintrayUpload // 上传到 jcenter support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$supportVersion"), support_design : new DepConfig("com.android.support:design:$supportVersion"), diff --git a/buildSrc/src/main/groovy/ConfigUtils.groovy b/buildSrc/src/main/groovy/ConfigUtils.groovy index 4fc02f91a7..59c21d61e0 100644 --- a/buildSrc/src/main/groovy/ConfigUtils.groovy +++ b/buildSrc/src/main/groovy/ConfigUtils.groovy @@ -14,10 +14,10 @@ import org.gradle.api.invocation.Gradle class ConfigUtils { static init(Gradle gradle) { + GitUtils.init(gradle) generateDep(gradle) addCommonGradle(gradle) TaskDurationUtils.init(gradle) - GitUtils.init(gradle) } /** diff --git a/buildSrc/src/main/groovy/GitUtils.groovy b/buildSrc/src/main/groovy/GitUtils.groovy index a78cb982d5..c2a1afd94c 100644 --- a/buildSrc/src/main/groovy/GitUtils.groovy +++ b/buildSrc/src/main/groovy/GitUtils.groovy @@ -14,62 +14,104 @@ import java.text.SimpleDateFormat */ class GitUtils { - private static String sCurBranchName; + private static Project rootProject; static void init(Gradle gradle) { - gradle.rootProject(new Action() { - @Override - void execute(Project project) { - sCurBranchName = getGitBranch() - addGitPushTask(project) - addGitPushAndMerge2MasterTask(project) - addGitNewBranchTask(project) + rootProject = gradle.rootProject + addGitHelpTask() +// gradle.rootProject(new Action() { +// @Override +// void execute(Project project) { +// addGitHelpTask() +// } +// }) + } + + static def addGitHelpTask() { + rootProject.task("gitHelp").doLast { + def commands = [ + " ############## input command code #################", + " # [1] Git Push #", + " # [2] Git Push And Merge to Master #", + " # [3] Git New Branch #", + " # [0] exit #", + " ###################################################", + ] + String commandTips = String.join(System.getProperty("line.separator"), commands) + while (true) { + GLog.l(commandTips) + Scanner scanner = new Scanner(System.in) + def input = scanner.next() + GLog.l(input) + switch (input) { + case "1": + gitPush() + break + case "2": + gitPushAndMerge2Master() + break + case "3": + gitNewBranch() + break + case "0": + return + } } - }) + } } - static def getGitBranch() { - return ShellUtils.execCmd('git symbolic-ref --short -q HEAD').successMsg + static void gitPush() { + String branchName = getGitBranch() + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd") + String date = simpleDateFormat.format(new Date()) + exeCmd( + "git add -A", + "git commit -m \"see $date log\"", + "git push origin $branchName" + ) } - static void addGitPushTask(Project project) { - project.task("gitPush").doLast { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd") - String date = simpleDateFormat.format(new Date()) - GLog.d(ShellUtils.execCmd([ - "git add -A", - "git commit -m \"see $date log\"", - "git push origin $sCurBranchName" - ] as String[])) - } + static void gitPushAndMerge2Master() { + String branchName = getGitBranch() + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd") + String date = simpleDateFormat.format(new Date()) + exeCmd( + "git add -A", + "git commit -m \"see $date log\"", + "git push origin $branchName", + "git checkout master", + "git merge $branchName", + "git push origin master", + "git checkout $branchName" + ) } - static void addGitPushAndMerge2MasterTask(Project project) { - project.task("gitPushAndMerge2Master").doLast { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd") - String date = simpleDateFormat.format(new Date()) - GLog.d(ShellUtils.execCmd([ - "git add -A", - "git commit -m \"see $date log\"", - "git push origin $sCurBranchName", - "git checkout master", - "git merge $sCurBranchName", - "git push origin master", - "git checkout $sCurBranchName", - ] as String[])) - } + static void gitNewBranch() { + exeCmd( + "git checkout master", + "git checkout -b ${Config.versionName}", + "git push origin ${Config.versionName}:${Config.versionName}", + ) } - static void addGitNewBranchTask(Project project) { - project.task("gitNewBranch").doLast { - GLog.d(ShellUtils.execCmd([ - "git checkout master", - "git checkout -b ${Config.versionName}", - "git push origin ${Config.versionName}:${Config.versionName}", - ] as String[])) + private static def getGitBranch() { + return exeCmd("git symbolic-ref --short -q HEAD") + } + + private static def exeCmd(String... cmds) { + String output = "" + for (def cmd in cmds) { + output = _exeCmd(cmd) } + return output + } + + private static def _exeCmd(String cmd) { + def output = new StringBuilder() + GLog.l("Execute command: ${cmd}") + def cmdResult = ShellUtils.execCmd(cmd) + GLog.l("$cmdResult") + return cmdResult.successMsg } } -// ./gradlew gitPush -// ./gradlew gitPushAndMerge2Master -// ./gradlew gitNewBranch +// ./gradlew gitHelp diff --git a/config.json b/config.json index 5e2bb5cade..2e75edcc97 100644 --- a/config.json +++ b/config.json @@ -6,7 +6,7 @@ "proConfigDesc": "proConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig", "proConfig": [ {"isApply": true, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, - {"isApply": false, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, + {"isApply": true, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, {"isApply": true, "useLocal": true, "localPath": ":feature:mock"}, {"isApply": true, "useLocal": true, "localPath": ":feature:launcher:app"}, {"isApply": true, "useLocal": true, "localPath": ":feature:main:app"}, diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 70e30cd682..31c20ab485 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -272,6 +272,7 @@ applyPressedBgAlpha : 应用点击后对背景改变透明度 applyPressedBgDark : 应用点击后对背景加深 applySingleDebouncing : 对单视图应用防抖点击 applyGlobalDebouncing : 对所有设置 GlobalDebouncing 的视图应用防抖点击 +expandClickArea : 扩大点击区域 back2HomeFriendly : 友好地返回桌面 ClickUtils#OnDebouncingClickListener: 防抖点击监听器 ClickUtils#OnMultiClickListener : 连续点击监听器 diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java index 7ed9184cd5..05b6aa9d2a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java @@ -27,23 +27,12 @@ public final class ApiUtils { private static final String PREFIX = "blankj.api/"; - private Map mApiMap = new ConcurrentHashMap<>(); - private Map mInjectApiImplMap = new HashMap<>(); + private Map apiClass_apiInstance_map = new ConcurrentHashMap<>(); + private Map apiClass_apiImplClass_map = new HashMap<>(); private ApiUtils() { } - private void registerApiInner(Class implClass) { - if (implClass == null) return; - Class superclass = implClass.getSuperclass(); - if (superclass == null) return; - mInjectApiImplMap.put(superclass, implClass); - } - - public static void registerApi(Class implClass) { - getInstance().registerApiInner(implClass); - } - /** * Get api. * @@ -64,7 +53,7 @@ public String toString() { getAllApis(); StringBuilder sb = new StringBuilder(); sb.append("ApiUtils {"); - for (Map.Entry entry : mInjectApiImplMap.entrySet()) { + for (Map.Entry entry : apiClass_apiImplClass_map.entrySet()) { sb.append("\n ") .append(entry.getKey().getName()) .append(": ") @@ -79,16 +68,16 @@ private static ApiUtils getInstance() { } private Result getApiInner(Class apiClass) { - BaseApi api = mApiMap.get(apiClass); - if (api == null) { + Object apiInstance = apiClass_apiInstance_map.get(apiClass); + if (apiInstance == null) { synchronized (this) { - api = mApiMap.get(apiClass); - if (api == null) { + apiInstance = apiClass_apiInstance_map.get(apiClass); + if (apiInstance == null) { Class implClass = getApiImplClass(apiClass); if (implClass != null) { try { - api = (BaseApi) implClass.newInstance(); - mApiMap.put(apiClass, api); + apiInstance = implClass.newInstance(); + apiClass_apiInstance_map.put(apiClass, apiInstance); } catch (Exception ignore) { Log.e(TAG, "The api of <" + implClass + "> has no parameterless constructor."); return null; @@ -101,11 +90,11 @@ private Result getApiInner(Class apiClass) { } } //noinspection unchecked - return (Result) api; + return (Result) apiInstance; } private Class getApiImplClass(Class apiClass) { - Class apiImplClass = mInjectApiImplMap.get(apiClass); + Class apiImplClass = apiClass_apiImplClass_map.get(apiClass); if (apiImplClass != null) return apiImplClass; try { String[] apiImpls = Utils.getApp().getAssets().list(PREFIX + apiClass.getName()); @@ -133,26 +122,39 @@ private Class getApiImplClass(Class apiClass) { return null; } apiImplClass = Class.forName(className); + return registerApiInner(apiClass, apiImplClass); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + private Class registerApiInner(Class apiClass, Class apiImplClass) { + if (apiImplClass == null) return null; + if (apiClass == null) { Class superclass = apiImplClass.getSuperclass(); - if (superclass != null) { - //noinspection unchecked - if (apiClass.isAssignableFrom(apiImplClass)) { - mInjectApiImplMap.put(apiClass, apiImplClass); - return apiImplClass; - } else { - Log.e(TAG, "<" + apiImplClass.getName() + ">'s superClass is <" - + superclass.getName() + ">, not <" + apiClass.getName() + ">"); - return null; - } - } else { - Log.e(TAG, "<" + apiImplClass.getName() + ">'s superClass is <" + - "null>, not <" + apiClass.getName() + ">"); + if (superclass == null) { + Log.e(TAG, "<" + apiImplClass.getName() + ">'s superClass is null"); return null; } - } catch (Exception e) { - e.printStackTrace(); + apiClass = superclass; + } + //noinspection unchecked + if (apiClass.isAssignableFrom(apiImplClass)) { + apiClass_apiImplClass_map.put(apiClass, apiImplClass); + return apiImplClass; + } else { + Log.e(TAG, "<" + apiImplClass.getName() + ">'s superClass is <" + + apiClass.getName() + ">, not <" + apiClass.getName() + ">"); return null; } + + } + + static void registerApi(Class implClass) { + getInstance().registerApiInner(null, implClass); } private void getAllApis() { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index 5685a0aac8..a7b9339f3e 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -152,7 +152,6 @@ public static boolean isAppInstalled(@NonNull final String pkgName) { try { return packageManager.getApplicationInfo(pkgName, 0) != null; } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); return false; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java index 2ff6954abd..6910ef8429 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java @@ -8,6 +8,7 @@ import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; +import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; @@ -16,8 +17,10 @@ import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.v4.view.ViewCompat; +import android.util.Log; import android.util.StateSet; import android.view.MotionEvent; +import android.view.TouchDelegate; import android.view.View; /** @@ -346,6 +349,34 @@ public void onDebouncingClick(View v) { } } + public static void expandClickArea(@NonNull final View view, final int expandSize) { + expandClickArea(view, expandSize, expandSize, expandSize, expandSize); + } + + public static void expandClickArea(@NonNull final View view, + final int expandSizeTop, + final int expandSizeLeft, + final int expandSizeRight, + final int expandSizeBottom) { + final View parentView = (View) view.getParent(); + if (parentView == null) { + Log.e("ClickUtils", "expandClickArea must have parent view."); + return; + } + parentView.post(new Runnable() { + @Override + public void run() { + final Rect rect = new Rect(); + view.getHitRect(rect); + rect.top -= expandSizeTop; + rect.bottom += expandSizeBottom; + rect.left -= expandSizeLeft; + rect.right += expandSizeRight; + parentView.setTouchDelegate(new TouchDelegate(rect, view)); + } + }); + } + private static final long TIP_DURATION = 2000L; private static long sLastClickMillis; private static int sClickCount; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index 4dbc6e1fa2..77a4d85632 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -36,6 +36,17 @@ private KeyboardUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } + /** + * Show the soft input. + */ + public static void showSoftInput() { + InputMethodManager imm = (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm == null) { + return; + } + imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); + } + /** * Show the soft input. */ @@ -93,7 +104,7 @@ public static void hideSoftInput(@NonNull final Activity activity) { if (focusView == null) { view = new EditText(activity); view.setTag("keyboardTagView"); - ((ViewGroup) decorView).addView(view, 0, 0); + ((ViewGroup) decorView).addView(view, 1, 1); } else { view = focusView; } @@ -114,6 +125,22 @@ public static void hideSoftInput(@NonNull final View view) { imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } + private static long millis; + + /** + * Hide the soft input. + * + * @param activity The activity. + */ + public static void hideSoftInputByToggle(final Activity activity) { + long nowMillis = System.currentTimeMillis(); + long delta = nowMillis - millis; + if (KeyboardUtils.isSoftInputVisible(activity) && delta > 500) { + KeyboardUtils.toggleSoftInput(); + } + millis = nowMillis; + } + /** * Toggle the soft input display or not. */ diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java index 80e6547fc1..d72e1b0300 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java @@ -135,7 +135,6 @@ private static boolean isAppInstalled(@NonNull final String pkgName) { try { return packageManager.getApplicationInfo(pkgName, 0) != null; } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); return false; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java index e484f4ec10..8205430742 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java @@ -66,7 +66,6 @@ public final class Utils { @SuppressLint("StaticFieldLeak") private static Application sApplication; - private Utils() { throw new UnsupportedOperationException("u can't instantiate me..."); } @@ -610,7 +609,6 @@ private void postStatus(final Activity activity, final boolean isForeground) { } private void setTopActivity(final Activity activity) { -// if (TransActivity.class == activity.getClass()) return; if (mActivityList.contains(activity)) { if (!mActivityList.getLast().equals(activity)) { mActivityList.remove(activity); diff --git a/plugin/api-gradle-plugin/CHANGELOG.md b/plugin/api-gradle-plugin/CHANGELOG.md index 27236b2b08..171ce45d1e 100644 --- a/plugin/api-gradle-plugin/CHANGELOG.md +++ b/plugin/api-gradle-plugin/CHANGELOG.md @@ -1,9 +1,12 @@ # Change Log -## v1.3 +## v1.4(2020/01/11) +优化插入到 assets 文件中的方式 + +## v1.3(2019/12/06) 更新注入模式为插入到 assets 文件中,不再往 ApiUtils 中插入代码,为支持 adb install-multiple 作准备 -## v1.2 +## v1.2(2020/11/30) 去除 gradle 版本依赖的问题 ## v1.1(2019/10/30) diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy index 43de8f5e4b..5cfb4eb845 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy @@ -2,7 +2,6 @@ package com.blankj.api import com.android.build.gradle.AppExtension import com.blankj.api.util.LogUtils -import org.gradle.api.Action import org.gradle.api.Plugin import org.gradle.api.Project @@ -15,12 +14,7 @@ class ApiPlugin implements Plugin { LogUtils.l('project(' + project.toString() + ') apply api gradle plugin!') project.extensions.create(Config.EXT_NAME, ApiExtension) def android = project.extensions.getByType(AppExtension) - project.afterEvaluate(new Action() { - @Override - void execute(Project project1) { - project1.android.registerTransform(new ApiTransform(project1)) - } - }) + android.registerTransform(new ApiTransform(project)) } } } \ No newline at end of file diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy index 9ddb4dd10a..062a649c25 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy @@ -1,10 +1,10 @@ package com.blankj.api import com.android.build.api.transform.* +import com.android.build.gradle.api.ApplicationVariant import com.android.build.gradle.internal.pipeline.TransformManager import com.blankj.api.util.JsonUtils import com.blankj.api.util.LogUtils -import com.blankj.api.util.ZipUtils import org.apache.commons.io.FileUtils import org.gradle.api.Project @@ -25,7 +25,7 @@ class ApiTransform extends Transform { @Override Set getInputTypes() { - return TransformManager.CONTENT_JARS + return TransformManager.CONTENT_CLASS } @Override @@ -63,8 +63,6 @@ class ApiTransform extends Transform { ApiScan apiScan = new ApiScan(ext.apiUtilsClass) - File javaResJar - inputs.each { TransformInput input -> input.directoryInputs.each { DirectoryInput dirInput ->// 遍历文件夹 File dir = dirInput.file @@ -93,12 +91,6 @@ class ApiTransform extends Transform { ) FileUtils.copyFile(jar, dest) - if (javaResJar == null && jarInput.contentTypes == TransformManager.CONTENT_RESOURCES) { - LogUtils.l("resources jar: $jarName -> $dest") - javaResJar = dest - return - } - if (jumpScan(jarName, ext)) { LogUtils.l("jump jar: $jarName -> $dest") return @@ -113,13 +105,9 @@ class ApiTransform extends Transform { if (apiScan.apiClasses.isEmpty()) { LogUtils.l("no api.") } else { - if (javaResJar == null) { - LogUtils.w("javaResJar didn't existed.") - } else { - print2__api__(apiScan, ext, jsonFile) - injectApis2Assets(javaResJar, apiScan) - } + print2__api__(apiScan, ext, jsonFile) } + processApiWithAssets(outputProvider, apiScan) LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms") } @@ -149,21 +137,39 @@ class ApiTransform extends Transform { } } - private static void injectApis2Assets(File javaResJar, ApiScan apiScan) { - String javaResPath = javaResJar.getAbsolutePath() - File unzipJavaResDir = new File(javaResPath.substring(0, javaResPath.lastIndexOf("."))) - unzipJavaResDir.mkdirs() - ZipUtils.unzipFile(javaResJar, unzipJavaResDir) - File apiDir = new File(unzipJavaResDir, Config.API_PATH) - apiDir.mkdirs() - apiScan.apiImplMap.each { key, value -> - File apiClassDir = new File(apiDir, key) - apiClassDir.mkdir() - File apiClassImplFile = new File(apiClassDir, value.getFileDesc()) - apiClassImplFile.createNewFile() + + private void processApiWithAssets(TransformOutputProvider outputProvider, ApiScan apiScan) { + def dest = outputProvider.getContentLocation( + Config.API_PATH, + TransformManager.CONTENT_CLASS, + TransformManager.PROJECT_ONLY, + Format.DIRECTORY + ) + + String variantName = "" + while (dest.getParentFile().getName() != getName()) { + variantName = dest.getParentFile().getName().capitalize() + variantName + dest = dest.getParentFile() + } + LogUtils.l("get variant name from ${getName()}Dir: " + variantName) + + mProject.android.applicationVariants.all { ApplicationVariant variant -> + if (variant.name.capitalize() == variantName) { + File assetsDir = variant.mergeAssetsProvider.get().outputDir.get().asFile + File apiDir = new File(assetsDir, Config.API_PATH) + apiDir.deleteDir() + if (!apiScan.apiImplMap.isEmpty()) { + apiDir.mkdirs() + LogUtils.l("${apiDir.getAbsolutePath()} -> api inject assets dir") + apiScan.apiImplMap.each { key, value -> + File apiClassDir = new File(apiDir, key) + apiClassDir.mkdir() + File apiClassImplFile = new File(apiClassDir, value.getFileDesc()) + apiClassImplFile.createNewFile() + } + } + } } - javaResJar.delete() - ZipUtils.zipFiles(Arrays.asList(unzipJavaResDir.listFiles()), javaResJar) } private static jumpScan(String jarName, ApiExtension ext) { diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy index fc7c6c4aee..9e7547434e 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy @@ -3,7 +3,7 @@ package com.blankj.api class Config { public static final String EXT_NAME = 'api' - public static final String API_PATH = "assets/blankj.api" + public static final String API_PATH = "blankj.api" public static final List EXCLUDE_LIBS_START_WITH = [ 'com.android.support', diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy index fa75203b91..4e6b3c80fb 100755 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy +++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy @@ -1,10 +1,10 @@ package com.blankj.bus import com.android.build.api.transform.* +import com.android.build.gradle.api.ApplicationVariant import com.android.build.gradle.internal.pipeline.TransformManager import com.blankj.bus.util.JsonUtils import com.blankj.bus.util.LogUtils -import com.blankj.bus.util.ZipUtils import org.apache.commons.io.FileUtils import org.gradle.api.Project @@ -25,7 +25,7 @@ class BusTransform extends Transform { @Override Set getInputTypes() { - return TransformManager.CONTENT_JARS + return TransformManager.CONTENT_CLASS } @Override @@ -62,8 +62,6 @@ class BusTransform extends Transform { BusScan busScan = new BusScan(ext.busUtilsClass) - File javaResJar - inputs.each { TransformInput input -> input.directoryInputs.each { DirectoryInput dirInput ->// 遍历文件夹 File dir = dirInput.file @@ -92,12 +90,6 @@ class BusTransform extends Transform { ) FileUtils.copyFile(jar, dest) - if (javaResJar == null && jarInput.contentTypes == TransformManager.CONTENT_RESOURCES) { - LogUtils.l("resources jar: $jarName -> $dest") - javaResJar = dest - return - } - if (jumpScan(jarName, ext)) { LogUtils.l("jump jar: $jarName -> $dest") return @@ -111,13 +103,9 @@ class BusTransform extends Transform { if (busScan.busMap.isEmpty()) { LogUtils.l("no bus.") } else { - if (javaResJar == null) { - LogUtils.w("javaResJar didn't existed.") - } else { - print2__bus__(busScan, ext, jsonFile) - injectBuses2Assets(javaResJar, busScan) - } + print2__bus__(busScan, ext, jsonFile) } + processBusWithAssets(outputProvider, busScan) LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms") } @@ -165,23 +153,40 @@ class BusTransform extends Transform { } } - private static void injectBuses2Assets(File javaResJar, BusScan busScan) { - String javaResPath = javaResJar.getAbsolutePath() - File unzipJavaResDir = new File(javaResPath.substring(0, javaResPath.lastIndexOf("."))) - unzipJavaResDir.mkdirs() - ZipUtils.unzipFile(javaResJar, unzipJavaResDir) - File busDir = new File(unzipJavaResDir, Config.BUS_PATH) - busDir.mkdirs() - busScan.busMap.each { String tag, List infoList -> - File busTagDir = new File(busDir, tag) - busTagDir.mkdir() - for (info in infoList) { - File busInfoFile = new File(busTagDir, info.getFileDesc()) - busInfoFile.createNewFile() + private void processBusWithAssets(TransformOutputProvider outputProvider, BusScan busScan) { + def dest = outputProvider.getContentLocation( + Config.BUS_PATH, + TransformManager.CONTENT_CLASS, + TransformManager.PROJECT_ONLY, + Format.DIRECTORY + ) + + String variantName = "" + while (dest.getParentFile().getName() != getName()) { + variantName = dest.getParentFile().getName().capitalize() + variantName + dest = dest.getParentFile() + } + LogUtils.l("get variant name from ${getName()}Dir: " + variantName) + + mProject.android.applicationVariants.all { ApplicationVariant variant -> + if (variant.name.capitalize() == variantName) { + File assetsDir = variant.mergeAssetsProvider.get().outputDir.get().asFile + File busDir = new File(assetsDir, Config.BUS_PATH) + busDir.deleteDir() + if (!busScan.busMap.isEmpty()) { + busDir.mkdirs() + LogUtils.l("${busDir.getAbsolutePath()} -> bus inject assets dir") + busScan.busMap.each { String tag, List infoList -> + File busTagDir = new File(busDir, tag) + busTagDir.mkdir() + for (info in infoList) { + File busInfoFile = new File(busTagDir, info.getFileDesc()) + busInfoFile.createNewFile() + } + } + } } } - javaResJar.delete() - ZipUtils.zipFiles(Arrays.asList(unzipJavaResDir.listFiles()), javaResJar) } private static jumpScan(String jarName, BusExtension ext) { diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy index 846b1daebd..358df862b6 100755 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy +++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy @@ -3,7 +3,7 @@ package com.blankj.bus class Config { public static final String EXT_NAME = 'bus' - public static final String BUS_PATH = "assets/blankj.bus" + public static final String BUS_PATH = "blankj.bus" public static final List EXCLUDE_LIBS_START_WITH = [ 'com.android.support', From 5f0b789f02095c99b3145817afad17590af9cc1b Mon Sep 17 00:00:00 2001 From: Blankj <625783482@qq.com> Date: Mon, 9 Mar 2020 02:12:32 +0800 Subject: [PATCH 017/122] see 03/09 log --- CHANGELOG.md | 4 ++ buildApp.gradle | 6 +- buildLib.gradle | 11 ++-- buildSrc/src/main/groovy/Config.groovy | 19 +++--- buildSrc/src/main/groovy/ConfigUtils.groovy | 6 +- buildSrc/src/main/groovy/DepConfig.groovy | 4 ++ buildSrc/src/main/groovy/GitUtils.groovy | 6 -- .../utilcode/pkg/helper/DialogHelper.kt | 2 +- lib/base/build.gradle | 1 - .../java/com/blankj/base/BaseApplication.java | 13 ---- lib/utilcode/README-CN.md | 6 +- lib/utilcode/README.md | 4 +- .../utilcode/constant/RegexConstants.java | 2 +- .../blankj/utilcode/util/ActivityUtils.java | 12 ++-- .../com/blankj/utilcode/util/BarUtils.java | 23 +++++-- .../com/blankj/utilcode/util/ClickUtils.java | 7 +- .../com/blankj/utilcode/util/DeviceUtils.java | 62 +++++++++++++++--- .../blankj/utilcode/util/KeyboardUtils.java | 18 +---- .../com/blankj/utilcode/util/SpanUtils.java | 34 ++++++++++ .../com/blankj/utilcode/util/ThreadUtils.java | 65 +++++++++++++++---- .../com/blankj/utilcode/util/ToastUtils.java | 4 +- .../java/com/blankj/utilcode/util/Utils.java | 18 ++--- .../com/blankj/utilcode/util/ZipUtils.java | 2 +- .../src/main/res/values-v21/styles.xml | 2 +- .../blankj/utilcode/util/ArrayUtilsTest.java | 4 +- .../blankj/utilcode/util/ThreadUtilsTest.java | 5 +- .../java/com/blankj/api/ApiTransform.groovy | 21 +++++- plugin/bus-gradle-plugin/CHANGELOG.md | 3 + .../java/com/blankj/bus/BusTransform.groovy | 10 ++- settings.gradle | 8 ++- 30 files changed, 261 insertions(+), 121 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cde8a8f6f..b1fb3458e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +* `20/01/20` [upd] Publish v1.26.1. +* `20/01/19` [add] Publish bus plugin v1.4. +* `20/01/18` [add] Publish api plugin v2.6. +* `20/01/17` [upd] Leak Canary to v2.1. * `19/12/08` [add] Publish bus plugin v2.5. * `19/12/06` [add] Publish api plugin v1.3. * `19/11/30` [add] Publish bus plugin v2.4. Publish api plugin v1.2. diff --git a/buildApp.gradle b/buildApp.gradle index afcb359808..ed13997bc5 100644 --- a/buildApp.gradle +++ b/buildApp.gradle @@ -67,8 +67,6 @@ android { dependencies { // LeakCanary debugImplementation Config.depConfig.leakcanary_android.dep - debugImplementation Config.depConfig.leakcanary_support_fragment.dep - releaseImplementation Config.depConfig.leakcanary_android_no_op.dep debugImplementation Config.depConfig.lib_utildebug.dep releaseImplementation Config.depConfig.lib_utildebug_no_op.dep @@ -84,8 +82,8 @@ dependencies { } def getSuffix() { - if (project.path == ":feature:launcher:app") return "" - return project.path.replace(":", "_").substring(":feature".length(), project.path.length() - ":app".length()) + if (project.path == ":feature_launcher_app") return "" + return "." + project.path.substring(":feature_".length(), project.path.length() - "_app".length()) } def configSigning() { diff --git a/buildLib.gradle b/buildLib.gradle index 6dc9b18b2b..e2ad034683 100644 --- a/buildLib.gradle +++ b/buildLib.gradle @@ -24,20 +24,19 @@ android { lintOptions { abortOnError false } -} -afterEvaluate { - generateReleaseBuildConfig.enabled = false - generateDebugBuildConfig.enabled = false +// viewBinding { +// enabled = true +// } } dependencies { - if (project.name == 'pkg' || project.name == 'mock') { + if (project.name.endsWith("_pkg") || project.name.endsWith("_mock")) { // if module's name equals 'pkg', api all of export for (def entrySet : ConfigUtils.getApplyExports().entrySet()) { api entrySet.value.dep } - } else if (project.name == 'export') { + } else if (project.name.endsWith("_export")) { api Config.depConfig.lib_common.dep } } \ No newline at end of file diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index cd9d8c02f0..643109c82b 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -11,17 +11,16 @@ class Config { static applicationId = 'com.blankj.androidutilcode' static appName = 'Util' - static compileSdkVersion = 28 + static compileSdkVersion = 29 static minSdkVersion = 14 - static targetSdkVersion = 28 + static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.26.1-alpha0'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.26.1-alpha3'// E.g. 1.9.72 => 1,009,072 // lib version - static gradlePluginVersion = '3.5.2' + static gradlePluginVersion = '3.5.0' static kotlinVersion = '1.3.50' static supportVersion = '28.0.0' - static leakcanaryVersion = '1.6.3' static depConfig = [ /*Never delete this line*/ @@ -54,10 +53,10 @@ class Config { // 本地第一次上传插件新的版本需设置 isApply = false, useLocal = true // 本地上传成功之后 isApply = true 即可应用插件来调试,后续版本更新无需设置 isApply = false // 发布版本的话把 isApply = false, useLocal = false,更新版本号,发布成功后 isApply = true 即可使用远程库版本 - plugin_api : new DepConfig(isApply: false, useLocal: true, pluginPath: "com.blankj:api-gradle-plugin:1.3-r4", pluginId: "com.blankj.api"), + plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.4-r1", pluginId: "com.blankj.api"), //./gradlew plugin:api-gradle-plugin:uploadArchives // 上传到本地 maven //./gradlew plugin:api-gradle-plugin:bintrayUpload // 上传到 jcenter - plugin_bus : new DepConfig(isApply: true, useLocal: true, pluginPath: "com.blankj:bus-gradle-plugin:2.5", pluginId: "com.blankj.bus"), + plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.6-r2", pluginId: "com.blankj.bus"), //./gradlew plugin:bus-gradle-plugin:uploadArchives // 上传到本地 maven //./gradlew plugin:bus-gradle-plugin:bintrayUpload // 上传到 jcenter @@ -68,9 +67,7 @@ class Config { kotlin : new DepConfig("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"), - leakcanary_android : new DepConfig("com.squareup.leakcanary:leakcanary-android:$leakcanaryVersion"), - leakcanary_android_no_op : new DepConfig("com.squareup.leakcanary:leakcanary-android-no-op:$leakcanaryVersion"), - leakcanary_support_fragment: new DepConfig("com.squareup.leakcanary:leakcanary-support-fragment:$leakcanaryVersion"), + leakcanary_android : new DepConfig("com.squareup.leakcanary:leakcanary-android:2.1"), free_proguard : new DepConfig("com.blankj:free-proguard:1.0.2"), swipe_panel : new DepConfig("com.blankj:swipe-panel:1.2"), @@ -86,7 +83,7 @@ class Config { photo_view : new DepConfig("com.github.chrisbanes:PhotoView:2.0.0"), test_junit : new DepConfig("junit:junit:4.12"), - test_robolectric : new DepConfig("org.robolectric:robolectric:4.2"), + test_robolectric : new DepConfig("org.robolectric:robolectric:4.3.1"), ] } //./gradlew clean :lib:utilcode:bintrayUpload \ No newline at end of file diff --git a/buildSrc/src/main/groovy/ConfigUtils.groovy b/buildSrc/src/main/groovy/ConfigUtils.groovy index 59c21d61e0..50e656fc96 100644 --- a/buildSrc/src/main/groovy/ConfigUtils.groovy +++ b/buildSrc/src/main/groovy/ConfigUtils.groovy @@ -14,10 +14,10 @@ import org.gradle.api.invocation.Gradle class ConfigUtils { static init(Gradle gradle) { - GitUtils.init(gradle) generateDep(gradle) addCommonGradle(gradle) TaskDurationUtils.init(gradle) + GitUtils.init(gradle) } /** @@ -47,10 +47,10 @@ class ConfigUtils { void beforeEvaluate(Project project) { // 在 project 的 build.gradle 前 do sth. if (project.subprojects.isEmpty()) { - if (project.path.contains(":plugin:")) { + if (project.name.startsWith("plugin")) { return } - if (project.name == "app") { + if (project.name.endsWith("_app")) { GLog.l(project.toString() + " applies buildApp.gradle") project.apply { from "${project.rootDir.path}/buildApp.gradle" diff --git a/buildSrc/src/main/groovy/DepConfig.groovy b/buildSrc/src/main/groovy/DepConfig.groovy index bbef6505d5..b680c08a35 100644 --- a/buildSrc/src/main/groovy/DepConfig.groovy +++ b/buildSrc/src/main/groovy/DepConfig.groovy @@ -75,6 +75,10 @@ class DepConfig { return splits.length == 3 ? splits[2] : null } + String getLocalPath() { + return ":" + localPath.replace(":", "_").substring(1) + } + @Override String toString() { return "{ isApply = ${getFlag(isApply)}" + diff --git a/buildSrc/src/main/groovy/GitUtils.groovy b/buildSrc/src/main/groovy/GitUtils.groovy index c2a1afd94c..f525377a79 100644 --- a/buildSrc/src/main/groovy/GitUtils.groovy +++ b/buildSrc/src/main/groovy/GitUtils.groovy @@ -19,12 +19,6 @@ class GitUtils { static void init(Gradle gradle) { rootProject = gradle.rootProject addGitHelpTask() -// gradle.rootProject(new Action() { -// @Override -// void execute(Project project) { -// addGitHelpTask() -// } -// }) } static def addGitHelpTask() { diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt index 91d89a4864..a9fbaa562d 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt @@ -88,7 +88,7 @@ object DialogHelper { contentView.findViewById(R.id.keyboardDialogCloseBtn).setOnClickListener(listener) dialog.dialog.setOnShowListener(DialogInterface.OnShowListener { - KeyboardUtils.fixAndroidBug5497(dialog.dialog.window) + KeyboardUtils.fixAndroidBug5497(dialog.dialog.window!!) }) } diff --git a/lib/base/build.gradle b/lib/base/build.gradle index e518eada92..20033bc3f0 100644 --- a/lib/base/build.gradle +++ b/lib/base/build.gradle @@ -12,5 +12,4 @@ dependencies { api Config.depConfig.swipe_panel.dep api Config.depConfig.eventbus_lib.dep compileOnly Config.depConfig.lib_utildebug_no_op.dep - compileOnly Config.depConfig.leakcanary_android_no_op.dep } \ No newline at end of file diff --git a/lib/base/src/main/java/com/blankj/base/BaseApplication.java b/lib/base/src/main/java/com/blankj/base/BaseApplication.java index 0925dfba3f..f6fa6774eb 100644 --- a/lib/base/src/main/java/com/blankj/base/BaseApplication.java +++ b/lib/base/src/main/java/com/blankj/base/BaseApplication.java @@ -8,7 +8,6 @@ import com.blankj.utilcode.util.CrashUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ProcessUtils; -import com.squareup.leakcanary.LeakCanary; import java.util.ArrayList; @@ -43,22 +42,10 @@ protected void attachBaseContext(Context base) { public void onCreate() { super.onCreate(); sInstance = this; - initLeakCanary(); initLog(); initCrash(); } - private void initLeakCanary() {// 内存泄露检查工具 - if (isDebug()) { - if (LeakCanary.isInAnalyzerProcess(this)) { - // This process is dedicated to LeakCanary for heap analysis. - // You should not init your app in this process. - return; - } - LeakCanary.install(this); - } - } - // init it in ur application public void initLog() { LogUtils.Config config = LogUtils.getConfig() diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 31c20ab485..6a05aa8ef3 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -13,7 +13,7 @@ implementation 'com.blankj:utilcodex:1.26.0' * ### Activity 相关 -> [ActivityUtils.java][activity.java] -> [Demo][activity.demo] ``` -getActivityByView : 根据视图获取 Activity +getAliveActivityByContext : 根据上下文获取存活的 Activity getActivityByContext : 根据上下文获取 Activity isActivityExists : 判断 Activity 是否存在 startActivity : 启动 Activity @@ -135,8 +135,8 @@ isNavBarVisible : 判断导航栏是否可见 setNavBarColor : 设置导航栏颜色 getNavBarColor : 获取导航栏颜色 isSupportNavBar : 判断是否支持导航栏 -setNavBarLightMode : 设置状态栏是否为浅色模式 -isNavBarLightMode : 判断状态栏是否为浅色模式 +setNavBarLightMode : 设置导航栏是否为浅色模式 +isNavBarLightMode : 判断导航栏是否为浅色模式 ``` * ### 亮度相关 -> [BrightnessUtils.java][brightness.java] -> [Demo][brightness.demo] diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 664b337e03..52b69c4ec2 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -13,7 +13,7 @@ implementation 'com.blankj:utilcodex:1.26.0' * ### About Activity -> [ActivityUtils.java][activity.java] -> [Demo][activity.demo] ``` -getActivityByView +getAliveActivityByContext getActivityByContext isActivityExists startActivity @@ -272,6 +272,8 @@ applyPressedBgAlpha applyPressedBgDark applySingleDebouncing applyGlobalDebouncing +expandClickArea +back2HomeFriendly ClickUtils#OnDebouncingClickListener ClickUtils#OnMultiClickListener ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java index 2af770e4b0..4da23d00d1 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java @@ -22,7 +22,7 @@ public final class RegexConstants { *

global star: 1349

*

virtual operator: 170

*/ - public static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[6])|(17[0,1,3,5-8])|(18[0-9])|(19[1,8,9]))\\d{8}$"; + public static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[57])|(15[0-35-9])|(16[6])|(17[0135-8])|(18[0-9])|(19[189]))\\d{8}$"; /** * Regex of telephone number. */ diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 928a5398c5..e5b49e193b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -40,13 +40,15 @@ private ActivityUtils() { } /** - * Return the activity by view. + * Return the activity by context. * - * @param view The view. - * @return the activity by view. + * @param context The context. + * @return the activity by context. */ - public static Activity getActivityByView(@NonNull View view) { - return getActivityByContext(view.getContext()); + public static Activity getAliveActivityByContext(Context context) { + Activity activity = getActivityByContext(context); + if (!isActivityAlive(activity)) return null; + return activity; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index 46b8a66fa0..c9c2cfcf36 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -25,6 +25,8 @@ import android.view.Window; import android.view.WindowManager; +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; import java.lang.reflect.Method; import static android.Manifest.permission.EXPAND_STATUS_BAR; @@ -272,7 +274,7 @@ public static View setStatusBarColor(@NonNull final Window window, public static void setStatusBarColor(@NonNull final View fakeStatusBar, @ColorInt final int color) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; - Activity activity = getActivityByView(fakeStatusBar); + Activity activity = getActivityByContext(fakeStatusBar.getContext()); if (activity == null) return; transparentStatusBar(activity); fakeStatusBar.setVisibility(View.VISIBLE); @@ -289,7 +291,7 @@ public static void setStatusBarColor(@NonNull final View fakeStatusBar, */ public static void setStatusBarCustom(@NonNull final View fakeStatusBar) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; - Activity activity = getActivityByView(fakeStatusBar); + Activity activity = getActivityByContext(fakeStatusBar.getContext()); if (activity == null) return; transparentStatusBar(activity); fakeStatusBar.setVisibility(View.VISIBLE); @@ -334,7 +336,7 @@ public static void setStatusBarColor4Drawer(@NonNull final DrawerLayout drawer, @ColorInt final int color, final boolean isTop) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; - Activity activity = getActivityByView(fakeStatusBar); + Activity activity = getActivityByContext(fakeStatusBar.getContext()); if (activity == null) return; transparentStatusBar(activity); drawer.setFitsSystemWindows(false); @@ -699,15 +701,24 @@ public static boolean isNavBarLightMode(@NonNull final Window window) { return false; } - private static Activity getActivityByView(@NonNull final View view) { - Context context = view.getContext(); + private static Activity getActivityByContext(Context context) { + if (context instanceof Activity) return (Activity) context; + if (context != null && context.getClass().getName().equals("com.android.internal.policy.DecorContext")) { + try { + Field mActivityContextField = context.getClass().getDeclaredField("mActivityContext"); + mActivityContextField.setAccessible(true); + //noinspection unchecked + return ((WeakReference) mActivityContextField.get(context)).get(); + } catch (Exception e) { + e.printStackTrace(); + } + } while (context instanceof ContextWrapper) { if (context instanceof Activity) { return (Activity) context; } context = ((ContextWrapper) context).getBaseContext(); } - Log.e("BarUtils", "the view's Context is not an Activity."); return null; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java index 6910ef8429..7d3f57ac28 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java @@ -447,7 +447,12 @@ private static boolean isValid(@NonNull final View view, final long duration) { return true; } long preTime = (Long) tag; - if (curTime - preTime <= duration) return false; + if (curTime - preTime < 0) { + view.setTag(DEBOUNCING_TAG, curTime); + return false; + } else if (curTime - preTime <= duration) { + return false; + } view.setTag(DEBOUNCING_TAG, curTime); return true; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java index 44235d4d60..10cc5199d9 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java @@ -389,7 +389,7 @@ public static boolean isEmulator() { */ @SuppressLint({"MissingPermission", "HardwareIds"}) public static String getUniqueDeviceId() { - return getUniqueDeviceId(""); + return getUniqueDeviceId("", true); } /** @@ -403,6 +403,38 @@ public static String getUniqueDeviceId() { */ @SuppressLint({"MissingPermission", "HardwareIds"}) public static String getUniqueDeviceId(String prefix) { + return getUniqueDeviceId(prefix, true); + } + + /** + * Return the unique device id. + *
{1}{UUID(macAddress)}
+ *
{2}{UUID(androidId )}
+ *
{9}{UUID(random    )}
+ * + * @param useCache True to use cache, false otherwise. + * @return the unique device id + */ + @SuppressLint({"MissingPermission", "HardwareIds"}) + public static String getUniqueDeviceId(boolean useCache) { + return getUniqueDeviceId("", useCache); + } + + /** + * Return the unique device id. + *
android 10 deprecated {prefix}{1}{UUID(macAddress)}
+ *
{prefix}{2}{UUID(androidId )}
+ *
{prefix}{9}{UUID(random    )}
+ * + * @param prefix The prefix of the unique device id. + * @param useCache True to use cache, false otherwise. + * @return the unique device id + */ + @SuppressLint({"MissingPermission", "HardwareIds"}) + public static String getUniqueDeviceId(String prefix, boolean useCache) { + if (!useCache) { + return getUniqueDeviceIdReal(prefix); + } if (udid == null) { synchronized (DeviceUtils.class) { if (udid == null) { @@ -411,20 +443,24 @@ public static String getUniqueDeviceId(String prefix) { udid = id; return udid; } - try { - final String androidId = getAndroidID(); - if (!TextUtils.isEmpty(androidId)) { - return saveUdid(prefix + 2, androidId); - } - - } catch (Exception ignore) {/**/} - return saveUdid(prefix + 9, ""); + return getUniqueDeviceIdReal(prefix); } } } return udid; } + private static String getUniqueDeviceIdReal(String prefix) { + try { + final String androidId = getAndroidID(); + if (!TextUtils.isEmpty(androidId)) { + return saveUdid(prefix + 2, androidId); + } + + } catch (Exception ignore) {/**/} + return saveUdid(prefix + 9, ""); + } + @SuppressLint({"MissingPermission", "HardwareIds"}) public static boolean isSameDevice(final String uniqueDeviceId) { // {prefix}{type}{32id} @@ -434,7 +470,13 @@ public static boolean isSameDevice(final String uniqueDeviceId) { if (uniqueDeviceId.equals(cachedId)) return true; int st = uniqueDeviceId.length() - 33; String type = uniqueDeviceId.substring(st, st + 1); - if (type.startsWith("2")) { + if (type.startsWith("1")) { + String macAddress = getMacAddress(); + if (macAddress.equals("")) { + return false; + } + return uniqueDeviceId.substring(st + 1).equals(getUdid("", macAddress)); + } else if (type.startsWith("2")) { final String androidId = getAndroidID(); if (TextUtils.isEmpty(androidId)) { return false; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index 77a4d85632..323570a270 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -2,7 +2,6 @@ import android.app.Activity; import android.content.Context; -import android.content.ContextWrapper; import android.content.res.Resources; import android.graphics.Rect; import android.os.Build; @@ -135,7 +134,7 @@ public static void hideSoftInput(@NonNull final View view) { public static void hideSoftInputByToggle(final Activity activity) { long nowMillis = System.currentTimeMillis(); long delta = nowMillis - millis; - if (KeyboardUtils.isSoftInputVisible(activity) && delta > 500) { + if (KeyboardUtils.isSoftInputVisible(activity) && Math.abs(delta) > 500) { KeyboardUtils.toggleSoftInput(); } millis = nowMillis; @@ -355,21 +354,6 @@ private static int getNavBarHeight() { } } - private static Activity getActivityByView(@NonNull View view) { - return getActivityByContext(view.getContext()); - } - - private static Activity getActivityByContext(Context context) { - if (context instanceof Activity) return (Activity) context; - while (context instanceof ContextWrapper) { - if (context instanceof Activity) { - return (Activity) context; - } - context = ((ContextWrapper) context).getBaseContext(); - } - return null; - } - /////////////////////////////////////////////////////////////////////////// // interface /////////////////////////////////////////////////////////////////////////// diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java index 67d11cdfc8..85b82d4ed4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java @@ -49,6 +49,7 @@ import android.text.style.UnderlineSpan; import android.text.style.UpdateAppearance; import android.util.Log; +import android.view.View; import android.widget.TextView; import java.io.InputStream; @@ -515,6 +516,39 @@ public SpanUtils setClickSpan(@NonNull final ClickableSpan clickSpan) { return this; } + /** + * Set the span of click. + *

Must set {@code view.setMovementMethod(LinkMovementMethod.getInstance())}

+ * + * @param color The color of click span. + * @param underlineText True to support underline, false otherwise. + * @param listener The listener of click span. + * @return the single {@link SpanUtils} instance + */ + public SpanUtils setClickSpan(@ColorInt final int color, + final boolean underlineText, + final View.OnClickListener listener) { + if (mTextView != null && mTextView.getMovementMethod() == null) { + mTextView.setMovementMethod(LinkMovementMethod.getInstance()); + } + this.clickSpan = new ClickableSpan() { + + @Override + public void updateDrawState(@NonNull TextPaint paint) { + paint.setColor(color); + paint.setUnderlineText(underlineText); + } + + @Override + public void onClick(@NonNull View widget) { + if (listener != null) { + listener.onClick(widget); + } + } + }; + return this; + } + /** * Set the span of url. *

Must set {@code view.setMovementMethod(LinkMovementMethod.getInstance())}

diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java index 5c8b3bbcba..a0b2a45362 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java @@ -13,6 +13,7 @@ import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; @@ -20,6 +21,7 @@ import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -1171,7 +1173,9 @@ public abstract static class Task implements Runnable { private volatile boolean isSchedule; private volatile Thread runner; - private Timer mTimer; + private Timer mTimer; + private long mTimeoutMillis; + private OnTimeoutListener mTimeoutListener; private Executor deliver; @@ -1189,12 +1193,27 @@ public void run() { if (runner == null) { if (!state.compareAndSet(NEW, RUNNING)) return; runner = Thread.currentThread(); + if (mTimeoutListener != null) { + Log.w("ThreadUtils", "Scheduled task doesn't support timeout."); + } } else { if (state.get() != RUNNING) return; } } else { if (!state.compareAndSet(NEW, RUNNING)) return; runner = Thread.currentThread(); + if (mTimeoutListener != null) { + mTimer = new Timer(); + mTimer.schedule(new TimerTask() { + @Override + public void run() { + if (!isDone() && mTimeoutListener != null) { + timeout(); + mTimeoutListener.onTimeout(); + } + } + }, mTimeoutMillis); + } } try { final T result = doInBackground(); @@ -1279,17 +1298,13 @@ public Task setDeliver(Executor deliver) { return this; } - public void setTimeout(final long timeoutMillis, final OnTimeoutListener listener) { - mTimer = new Timer(); - mTimer.schedule(new TimerTask() { - @Override - public void run() { - if (!isDone() && listener != null) { - timeout(); - listener.onTimeout(); - } - } - }, timeoutMillis); + /** + * Scheduled task doesn't support timeout. + */ + public Task setTimeout(final long timeoutMillis, final OnTimeoutListener listener) { + mTimeoutMillis = timeoutMillis; + mTimeoutListener = listener; + return this; } private void setSchedule(boolean isSchedule) { @@ -1309,6 +1324,7 @@ protected void onDone() { if (mTimer != null) { mTimer.cancel(); mTimer = null; + mTimeoutListener = null; } } @@ -1317,6 +1333,31 @@ public interface OnTimeoutListener { } } + public static class SyncValue { + + private CountDownLatch mLatch = new CountDownLatch(1); + private AtomicBoolean mFlag = new AtomicBoolean(); + private T mValue; + + public void setValue(T value) { + if (mFlag.compareAndSet(false, true)) { + mValue = value; + mLatch.countDown(); + } + } + + public T getValue() { + if (!mFlag.get()) { + try { + mLatch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + return mValue; + } + } + private static Executor getGlobalDeliver() { if (sDeliver == null) { sDeliver = new Executor() { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index ba24a5096b..97e861629f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -232,7 +232,7 @@ private static void show(final int resId, final int duration) { private static void show(final int resId, final int duration, final Object... args) { try { CharSequence text = Utils.getApp().getResources().getText(resId); - if (args != null) { + if (args != null && args.length > 0) { text = String.format(text.toString(), args); } show(text, duration); @@ -246,7 +246,7 @@ private static void show(final String format, final int duration, final Object.. if (text == null) { text = NULL; } else { - if (args != null) { + if (args != null && args.length > 0) { text = String.format(format, args); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java index 8205430742..3084f11b4a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java @@ -13,8 +13,8 @@ import android.os.Handler; import android.os.Looper; import android.support.annotation.Nullable; -import android.support.v4.app.FragmentActivity; import android.support.v4.content.FileProvider; +import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -23,6 +23,8 @@ import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; +import org.jetbrains.annotations.NotNull; + import java.io.BufferedReader; import java.io.File; import java.io.FileReader; @@ -319,7 +321,7 @@ private static void setAnimatorsEnabled() { // TransActivity /////////////////////////////////////////////////////////////////////////// - public static final class TransActivity extends FragmentActivity { + public static final class TransActivity extends AppCompatActivity { private static final Map CALLBACK_MAP = new HashMap<>(); private static TransActivityDelegate sDelegate; @@ -469,14 +471,14 @@ static class ActivityLifecycleImpl implements ActivityLifecycleCallbacks { private boolean mIsBackground = false; @Override - public void onActivityCreated(Activity activity, Bundle savedInstanceState) { + public void onActivityCreated(@NotNull Activity activity, Bundle savedInstanceState) { LanguageUtils.applyLanguage(activity); setAnimatorsEnabled(); setTopActivity(activity); } @Override - public void onActivityStarted(Activity activity) { + public void onActivityStarted(@NotNull Activity activity) { if (!mIsBackground) { setTopActivity(activity); } @@ -488,7 +490,7 @@ public void onActivityStarted(Activity activity) { } @Override - public void onActivityResumed(final Activity activity) { + public void onActivityResumed(@NotNull final Activity activity) { setTopActivity(activity); if (mIsBackground) { mIsBackground = false; @@ -498,7 +500,7 @@ public void onActivityResumed(final Activity activity) { } @Override - public void onActivityPaused(Activity activity) { + public void onActivityPaused(@NotNull Activity activity) { } @@ -517,10 +519,10 @@ public void onActivityStopped(Activity activity) { } @Override - public void onActivitySaveInstanceState(Activity activity, Bundle outState) {/**/} + public void onActivitySaveInstanceState(@NotNull Activity activity, Bundle outState) {/**/} @Override - public void onActivityDestroyed(Activity activity) { + public void onActivityDestroyed(@NotNull Activity activity) { mActivityList.remove(activity); consumeOnActivityDestroyedListener(activity); fixSoftInputLeaks(activity.getWindow()); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java index d2a301c63b..a79afa737a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java @@ -378,7 +378,7 @@ public static List getFilesPath(final File zipFile) ZipFile zip = new ZipFile(zipFile); Enumeration entries = zip.entries(); while (entries.hasMoreElements()) { - String entryName = ((ZipEntry) entries.nextElement()).getName().replace("\\", "/");; + String entryName = ((ZipEntry) entries.nextElement()).getName().replace("\\", "/"); if (entryName.contains("../")) { Log.e("ZipUtils", "entryName: " + entryName + " is dangerous!"); paths.add(entryName); diff --git a/lib/utilcode/src/main/res/values-v21/styles.xml b/lib/utilcode/src/main/res/values-v21/styles.xml index 475589364a..967acc3c0f 100644 --- a/lib/utilcode/src/main/res/values-v21/styles.xml +++ b/lib/utilcode/src/main/res/values-v21/styles.xml @@ -1,7 +1,7 @@ - @@ -59,18 +59,20 @@ @null - - diff --git a/lib/subutil/README-CN.md b/lib/subutil/README-CN.md index 1375839321..f48cb6e2be 100644 --- a/lib/subutil/README-CN.md +++ b/lib/subutil/README-CN.md @@ -11,6 +11,13 @@ getAppStoreIntent: 获取跳转应用商店意图 ``` +* ### 电池相关 -> [BatteryUtils.java][battery.java] -> [Demo][battery.demo] +``` +registerBatteryStatusChangedListener : 注册电池状态改变监听器 +isRegistered : 判断是否注册电池状态改变监听器 +unregisterBatteryStatusChangedListener: 注销电池状态改变监听器 +``` + * ### 剪贴板相关 -> [ClipboardUtils.java][clipboard.java] -> [Test][clipboard.test] ``` copyText : 复制文本到剪贴板 @@ -81,6 +88,9 @@ getSurnameFirstLetter: 根据名字获取姓氏的首字母 [appStore.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java [appStore.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/appStore/AppStoreActivity.kt +[battery.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java +[battery.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/battery/BatteryActivity.kt + [clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java [clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java diff --git a/lib/subutil/README.md b/lib/subutil/README.md index 8dca27dd71..5a6dae7d17 100644 --- a/lib/subutil/README.md +++ b/lib/subutil/README.md @@ -11,6 +11,13 @@ You should copy the following classes which you want to use in your project. getAppStoreIntent ``` +* ### About Battery -> [BatteryUtils.java][battery.java] -> [Demo][battery.demo] +``` +registerBatteryStatusChangedListener +isRegistered +unregisterBatteryStatusChangedListener +``` + * ### About Clipboard -> [ClipboardUtils.java][clipboard.java] -> [Test][clipboard.test] ``` copyText @@ -81,6 +88,9 @@ getSurnameFirstLetter [appStore.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java [appStore.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/appStore/AppStoreActivity.kt +[battery.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java +[battery.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/battery/BatteryActivity.kt + [clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java [clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java new file mode 100644 index 0000000000..9b7a9978c3 --- /dev/null +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java @@ -0,0 +1,189 @@ +package com.blankj.subutil.util; + +import android.annotation.SuppressLint; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.BatteryManager; +import android.support.annotation.IntDef; + +import com.blankj.utilcode.util.ThreadUtils; +import com.blankj.utilcode.util.Utils; + +import org.jetbrains.annotations.NotNull; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.HashSet; +import java.util.Set; + +/** + *
+ *     author: blankj
+ *     blog  : http://blankj.com
+ *     time  : 2020/03/31
+ *     desc  :
+ * 
+ */ +public class BatteryUtils { + + @IntDef({BatteryStatus.UNKNOWN, BatteryStatus.DISCHARGING, BatteryStatus.CHARGING, + BatteryStatus.NOT_CHARGING, BatteryStatus.FULL}) + @Retention(RetentionPolicy.SOURCE) + public @interface BatteryStatus { + int UNKNOWN = BatteryManager.BATTERY_STATUS_UNKNOWN; + int DISCHARGING = BatteryManager.BATTERY_STATUS_DISCHARGING; + int CHARGING = BatteryManager.BATTERY_STATUS_CHARGING; + int NOT_CHARGING = BatteryManager.BATTERY_STATUS_NOT_CHARGING; + int FULL = BatteryManager.BATTERY_STATUS_FULL; + } + + /** + * Register the status of battery status changed listener. + * + * @param listener The status of battery status changed listener + */ + public static void registerBatteryStatusChangedListener(final OnBatteryStatusChangedListener listener) { + BatteryChangedReceiver.getInstance().registerListener(listener); + } + + /** + * Return whether the status of battery status changed listener registered. + * + * @param listener The listener + * @return True to registered, false otherwise. + */ + public static boolean isRegistered(final OnBatteryStatusChangedListener listener) { + return BatteryChangedReceiver.getInstance().isRegistered(listener); + } + + /** + * unregister the status of battery status changed listener. + * + * @param listener The status of battery status changed listener + */ + public static void unregisterBatteryStatusChangedListener(final OnBatteryStatusChangedListener listener) { + BatteryChangedReceiver.getInstance().unregisterListener(listener); + } + + public static final class BatteryChangedReceiver extends BroadcastReceiver { + + private static BatteryChangedReceiver getInstance() { + return BatteryChangedReceiver.LazyHolder.INSTANCE; + } + + private Set mListeners = new HashSet<>(); + + void registerListener(final OnBatteryStatusChangedListener listener) { + if (listener == null) return; + ThreadUtils.runOnUiThread(new Runnable() { + @SuppressLint("MissingPermission") + @Override + public void run() { + int preSize = mListeners.size(); + mListeners.add(listener); + if (preSize == 0 && mListeners.size() == 1) { + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); + Utils.getApp().registerReceiver(BatteryChangedReceiver.getInstance(), intentFilter); + } + } + }); + } + + boolean isRegistered(final OnBatteryStatusChangedListener listener) { + if (listener == null) return false; + return mListeners.contains(listener); + } + + void unregisterListener(final OnBatteryStatusChangedListener listener) { + if (listener == null) return; + ThreadUtils.runOnUiThread(new Runnable() { + @Override + public void run() { + int preSize = mListeners.size(); + mListeners.remove(listener); + if (preSize == 1 && mListeners.size() == 0) { + Utils.getApp().unregisterReceiver(BatteryChangedReceiver.getInstance()); + } + } + }); + } + + @SuppressLint("MissingPermission") + @Override + public void onReceive(Context context, final Intent intent) { + if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { + ThreadUtils.runOnUiThread(new Runnable() { + @Override + public void run() { + int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); + int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryStatus.UNKNOWN); + for (OnBatteryStatusChangedListener listener : mListeners) { + listener.onBatteryStatusChanged(new Status(level, status)); + } + } + }); + } + } + + private static class LazyHolder { + private static final BatteryChangedReceiver INSTANCE = new BatteryChangedReceiver(); + } + } + + public interface OnBatteryStatusChangedListener { + void onBatteryStatusChanged(Status status); + } + + public static class Status { + private int level; + @BatteryStatus + private int status; + + Status(int level, int status) { + this.level = level; + this.status = status; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + @BatteryStatus + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + @NotNull + @Override + public String toString() { + return batteryStatus2String(status) + ": " + level + "%"; + } + + public static String batteryStatus2String(@BatteryStatus int status) { + if (status == BatteryStatus.DISCHARGING) { + return "discharging"; + } + if (status == BatteryStatus.CHARGING) { + return "charging"; + } + if (status == BatteryStatus.NOT_CHARGING) { + return "not_charging"; + } + if (status == BatteryStatus.FULL) { + return "full"; + } + return "unknown"; + } + } +} diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 5314d7d7ab..8439f68e2c 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -13,26 +13,26 @@ implementation 'com.blankj:utilcodex:1.26.0' * ### Activity 相关 -> [ActivityUtils.java][activity.java] -> [Demo][activity.demo] ``` -addActivityLifecycleCallbacks : 新增 Activity 生命周期监听 +addActivityLifecycleCallbacks : 新增 Activity 生命周期监听 removeActivityLifecycleCallbacks: 移除 Activity 生命周期监听 -getAliveActivityByContext : 根据上下文获取存活的 Activity -getActivityByContext : 根据上下文获取 Activity -isActivityExists : 判断 Activity 是否存在 -startActivity : 启动 Activity -startActivityForResult : 启动 Activity 为返回结果 -startActivities : 启动多个 Activity -startHomeActivity : 回到桌面 -getActivityList : 获取 Activity 栈链表 -getLauncherActivity : 获取启动项 Activity -getMainActivities : 获取主的 Activity 们 -getTopActivity : 获取栈顶 Activity -isActivityAlive : 判断 Activity 是否存活 -isActivityExistsInStack : 判断 Activity 是否存在栈中 -finishActivity : 结束 Activity -finishToActivity : 结束到指定 Activity -finishOtherActivities : 结束所有其他类型的 Activity -finishAllActivities : 结束所有 Activity -finishAllActivitiesExceptNewest: 结束除最新之外的所有 Activity +getAliveActivityByContext : 根据上下文获取存活的 Activity +getActivityByContext : 根据上下文获取 Activity +isActivityExists : 判断 Activity 是否存在 +startActivity : 启动 Activity +startActivityForResult : 启动 Activity 为返回结果 +startActivities : 启动多个 Activity +startHomeActivity : 回到桌面 +getActivityList : 获取 Activity 栈链表 +getLauncherActivity : 获取启动项 Activity +getMainActivities : 获取主的 Activity 们 +getTopActivity : 获取栈顶 Activity +isActivityAlive : 判断 Activity 是否存活 +isActivityExistsInStack : 判断 Activity 是否存在栈中 +finishActivity : 结束 Activity +finishToActivity : 结束到指定 Activity +finishOtherActivities : 结束所有其他类型的 Activity +finishAllActivities : 结束所有 Activity +finishAllActivitiesExceptNewest : 结束除最新之外的所有 Activity ``` * ### AdaptScreen 相关 -> [AdaptScreenUtils.java][adaptScreen.java] -> [Demo][adaptScreen.demo] @@ -364,7 +364,7 @@ inputStream2Bytes, bytes2InputStream : inputStream 与 bytes 互转 outputStream2Bytes, bytes2OutputStream : outputStream 与 bytes 互转 inputStream2String, string2InputStream : inputStream 与 string 按编码互转 outputStream2String, string2OutputStream: outputStream 与 string 按编码互转 -bitmap2Bytes, bytes2Bitmap : bitmap 与 bytes 互转 +inputStream2Lines : inputStream 转 文本行 drawable2Bitmap, bitmap2Drawable : drawable 与 bitmap 互转 drawable2Bytes, bytes2Drawable : drawable 与 bytes 互转 view2Bitmap : view 转 Bitmap @@ -519,14 +519,16 @@ setBackground : 设置背景 * ### Gson 相关 -> [GsonUtils.java][gson.java] -> [Test][gson.test] ``` -getGson : 获取 Gson 对象 -toJson : 对象转 Json 串 -fromJson : Json 串转对象 -getListType : 获取链表类型 -getSetType : 获取集合类型 -getMapType : 获取字典类型 -getArrayType: 获取数组类型 -getType : 获取类型 +setGsonDelegate: 设置默认的 Gson 代理对象 +setGson : 设置 Gson 对象 +getGson : 获取 Gson 对象 +toJson : 对象转 Json 串 +fromJson : Json 串转对象 +getListType : 获取链表类型 +getSetType : 获取集合类型 +getMapType : 获取字典类型 +getArrayType : 获取数组类型 +getType : 获取类型 ``` * ### 图片相关 -> [ImageUtils.java][image.java] -> [Demo][image.demo] @@ -680,6 +682,7 @@ getGatewayByWifi : 根据 WiFi 获取网关 IP 地址 getNetMaskByWifi : 根据 WiFi 获取子网掩码 IP 地址 getServerAddressByWifi : 根据 WiFi 获取服务端 IP 地址 registerNetworkStatusChangedListener : 注册网络状态改变监听器 +isRegistered : 判断是否注册网络状态改变监听器 unregisterNetworkStatusChangedListener: 注销网络状态改变监听器 ``` @@ -694,12 +697,14 @@ setNotificationBarVisibility: 设置通知栏是否可见 * ### 对象相关 -> [ObjectUtils.java][object.java] -> [Test][object.test] ``` -isEmpty : 判断对象是否为空 -isNotEmpty : 判断对象是否非空 -equals : 判断对象是否相等 -requireNonNull: 检查对象非空 -getOrDefault : 获取非空或默认对象 -hashCode : 获取对象哈希值 +isEmpty : 判断对象是否为空 +isNotEmpty : 判断对象是否非空 +equals : 判断对象是否相等 +compare : 比较对象大小 +requireNonNull(s): 要求对象非空 +getOrDefault : 获取非空或默认对象 +toString : 转字符串 +hashCode(s) : 获取对象哈希值 ``` * ### 路径相关 -> [PathUtils.java][path.java] -> [Demo][path.demo] @@ -795,23 +800,37 @@ get : 获取反射想要获取的 * ### 正则相关 -> [RegexUtils.java][regex.java] -> [Test][regex.test] ``` -isMobileSimple : 简单验证手机号 -isMobileExact : 精确验证手机号 -isTel : 验证电话号码 -isIDCard15 : 验证身份证号码 15 位 -isIDCard18 : 简单验证身份证号码 18 位 -isIDCard18Exact: 精确验证身份证号码 18 位 -isEmail : 验证邮箱 -isURL : 验证 URL -isZh : 验证汉字 -isUsername : 验证用户名 -isDate : 验证 yyyy-MM-dd 格式的日期校验,已考虑平闰年 -isIP : 验证 IP 地址 -isMatch : 判断是否匹配正则 -getMatches : 获取正则匹配的部分 -getSplits : 获取正则匹配分组 -getReplaceFirst: 替换正则匹配的第一部分 -getReplaceAll : 替换所有正则匹配的部分 +isMobileSimple : 简单验证手机号 +isMobileExact : 精确验证手机号 +isTel : 验证电话号码 +isIDCard15 : 验证身份证号码 15 位 +isIDCard18 : 简单验证身份证号码 18 位 +isIDCard18Exact : 精确验证身份证号码 18 位 +isEmail : 验证邮箱 +isURL : 验证 URL +isZh : 验证汉字 +isUsername : 验证用户名 +isDate : 验证 yyyy-MM-dd 格式的日期校验,已考虑平闰年 +isIP : 验证 IP 地址 +isMatch : 判断是否匹配正则 +getMatches : 获取正则匹配的部分 +getSplits : 获取正则匹配分组 +getReplaceFirst : 替换正则匹配的第一部分 +getReplaceAll : 替换所有正则匹配的部分 +RegexConstants.REGEX_DOUBLE_BYTE_CHAR : 双字节 +RegexConstants.REGEX_BLANK_LINE : 空行 +RegexConstants.REGEX_QQ_NUM : QQ 号 +RegexConstants.REGEX_CHINA_POSTAL_CODE : 邮编 +RegexConstants.REGEX_INTEGER : 整数 +RegexConstants.REGEX_POSITIVE_INTEGER : 正整数 +RegexConstants.REGEX_NEGATIVE_INTEGER : 负整数 +RegexConstants.REGEX_NOT_NEGATIVE_INTEGER: 非负整数 +RegexConstants.REGEX_NOT_POSITIVE_INTEGER: 非正整数 +RegexConstants.REGEX_FLOAT : 浮点数 +RegexConstants.REGEX_POSITIVE_FLOAT : 正浮点数 +RegexConstants.REGEX_NEGATIVE_FLOAT : 负浮点数 +RegexConstants.REGEX_NOT_NEGATIVE_FLOAT : 非负浮点数 +RegexConstants.REGEX_NOT_POSITIVE_FLOAT : 非正浮点数 ``` * ### 资源相关 -> [ResourceUtils.java][resource.java] -> [Demo][resource.demo] @@ -889,6 +908,8 @@ isSDCardEnableByEnvironment: 根据 Environment 判断 SD 卡是否可用 getSDCardPathByEnvironment : 根据 Environment 获取 SD 卡路径 getSDCardInfo : 获取 SD 卡信息 getMountedSDCardPath : 获取已挂载的 SD 卡路径 +getTotalSize : 获取 SD 卡总大小 +getAvailableSize : 获取 SD 卡可用大小 ``` * ### 服务相关 -> [ServiceUtils.java][service.java] @@ -1021,6 +1042,8 @@ lowerFirstLetter: 首字母小写 reverse : 反转字符串 toDBC : 转化为半角字符 toSBC : 转化为全角字符 +getString : 获取字符资源 +getStringArray : 获取字符数组资源 ``` * ### 线程相关 -> [ThreadUtils.java][thread.java] -> [Test][thread.test] diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 52b69c4ec2..1296cc0bf0 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -13,6 +13,8 @@ implementation 'com.blankj:utilcodex:1.26.0' * ### About Activity -> [ActivityUtils.java][activity.java] -> [Demo][activity.demo] ``` +addActivityLifecycleCallbacks +removeActivityLifecycleCallbacks getAliveActivityByContext getActivityByContext isActivityExists @@ -347,6 +349,12 @@ getRandomColor bytes2Bits, bits2Bytes bytes2Chars, chars2Bytes bytes2HexString, hexString2Bytes +bytes2String, string2Bytes +bytes2JSONObject, jsonObject2Bytes +bytes2JSONArray, jsonArray2Bytes +bytes2Parcelable, parcelable2Bytes +bytes2Object, serializable2Bytes +bytes2Bitmap, bitmap2Bytes memorySize2Byte, byte2MemorySize byte2FitMemorySize timeSpan2Millis, millis2TimeSpan @@ -356,7 +364,7 @@ inputStream2Bytes, bytes2InputStream outputStream2Bytes, bytes2OutputStream inputStream2String, string2InputStream outputStream2String, string2OutputStream -bitmap2Bytes, bytes2Bitmap +inputStream2Lines drawable2Bitmap, bitmap2Drawable drawable2Bytes, bytes2Drawable view2Bitmap @@ -403,6 +411,8 @@ base64Encode2String base64Decode htmlEncode htmlDecode +binaryEncode +binaryDecode ``` * ### About Encrypt -> [EncryptUtils.java][encrypt.java] -> [Test][encrypt.test] @@ -429,6 +439,7 @@ encryptAES, encryptAES2HexString, encryptAES2Base64 decryptAES, decryptHexStringAES, decryptBase64AES encryptRSA, encryptRSA2HexString, encryptRSA2Base64 decryptRSA, decryptHexStringRSA, decryptBase64RSA +rc4 ``` * ### About FileIO -> [FileIOUtils.java][fileIo.java] -> [Test][fileIo.test] @@ -508,6 +519,8 @@ setBackground * ### About Gson -> [GsonUtils.java][gson.java] -> [Test][gson.test] ``` +setGsonDelegate +setGson getGson toJson fromJson @@ -669,6 +682,7 @@ getGatewayByWifi getNetMaskByWifi getServerAddressByWifi registerNetworkStatusChangedListener +isRegistered unregisterNetworkStatusChangedListener ``` @@ -686,9 +700,11 @@ setNotificationBarVisibility isEmpty isNotEmpty equals -requireNonNull +compare +requireNonNull(s) getOrDefault -hashCode +toString +hashCode(s) ``` * ### About Path -> [PathUtils.java][path.java] -> [Demo][path.demo] @@ -801,6 +817,20 @@ getMatches getSplits getReplaceFirst getReplaceAll +RegexConstants.REGEX_DOUBLE_BYTE_CHAR +RegexConstants.REGEX_BLANK_LINE +RegexConstants.REGEX_QQ_NUM +RegexConstants.REGEX_CHINA_POSTAL_CODE +RegexConstants.REGEX_INTEGER +RegexConstants.REGEX_POSITIVE_INTEGER +RegexConstants.REGEX_NEGATIVE_INTEGER +RegexConstants.REGEX_NOT_NEGATIVE_INTEGER +RegexConstants.REGEX_NOT_POSITIVE_INTEGER +RegexConstants.REGEX_FLOAT +RegexConstants.REGEX_POSITIVE_FLOAT +RegexConstants.REGEX_NEGATIVE_FLOAT +RegexConstants.REGEX_NOT_NEGATIVE_FLOAT +RegexConstants.REGEX_NOT_POSITIVE_FLOAT ``` * ### About Resource -> [ResourceUtils.java][resource.java] -> [Demo][resource.demo] @@ -878,6 +908,8 @@ isSDCardEnableByEnvironment getSDCardPathByEnvironment getSDCardInfo getMountedSDCardPath +getTotalSize +getAvailableSize ``` * ### About Service -> [ServiceUtils.java][service.java] @@ -1010,6 +1042,8 @@ lowerFirstLetter reverse toDBC toSBC +getString +getStringArray ``` * ### About Thread -> [ThreadUtils.java][thread.java] -> [Test][thread.test] diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index 08e0207e56..25a50ec1d6 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -27,15 +27,16 @@ android { } dependencies { - implementation Config.depConfig.gson.dep + compileOnly Config.depConfig.gson.dep - implementation Config.depConfig.support_appcompat_v7.dep + compileOnly Config.depConfig.support_appcompat_v7.dep compileOnly Config.depConfig.support_design.dep testImplementation Config.depConfig.test_junit.dep testImplementation Config.depConfig.test_robolectric.dep testImplementation Config.depConfig.gson.dep testImplementation Config.depConfig.support_appcompat_v7.dep + testImplementation Config.depConfig.support_design.dep testImplementation Config.depConfig.eventbus_lib.dep } diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml index a2f3d78acd..47b2c9a887 100644 --- a/lib/utilcode/src/main/AndroidManifest.xml +++ b/lib/utilcode/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ Result getApiInner(Class apiClass) { if (api != null) { return (Result) api; } - synchronized (this) { + synchronized (apiClass) { api = mApiMap.get(apiClass); if (api != null) { return (Result) api; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index 43a56bcdfd..b4aaff234b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -90,11 +90,11 @@ public static void uninstallApp(final String packageName) { * @param pkgName The name of the package. * @return {@code true}: yes
{@code false}: no */ - public static boolean isAppInstalled(@NonNull final String pkgName) { + public static boolean isAppInstalled(final String pkgName) { + if (UtilsBridge.isSpace(pkgName)) return false; PackageManager pm = Utils.getApp().getPackageManager(); try { - ApplicationInfo info = pm.getApplicationInfo(pkgName, 0); - return info != null && info.enabled; + return pm.getApplicationInfo(pkgName, 0).enabled; } catch (PackageManager.NameNotFoundException e) { return false; } @@ -187,11 +187,11 @@ public static boolean isAppForeground() { *

Target APIs greater than 21 must hold * {@code }

* - * @param packageName The name of the package. + * @param pkgName The name of the package. * @return {@code true}: yes
{@code false}: no */ - public static boolean isAppForeground(@NonNull final String packageName) { - return !UtilsBridge.isSpace(packageName) && packageName.equals(UtilsBridge.getForegroundProcessName()); + public static boolean isAppForeground(@NonNull final String pkgName) { + return !UtilsBridge.isSpace(pkgName) && pkgName.equals(UtilsBridge.getForegroundProcessName()); } /** @@ -200,7 +200,8 @@ public static boolean isAppForeground(@NonNull final String packageName) { * @param pkgName The name of the package. * @return {@code true}: yes
{@code false}: no */ - public static boolean isAppRunning(@NonNull final String pkgName) { + public static boolean isAppRunning(final String pkgName) { + if (UtilsBridge.isSpace(pkgName)) return false; ApplicationInfo ai = Utils.getApp().getApplicationInfo(); int uid = ai.uid; ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index e0b7fc3696..99a8999096 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -679,7 +679,7 @@ public static void setNavBarLightMode(@NonNull final Window window, * @return {@code true}: yes
{@code false}: no */ public static boolean isNavBarLightMode(@NonNull final Activity activity) { - return isStatusBarLightMode(activity.getWindow()); + return isNavBarLightMode(activity.getWindow()); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java index d73efcf3e8..1ff359395c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java @@ -13,16 +13,20 @@ import org.json.JSONArray; import org.json.JSONObject; +import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; /** *
@@ -34,13 +38,14 @@
  */
 public final class ConvertUtils {
 
+    private static final int    BUFFER_SIZE = 8192;
+    private static final char[] hexDigits   =
+            {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+
     private ConvertUtils() {
         throw new UnsupportedOperationException("u can't instantiate me...");
     }
 
-    private static final char[] hexDigits =
-            {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-
     /**
      * Bytes to bits.
      *
@@ -478,21 +483,8 @@ public static long millis2TimeSpan(final long millis, @TimeConstants.Unit final
      *                  
      * @return fit time span
      */
-    @SuppressLint("DefaultLocale")
     public static String millis2FitTimeSpan(long millis, int precision) {
-        if (millis <= 0 || precision <= 0) return null;
-        StringBuilder sb = new StringBuilder();
-        String[] units = {"天", "小时", "分钟", "秒", "毫秒"};
-        int[] unitLen = {86400000, 3600000, 60000, 1000, 1};
-        precision = Math.min(precision, 5);
-        for (int i = 0; i < precision; i++) {
-            if (millis >= unitLen[i]) {
-                long mode = millis / unitLen[i];
-                millis -= mode * unitLen[i];
-                sb.append(mode).append(units[i]);
-            }
-        }
-        return sb.toString();
+        return UtilsBridge.millis2FitTimeSpan(millis, precision);
     }
 
     /**
@@ -502,9 +494,9 @@ public static ByteArrayOutputStream input2OutputStream(final InputStream is) {
         if (is == null) return null;
         try {
             ByteArrayOutputStream os = new ByteArrayOutputStream();
-            byte[] b = new byte[MemoryConstants.KB];
+            byte[] b = new byte[BUFFER_SIZE];
             int len;
-            while ((len = is.read(b, 0, MemoryConstants.KB)) != -1) {
+            while ((len = is.read(b, 0, BUFFER_SIZE)) != -1) {
                 os.write(b, 0, len);
             }
             return os;
@@ -630,6 +622,35 @@ public static OutputStream string2OutputStream(final String string, final String
         }
     }
 
+    public static List inputStream2Lines(final InputStream is) {
+        return inputStream2Lines(is, "");
+    }
+
+    public static List inputStream2Lines(final InputStream is,
+                                                 final String charsetName) {
+        BufferedReader reader = null;
+        try {
+            List list = new ArrayList<>();
+            reader = new BufferedReader(new InputStreamReader(is, getSafeCharset(charsetName)));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                list.add(line);
+            }
+            return list;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        } finally {
+            try {
+                if (reader != null) {
+                    reader.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
     /**
      * Drawable to bitmap.
      */
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
index 1af8c2ad2c..4707bf02b4 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
@@ -264,11 +264,11 @@ private static InetAddress getInetAddress() {
     }
 
     private static String getMacAddressByFile() {
-        ShellUtils.CommandResult result = ShellUtils.execCmd("getprop wifi.interface", false);
+        UtilsBridge.ShellCommandResult result = UtilsBridge.execCmd("getprop wifi.interface", false);
         if (result.result == 0) {
             String name = result.successMsg;
             if (name != null) {
-                result = ShellUtils.execCmd("cat /sys/class/net/" + name + "/address", false);
+                result = UtilsBridge.execCmd("cat /sys/class/net/" + name + "/address", false);
                 if (result.result == 0) {
                     String address = result.successMsg;
                     if (address != null && address.length() > 0) {
@@ -488,7 +488,7 @@ public static boolean isSameDevice(final String uniqueDeviceId) {
 
     private static String saveUdid(String prefix, String id) {
         udid = getUdid(prefix, id);
-        SPUtils.getInstance().put(KEY_UDID, udid);
+        UtilsBridge.getSpUtils4Utils().put(KEY_UDID, udid);
         return udid;
     }
 
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileIOUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileIOUtils.java
index 146dfe0cd5..761550d0b6 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileIOUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileIOUtils.java
@@ -383,6 +383,10 @@ public static boolean writeFileFromBytesByChannel(final File file,
         FileChannel fc = null;
         try {
             fc = new FileOutputStream(file, append).getChannel();
+            if (fc == null) {
+                Log.e("FileIOUtils", "fc is null.");
+                return false;
+            }
             fc.position(fc.size());
             fc.write(ByteBuffer.wrap(bytes));
             if (isForce) fc.force(true);
@@ -465,6 +469,10 @@ public static boolean writeFileFromBytesByMap(final File file,
         FileChannel fc = null;
         try {
             fc = new FileOutputStream(file, append).getChannel();
+            if (fc == null) {
+                Log.e("FileIOUtils", "fc is null.");
+                return false;
+            }
             MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, fc.size(), bytes.length);
             mbb.put(bytes);
             if (isForce) mbb.force();
@@ -856,6 +864,10 @@ public static byte[] readFile2BytesByChannel(final File file) {
         FileChannel fc = null;
         try {
             fc = new RandomAccessFile(file, "r").getChannel();
+            if (fc == null) {
+                Log.e("FileIOUtils", "fc is null.");
+                return new byte[0];
+            }
             ByteBuffer byteBuffer = ByteBuffer.allocate((int) fc.size());
             while (true) {
                 if (!((fc.read(byteBuffer)) > 0)) break;
@@ -896,6 +908,10 @@ public static byte[] readFile2BytesByMap(final File file) {
         FileChannel fc = null;
         try {
             fc = new RandomAccessFile(file, "r").getChannel();
+            if (fc == null) {
+                Log.e("FileIOUtils", "fc is null.");
+                return new byte[0];
+            }
             int size = (int) fc.size();
             MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_ONLY, 0, size).load();
             byte[] result = new byte[size];
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java
index ccadf06a37..a7ee1987b6 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java
@@ -450,7 +450,7 @@ private static boolean copyOrMoveFile(final File srcFile,
         }
         if (!createOrExistsDir(destFile.getParentFile())) return false;
         try {
-            return UtilsBridge.writeFileFromIS(destFile, new FileInputStream(srcFile))
+            return UtilsBridge.writeFileFromIS(destFile.getAbsolutePath(), new FileInputStream(srcFile))
                     && !(isMove && !deleteFile(srcFile));
         } catch (FileNotFoundException e) {
             e.printStackTrace();
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
index b6c9615309..2855b80928 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java
@@ -1549,7 +1549,7 @@ private static Fragment getTopIsInStack(@NonNull final FragmentManager fm,
                 }
             }
         }
-        return null;
+        return parentFragment;
     }
 
     /**
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java
index 0e2daa3b55..05b73b9665 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java
@@ -1,11 +1,15 @@
 package com.blankj.utilcode.util;
 
+import android.support.annotation.NonNull;
+import android.text.TextUtils;
+
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 
 import java.io.Reader;
 import java.lang.reflect.Type;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -21,37 +25,58 @@
  */
 public final class GsonUtils {
 
-    private static Gson sGsonDefault;
+    private static final String KEY_DEFAULT   = "defaultGson";
+    private static final String KEY_DELEGATE  = "delegateGson";
+    private static final String KEY_LOG_UTILS = "logUtilsGson";
 
-    private static Gson sGsonDelegate;
+    private static final Map GSONS = new HashMap<>();
 
     private GsonUtils() {
         throw new UnsupportedOperationException("u can't instantiate me...");
     }
 
     /**
-     * Set the delegate of gson.
+     * Set the delegate of {@link Gson}.
      *
-     * @param delegate The delegate.
+     * @param delegate The delegate of {@link Gson}.
      */
     public static void setGsonDelegate(Gson delegate) {
-        sGsonDelegate = delegate;
+        if (delegate == null) return;
+        GSONS.put(KEY_DELEGATE, delegate);
+    }
+
+    /**
+     * Set the {@link Gson} with key.
+     *
+     * @param key  The key.
+     * @param gson The {@link Gson}.
+     */
+    public static void setGson(final String key, final Gson gson) {
+        if (TextUtils.isEmpty(key) || gson == null) return;
+        GSONS.put(key, gson);
     }
 
     /**
-     * Get the {@link Gson} instance.
+     * Return the {@link Gson} with key.
      *
-     * @return {@link Gson} instance.
+     * @param key The key.
+     * @return the {@link Gson} with key
      */
-    public static Gson getGson() {
-        if (sGsonDelegate != null) {
-            return sGsonDelegate;
+    public static Gson getGson(final String key) {
+        return GSONS.get(key);
+    }
+
+    private static Gson getGson() {
+        Gson gsonDelegate = GSONS.get(KEY_DELEGATE);
+        if (gsonDelegate != null) {
+            return gsonDelegate;
         }
-        if (sGsonDefault != null) {
-            return sGsonDefault;
+        Gson gsonDefault = GSONS.get(KEY_DEFAULT);
+        if (gsonDefault == null) {
+            gsonDefault = createGson();
+            GSONS.put(KEY_DEFAULT, gsonDefault);
         }
-        sGsonDefault = createGson();
-        return sGsonDefault;
+        return gsonDefault;
     }
 
     /**
@@ -60,8 +85,8 @@ public static Gson getGson() {
      * @param object The object to serialize.
      * @return object serialized into json.
      */
-    public static String toJson(final Object object) {
-        return getGson().toJson(object);
+    public static String toJson(@NonNull final Object object) {
+        return toJson(getGson(), object);
     }
 
     /**
@@ -71,52 +96,123 @@ public static String toJson(final Object object) {
      * @param typeOfSrc The specific genericized type of src.
      * @return object serialized into json.
      */
-    public static String toJson(final Object src, final Type typeOfSrc) {
-        return getGson().toJson(src, typeOfSrc);
+    public static String toJson(@NonNull final Object src, @NonNull final Type typeOfSrc) {
+        return toJson(getGson(), src, typeOfSrc);
+    }
+
+    /**
+     * Serializes an object into json.
+     *
+     * @param gson   The gson.
+     * @param object The object to serialize.
+     * @return object serialized into json.
+     */
+    public static String toJson(@NonNull final Gson gson, @NonNull final Object object) {
+        return gson.toJson(object);
+    }
+
+    /**
+     * Serializes an object into json.
+     *
+     * @param gson      The gson.
+     * @param src       The object to serialize.
+     * @param typeOfSrc The specific genericized type of src.
+     * @return object serialized into json.
+     */
+    public static String toJson(@NonNull final Gson gson, @NonNull final Object src, @NonNull final Type typeOfSrc) {
+        return gson.toJson(src, typeOfSrc);
+    }
+
+    /**
+     * Converts {@link String} to given type.
+     *
+     * @param json The json to convert.
+     * @param type Type json will be converted to.
+     * @return instance of type
+     */
+    public static  T fromJson(@NonNull final String json, @NonNull final Class type) {
+        return fromJson(getGson(), json, type);
     }
 
     /**
      * Converts {@link String} to given type.
      *
+     * @param json the json to convert.
+     * @param type type type json will be converted to.
+     * @return instance of type
+     */
+    public static  T fromJson(@NonNull final String json, @NonNull final Type type) {
+        return fromJson(getGson(), json, type);
+    }
+
+    /**
+     * Converts {@link Reader} to given type.
+     *
+     * @param reader the reader to convert.
+     * @param type   type type json will be converted to.
+     * @return instance of type
+     */
+    public static  T fromJson(@NonNull final Reader reader, @NonNull final Class type) {
+        return fromJson(getGson(), reader, type);
+    }
+
+    /**
+     * Converts {@link Reader} to given type.
+     *
+     * @param reader the reader to convert.
+     * @param type   type type json will be converted to.
+     * @return instance of type
+     */
+    public static  T fromJson(@NonNull final Reader reader, @NonNull final Type type) {
+        return fromJson(getGson(), reader, type);
+    }
+
+    /**
+     * Converts {@link String} to given type.
+     *
+     * @param gson The gson.
      * @param json The json to convert.
      * @param type Type json will be converted to.
      * @return instance of type
      */
-    public static  T fromJson(final String json, final Class type) {
-        return sGsonDefault.fromJson(json, type);
+    public static  T fromJson(@NonNull final Gson gson, @NonNull final String json, @NonNull final Class type) {
+        return gson.fromJson(json, type);
     }
 
     /**
      * Converts {@link String} to given type.
      *
+     * @param gson The gson.
      * @param json the json to convert.
      * @param type type type json will be converted to.
      * @return instance of type
      */
-    public static  T fromJson(final String json, final Type type) {
-        return sGsonDefault.fromJson(json, type);
+    public static  T fromJson(@NonNull final Gson gson, @NonNull final String json, @NonNull final Type type) {
+        return gson.fromJson(json, type);
     }
 
     /**
      * Converts {@link Reader} to given type.
      *
+     * @param gson   The gson.
      * @param reader the reader to convert.
      * @param type   type type json will be converted to.
      * @return instance of type
      */
-    public static  T fromJson(final Reader reader, final Class type) {
-        return sGsonDefault.fromJson(reader, type);
+    public static  T fromJson(@NonNull final Gson gson, @NonNull final Reader reader, @NonNull final Class type) {
+        return gson.fromJson(reader, type);
     }
 
     /**
      * Converts {@link Reader} to given type.
      *
+     * @param gson   The gson.
      * @param reader the reader to convert.
      * @param type   type type json will be converted to.
      * @return instance of type
      */
-    public static  T fromJson(final Reader reader, final Type type) {
-        return sGsonDefault.fromJson(reader, type);
+    public static  T fromJson(@NonNull final Gson gson, @NonNull final Reader reader, @NonNull final Type type) {
+        return gson.fromJson(reader, type);
     }
 
     /**
@@ -125,7 +221,7 @@ public static  T fromJson(final Reader reader, final Type type) {
      * @param type The type.
      * @return the type of {@link List} with the {@code type}
      */
-    public static Type getListType(final Type type) {
+    public static Type getListType(@NonNull final Type type) {
         return TypeToken.getParameterized(List.class, type).getType();
     }
 
@@ -135,7 +231,7 @@ public static Type getListType(final Type type) {
      * @param type The type.
      * @return the type of {@link Set} with the {@code type}
      */
-    public static Type getSetType(final Type type) {
+    public static Type getSetType(@NonNull final Type type) {
         return TypeToken.getParameterized(Set.class, type).getType();
     }
 
@@ -146,7 +242,7 @@ public static Type getSetType(final Type type) {
      * @param valueType The type of value.
      * @return the type of map with the {@code keyType} and {@code valueType}
      */
-    public static Type getMapType(final Type keyType, final Type valueType) {
+    public static Type getMapType(@NonNull final Type keyType, @NonNull final Type valueType) {
         return TypeToken.getParameterized(Map.class, keyType, valueType).getType();
     }
 
@@ -156,7 +252,7 @@ public static Type getMapType(final Type keyType, final Type valueType) {
      * @param type The type.
      * @return the type of map with the {@code type}
      */
-    public static Type getArrayType(final Type type) {
+    public static Type getArrayType(@NonNull final Type type) {
         return TypeToken.getArray(type).getType();
     }
 
@@ -167,12 +263,17 @@ public static Type getArrayType(final Type type) {
      * @param typeArguments The type of arguments.
      * @return the type of map with the {@code type}
      */
-    public static Type getType(final Type rawType, final Type... typeArguments) {
+    public static Type getType(@NonNull final Type rawType, @NonNull final Type... typeArguments) {
         return TypeToken.getParameterized(rawType, typeArguments).getType();
     }
 
     static Gson getGson4LogUtils() {
-        return new GsonBuilder().setPrettyPrinting().serializeNulls().create();
+        Gson gson4LogUtils = GSONS.get(KEY_LOG_UTILS);
+        if (gson4LogUtils == null) {
+            gson4LogUtils = new GsonBuilder().setPrettyPrinting().serializeNulls().create();
+            GSONS.put(KEY_LOG_UTILS, gson4LogUtils);
+        }
+        return gson4LogUtils;
     }
 
     private static Gson createGson() {
diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java
index 195a0884ad..8821796be8 100644
--- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java
+++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java
@@ -84,54 +84,45 @@ public static Intent getInstallAppIntent(final File file) {
     /**
      * Return the intent of uninstall app.
      *
-     * @param packageName The name of the package.
+     * @param pkgName The name of the package.
      * @return the intent of uninstall app
      */
-    public static Intent getUninstallAppIntent(final String packageName) {
+    public static Intent getUninstallAppIntent(final String pkgName) {
         Intent intent = new Intent(Intent.ACTION_DELETE);
-        intent.setData(Uri.parse("package:" + packageName));
+        intent.setData(Uri.parse("package:" + pkgName));
         return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     }
 
     /**
      * Return the intent of launch app.
      *
-     * @param packageName The name of the package.
+     * @param pkgName The name of the package.
      * @return the intent of launch app
      */
-    public static Intent getLaunchAppIntent(final String packageName) {
-        String launcherActivity = UtilsBridge.getLauncherActivity(packageName);
-        if (!launcherActivity.isEmpty()) {
-            Intent intent = new Intent(Intent.ACTION_MAIN);
-            intent.addCategory(Intent.CATEGORY_LAUNCHER);
-            intent.setClassName(packageName, launcherActivity);
-            return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        }
-        return null;
-    }
+    public static Intent getLaunchAppIntent(final String pkgName) {
+//        String launcherActivity = UtilsBridge.getLauncherActivity(pkgName);
+//        LogUtils.e(launcherActivity);
+//        if (UtilsBridge.isSpace(launcherActivity)) return null;
+//        Intent intent = new Intent(Intent.ACTION_MAIN);
+//        intent.addCategory(Intent.CATEGORY_LAUNCHER);
+//        intent.setClassName(pkgName, launcherActivity);
+//        return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 
-    /**
-     * Return the intent of launch app details settings.
-     *
-     * @param packageName The name of the package.
-     * @return the intent of launch app details settings
-     */
-    public static Intent getLaunchAppDetailsSettingsIntent(final String packageName) {
-        return getLaunchAppDetailsSettingsIntent(packageName, false);
+        Intent intent = Utils.getApp().getPackageManager().getLaunchIntentForPackage(pkgName);
+        if (intent == null) return null;
+        return getIntent(intent, true);
     }
 
     /**
      * Return the intent of launch app details settings.
      *
-     * @param packageName The name of the package.
-     * @param isNewTask   True to add flag of new task, false otherwise.
+     * @param pkgName The name of the package.
      * @return the intent of launch app details settings
      */
-    public static Intent getLaunchAppDetailsSettingsIntent(final String packageName,
-                                                           final boolean isNewTask) {
+    public static Intent getLaunchAppDetailsSettingsIntent(final String pkgName) {
         Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-        intent.setData(Uri.parse("package:" + packageName));
-        return getIntent(intent, isNewTask);
+        intent.setData(Uri.parse("package:" + pkgName));
+        return getIntent(intent, true);
     }
 
     /**
@@ -140,23 +131,12 @@ public static Intent getLaunchAppDetailsSettingsIntent(final String packageName,
      * @param content The content.
      * @return the intent of share text
      */
-    public static Intent getShareTextIntent(final String content) {
-        return getShareTextIntent(content, false);
-    }
-
-    /**
-     * Return the intent of share text.
-     *
-     * @param content   The content.
-     * @param isNewTask True to add flag of new task, false otherwise.
-     * @return the intent of share text
-     */
 
-    public static Intent getShareTextIntent(final String content, final boolean isNewTask) {
+    public static Intent getShareTextIntent(final String content) {
         Intent intent = new Intent(Intent.ACTION_SEND);
         intent.setType("text/plain");
         intent.putExtra(Intent.EXTRA_TEXT, content);
-        return getIntent(intent, isNewTask);
+        return getIntent(intent, true);
     }
 
     /**
@@ -167,22 +147,8 @@ public static Intent getShareTextIntent(final String content, final boolean isNe
      * @return the intent of share image
      */
     public static Intent getShareImageIntent(final String content, final String imagePath) {
-        return getShareImageIntent(content, imagePath, false);
-    }
-
-    /**
-     * Return the intent of share image.
-     *
-     * @param content   The content.
-     * @param imagePath The path of image.
-     * @param isNewTask True to add flag of new task, false otherwise.
-     * @return the intent of share image
-     */
-    public static Intent getShareImageIntent(final String content,
-                                             final String imagePath,
-                                             final boolean isNewTask) {
-        if (imagePath == null || imagePath.length() == 0) return null;
-        return getShareImageIntent(content, new File(imagePath), isNewTask);
+        if (UtilsBridge.isSpace(imagePath)) return null;
+        return getShareImageIntent(content, new File(imagePath));
     }
 
     /**
@@ -193,22 +159,8 @@ public static Intent getShareImageIntent(final String content,
      * @return the intent of share image
      */
     public static Intent getShareImageIntent(final String content, final File image) {
-        return getShareImageIntent(content, image, false);
-    }
-
-    /**
-     * Return the intent of share image.
-     *
-     * @param content   The content.
-     * @param image     The file of image.
-     * @param isNewTask True to add flag of new task, false otherwise.
-     * @return the intent of share image
-     */
-    public static Intent getShareImageIntent(final String content,
-                                             final File image,
-                                             final boolean isNewTask) {
         if (image == null || !image.isFile()) return null;
-        return getShareImageIntent(content, file2Uri(image), isNewTask);
+        return getShareImageIntent(content, UtilsBridge.file2Uri(image));
     }
 
     /**
@@ -219,25 +171,11 @@ public static Intent getShareImageIntent(final String content,
      * @return the intent of share image
      */
     public static Intent getShareImageIntent(final String content, final Uri uri) {
-        return getShareImageIntent(content, uri, false);
-    }
-
-    /**
-     * Return the intent of share image.
-     *
-     * @param content   The content.
-     * @param uri       The uri of image.
-     * @param isNewTask True to add flag of new task, false otherwise.
-     * @return the intent of share image
-     */
-    public static Intent getShareImageIntent(final String content,
-                                             final Uri uri,
-                                             final boolean isNewTask) {
         Intent intent = new Intent(Intent.ACTION_SEND);
         intent.putExtra(Intent.EXTRA_TEXT, content);
         intent.putExtra(Intent.EXTRA_STREAM, uri);
         intent.setType("image/*");
-        return getIntent(intent, isNewTask);
+        return getIntent(intent, true);
     }
 
     /**
@@ -247,27 +185,14 @@ public static Intent getShareImageIntent(final String content,
      * @param imagePaths The paths of images.
      * @return the intent of share images
      */
-    public static Intent getShareImageIntent(final String content, final LinkedList imagePaths) {
-        return getShareImageIntent(content, imagePaths, false);
-    }
-
-    /**
-     * Return the intent of share images.
-     *
-     * @param content    The content.
-     * @param imagePaths The paths of images.
-     * @param isNewTask  True to add flag of new task, false otherwise.
-     * @return the intent of share images
-     */
     public static Intent getShareImageIntent(final String content,
-                                             final LinkedList imagePaths,
-                                             final boolean isNewTask) {
+                                             final LinkedList imagePaths) {
         if (imagePaths == null || imagePaths.isEmpty()) return null;
         List files = new ArrayList<>();
         for (String imagePath : imagePaths) {
             files.add(new File(imagePath));
         }
-        return getShareImageIntent(content, files, isNewTask);
+        return getShareImageIntent(content, files);
     }
 
     /**
@@ -278,113 +203,85 @@ public static Intent getShareImageIntent(final String content,
      * @return the intent of share images
      */
     public static Intent getShareImageIntent(final String content, final List images) {
-        return getShareImageIntent(content, images, false);
-    }
-
-    /**
-     * Return the intent of share images.
-     *
-     * @param content   The content.
-     * @param images    The files of images.
-     * @param isNewTask True to add flag of new task, false otherwise.
-     * @return the intent of share images
-     */
-    public static Intent getShareImageIntent(final String content,
-                                             final List images,
-                                             final boolean isNewTask) {
         if (images == null || images.isEmpty()) return null;
         ArrayList uris = new ArrayList<>();
         for (File image : images) {
             if (!image.isFile()) continue;
-            uris.add(file2Uri(image));
+            uris.add(UtilsBridge.file2Uri(image));
         }
-        return getShareImageIntent(content, uris, isNewTask);
+        return getShareImageIntent(content, uris);
     }
 
     /**
      * Return the intent of share images.
      *
      * @param content The content.
-     * @param uris    The uris of images.
-     * @return the intent of share images
-     */
-    public static Intent getShareImageIntent(final String content, final ArrayList uris) {
-        return getShareImageIntent(content, uris, false);
-    }
-
-    /**
-     * Return the intent of share images.
-     *
-     * @param content   The content.
-     * @param uris      The uris of image.
-     * @param isNewTask True to add flag of new task, false otherwise.
+     * @param uris    The uris of image.
      * @return the intent of share image
      */
-    public static Intent getShareImageIntent(final String content,
-                                             final ArrayList uris,
-                                             final boolean isNewTask) {
+    public static Intent getShareImageIntent(final String content, final ArrayList uris) {
         Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
         intent.putExtra(Intent.EXTRA_TEXT, content);
         intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
         intent.setType("image/*");
-        return getIntent(intent, isNewTask);
+        return getIntent(intent, true);
     }
 
     /**
      * Return the intent of component.
      *
-     * @param packageName The name of the package.
-     * @param className   The name of class.
+     * @param pkgName   The name of the package.
+     * @param className The name of class.
      * @return the intent of component
      */
-    public static Intent getComponentIntent(final String packageName, final String className) {
-        return getComponentIntent(packageName, className, null, false);
+    public static Intent getComponentIntent(final String pkgName, final String className) {
+        return getComponentIntent(pkgName, className, null, false);
     }
 
     /**
      * Return the intent of component.
      *
-     * @param packageName The name of the package.
-     * @param className   The name of class.
-     * @param isNewTask   True to add flag of new task, false otherwise.
+     * @param pkgName   The name of the package.
+     * @param className The name of class.
+     * @param isNewTask True to add flag of new task, false otherwise.
      * @return the intent of component
      */
-    public static Intent getComponentIntent(final String packageName,
+    public static Intent getComponentIntent(final String pkgName,
                                             final String className,
                                             final boolean isNewTask) {
-        return getComponentIntent(packageName, className, null, isNewTask);
+        return getComponentIntent(pkgName, className, null, isNewTask);
     }
 
     /**
      * Return the intent of component.
      *
-     * @param packageName The name of the package.
-     * @param className   The name of class.
-     * @param bundle      The Bundle of extras to add to this intent.
+     * @param pkgName   The name of the package.
+     * @param className The name of class.
+     * @param bundle    The Bundle of extras to add to this intent.
      * @return the intent of component
      */
-    public static Intent getComponentIntent(final String packageName,
+    public static Intent getComponentIntent(final String pkgName,
                                             final String className,
                                             final Bundle bundle) {
-        return getComponentIntent(packageName, className, bundle, false);
+        return getComponentIntent(pkgName, className, bundle, false);
     }
 
     /**
      * Return the intent of component.
      *
-     * @param packageName The name of the package.
-     * @param className   The name of class.
-     * @param bundle      The Bundle of extras to add to this intent.
-     * @param isNewTask   True to add flag of new task, false otherwise.
+     * @param pkgName   The name of the package.
+     * @param className The name of class.
+     * @param bundle    The Bundle of extras to add to this intent.
+     * @param isNewTask True to add flag of new task, false otherwise.
      * @return the intent of component
      */
-    public static Intent getComponentIntent(final String packageName,
+    public static Intent getComponentIntent(final String pkgName,
                                             final String className,
                                             final Bundle bundle,
                                             final boolean isNewTask) {
         Intent intent = new Intent();
         if (bundle != null) intent.putExtras(bundle);
-        ComponentName cn = new ComponentName(packageName, className);
+        ComponentName cn = new ComponentName(pkgName, className);
         intent.setComponent(cn);
         return getIntent(intent, isNewTask);
     }
@@ -416,19 +313,8 @@ public static Intent getShutdownIntent() {
      * @return the intent of dial
      */
     public static Intent getDialIntent(final String phoneNumber) {
-        return getDialIntent(phoneNumber, false);
-    }
-
-    /**
-     * Return the intent of dial.
-     *
-     * @param phoneNumber The phone number.
-     * @param isNewTask   True to add flag of new task, false otherwise.
-     * @return the intent of dial
-     */
-    public static Intent getDialIntent(final String phoneNumber, final boolean isNewTask) {
         Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber));
-        return getIntent(intent, isNewTask);
+        return getIntent(intent, true);
     }
 
     /**
@@ -440,21 +326,8 @@ public static Intent getDialIntent(final String phoneNumber, final boolean isNew
      */
     @RequiresPermission(CALL_PHONE)
     public static Intent getCallIntent(final String phoneNumber) {
-        return getCallIntent(phoneNumber, false);
-    }
-
-    /**
-     * Return the intent of call.
-     * 

Must hold {@code }

- * - * @param phoneNumber The phone number. - * @param isNewTask True to add flag of new task, false otherwise. - * @return the intent of call - */ - @RequiresPermission(CALL_PHONE) - public static Intent getCallIntent(final String phoneNumber, final boolean isNewTask) { Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + phoneNumber)); - return getIntent(intent, isNewTask); + return getIntent(intent, true); } /** @@ -465,24 +338,10 @@ public static Intent getCallIntent(final String phoneNumber, final boolean isNew * @return the intent of send SMS */ public static Intent getSendSmsIntent(final String phoneNumber, final String content) { - return getSendSmsIntent(phoneNumber, content, false); - } - - /** - * Return the intent of send SMS. - * - * @param phoneNumber The phone number. - * @param content The content of SMS. - * @param isNewTask True to add flag of new task, false otherwise. - * @return the intent of send SMS - */ - public static Intent getSendSmsIntent(final String phoneNumber, - final String content, - final boolean isNewTask) { Uri uri = Uri.parse("smsto:" + phoneNumber); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", content); - return getIntent(intent, isNewTask); + return getIntent(intent, true); } /** @@ -492,55 +351,16 @@ public static Intent getSendSmsIntent(final String phoneNumber, * @return the intent of capture */ public static Intent getCaptureIntent(final Uri outUri) { - return getCaptureIntent(outUri, false); - } - - /** - * Return the intent of capture. - * - * @param outUri The uri of output. - * @param isNewTask True to add flag of new task, false otherwise. - * @return the intent of capture - */ - public static Intent getCaptureIntent(final Uri outUri, final boolean isNewTask) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, outUri); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - return getIntent(intent, isNewTask); + return getIntent(intent, true); } private static Intent getIntent(final Intent intent, final boolean isNewTask) { return isNewTask ? intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) : intent; } - /////////////////////////////////////////////////////////////////////////// - // other utils methods - /////////////////////////////////////////////////////////////////////////// - - private static File getFileByPath(final String filePath) { - return isSpace(filePath) ? null : new File(filePath); - } - - private static boolean isSpace(final String s) { - if (s == null) return true; - for (int i = 0, len = s.length(); i < len; ++i) { - if (!Character.isWhitespace(s.charAt(i))) { - return false; - } - } - return true; - } - - private static Uri file2Uri(final File file) { - if (file == null) return null; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - String authority = Utils.getApp().getPackageName() + ".utilcode.provider"; - return FileProvider.getUriForFile(Utils.getApp(), authority, file); - } else { - return Uri.fromFile(file); - } - } - // /** // * 获取选择照片的 Intent // * diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index d4f3bd5b7b..892a428e92 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -2,7 +2,6 @@ import android.app.Activity; import android.content.Context; -import android.content.res.Resources; import android.graphics.Rect; import android.os.Build; import android.os.Bundle; @@ -171,7 +170,7 @@ private static int getDecorViewInvisibleHeight(@NonNull final Window window) { Log.d("KeyboardUtils", "getDecorViewInvisibleHeight: " + (decorView.getBottom() - outRect.bottom)); int delta = Math.abs(decorView.getBottom() - outRect.bottom); - if (delta <= getNavBarHeight() + getStatusBarHeight()) { + if (delta <= UtilsBridge.getNavBarHeight() + UtilsBridge.getStatusBarHeight()) { sDecorViewDelta = delta; return 0; } @@ -281,7 +280,7 @@ private static int getContentViewInvisibleHeight(final Window window) { Log.d("KeyboardUtils", "getContentViewInvisibleHeight: " + (contentView.getBottom() - outRect.bottom)); int delta = Math.abs(contentView.getBottom() - outRect.bottom); - if (delta <= getStatusBarHeight() + getNavBarHeight()) { + if (delta <= UtilsBridge.getStatusBarHeight() + UtilsBridge.getNavBarHeight()) { return 0; } return delta; @@ -357,26 +356,9 @@ private boolean isShouldHideKeyboard(View v, MotionEvent event) { */ } - private static int getStatusBarHeight() { - Resources resources = Utils.getApp().getResources(); - int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android"); - return resources.getDimensionPixelSize(resourceId); - } - - private static int getNavBarHeight() { - Resources res = Utils.getApp().getResources(); - int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android"); - if (resourceId != 0) { - return res.getDimensionPixelSize(resourceId); - } else { - return 0; - } - } - -/////////////////////////////////////////////////////////////////////////// -// interface -/////////////////////////////////////////////////////////////////////////// - + /////////////////////////////////////////////////////////////////////////// + // interface + /////////////////////////////////////////////////////////////////////////// public interface OnSoftInputChangedListener { void onSoftInputChanged(int height); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java index 5e07fb4ebd..f73dc14828 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java @@ -6,8 +6,6 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Build; @@ -18,7 +16,6 @@ import android.util.Log; import java.lang.reflect.Field; -import java.util.List; import java.util.Locale; /** @@ -127,7 +124,7 @@ private static void applyLanguage(@NonNull final Locale locale, if (isNeedStartActivity) { Intent intent = new Intent(); - String realActivityClassName = TextUtils.isEmpty(activityClassName) ? getLauncherActivity() : activityClassName; + String realActivityClassName = TextUtils.isEmpty(activityClassName) ? UtilsBridge.getLauncherActivity() : activityClassName; intent.setComponent(new ComponentName(Utils.getApp(), realActivityClassName)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK); Utils.getApp().startActivity(intent); @@ -211,36 +208,7 @@ private static void updateLanguage(final Context context, Locale locale) { } private static boolean isSameLocale(Locale locale, Locale contextLocale) { - return equals(contextLocale.getLanguage(), locale.getLanguage()) - && equals(contextLocale.getCountry(), locale.getCountry()); - } - - private static boolean equals(final CharSequence s1, final CharSequence s2) { - if (s1 == s2) return true; - int length; - if (s1 != null && s2 != null && (length = s1.length()) == s2.length()) { - if (s1 instanceof String && s2 instanceof String) { - return s1.equals(s2); - } else { - for (int i = 0; i < length; i++) { - if (s1.charAt(i) != s2.charAt(i)) return false; - } - return true; - } - } - return false; - } - - private static String getLauncherActivity() { - Intent intent = new Intent(Intent.ACTION_MAIN, null); - intent.addCategory(Intent.CATEGORY_LAUNCHER); - intent.setPackage(Utils.getApp().getPackageName()); - PackageManager pm = Utils.getApp().getPackageManager(); - List info = pm.queryIntentActivities(intent, 0); - ResolveInfo next = info.iterator().next(); - if (next != null) { - return next.activityInfo.name; - } - return "no launcher activity"; + return UtilsBridge.equals(contextLocale.getLanguage(), locale.getLanguage()) + && UtilsBridge.equals(contextLocale.getCountry(), locale.getCountry()); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java index aa899da536..4c02db523f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java @@ -1046,7 +1046,7 @@ private static void clipData2String(ClipData clipData, StringBuilder sb) { private static String object2Json(Object object) { if (object instanceof CharSequence) { - return formatJson(object.toString()); + return UtilsBridge.formatJson(object.toString()); } try { return UtilsBridge.getGson4LogUtils().toJson(object); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java index 3772dc0184..9f16830ecc 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java @@ -1,14 +1,11 @@ package com.blankj.utilcode.util; import android.annotation.SuppressLint; -import android.app.ActivityManager; import android.app.Service; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -22,7 +19,6 @@ import java.util.HashMap; import java.util.LinkedList; -import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -47,8 +43,8 @@ public class MessengerUtils { private static final String KEY_STRING = "MESSENGER_UTILS"; public static void register() { - if (isMainProcess()) { - if (isServiceRunning(ServerService.class.getName())) { + if (UtilsBridge.isMainProcess()) { + if (UtilsBridge.isServiceRunning(ServerService.class.getName())) { Log.i("MessengerUtils", "Server service is running."); return; } @@ -69,8 +65,8 @@ public static void register() { } public static void unregister() { - if (isMainProcess()) { - if (!isServiceRunning(ServerService.class.getName())) { + if (UtilsBridge.isMainProcess()) { + if (!UtilsBridge.isServiceRunning(ServerService.class.getName())) { Log.i("MessengerUtils", "Server service isn't running."); return; } @@ -98,6 +94,7 @@ public static void register(final String pkgName) { public static void unregister(final String pkgName) { if (sClientMap.containsKey(pkgName)) { Client client = sClientMap.get(pkgName); + sClientMap.remove(pkgName); client.unbind(); } else { Log.i("MessengerUtils", "unregister: client didn't register: " + pkgName); @@ -126,64 +123,6 @@ public static void post(@NonNull String key, @NonNull Bundle data) { } } - private static boolean isMainProcess() { - return Utils.getApp().getPackageName().equals(UtilsBridge.getCurrentProcessName()); - } - - private static boolean isAppInstalled(@NonNull final String pkgName) { - PackageManager pm = Utils.getApp().getPackageManager(); - try { - ApplicationInfo info = pm.getApplicationInfo(pkgName, 0); - return info != null && info.enabled; - } catch (PackageManager.NameNotFoundException e) { - return false; - } - } - - private static boolean isServiceRunning(final String className) { - ActivityManager am = - (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); - List info = am.getRunningServices(0x7FFFFFFF); - if (info == null || info.size() == 0) return false; - for (ActivityManager.RunningServiceInfo aInfo : info) { - if (className.equals(aInfo.service.getClassName())) return true; - } - return false; - } - - private static boolean isAppRunning(@NonNull final String pkgName) { - int uid; - PackageManager packageManager = Utils.getApp().getPackageManager(); - try { - ApplicationInfo ai = packageManager.getApplicationInfo(pkgName, 0); - if (ai == null) return false; - uid = ai.uid; - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - return false; - } - ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); - if (am != null) { - List taskInfo = am.getRunningTasks(Integer.MAX_VALUE); - if (taskInfo != null && taskInfo.size() > 0) { - for (ActivityManager.RunningTaskInfo aInfo : taskInfo) { - if (pkgName.equals(aInfo.baseActivity.getPackageName())) { - return true; - } - } - } - List serviceInfo = am.getRunningServices(Integer.MAX_VALUE); - if (serviceInfo != null && serviceInfo.size() > 0) { - for (ActivityManager.RunningServiceInfo aInfo : serviceInfo) { - if (uid == aInfo.uid) { - return true; - } - } - } - } - return false; - } - static class Client { String mPkgName; @@ -242,8 +181,8 @@ boolean bind() { Intent intent = new Intent(Utils.getApp(), ServerService.class); return Utils.getApp().bindService(intent, mConn, Context.BIND_AUTO_CREATE); } - if (isAppInstalled(mPkgName)) { - if (isAppRunning(mPkgName)) { + if (UtilsBridge.isAppInstalled(mPkgName)) { + if (UtilsBridge.isAppRunning(mPkgName)) { Intent intent = new Intent(mPkgName + ".messenger"); intent.setPackage(mPkgName); return Utils.getApp().bindService(intent, mConn, Context.BIND_AUTO_CREATE); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index 56bd8804ab..f1572e1046 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -6,23 +6,16 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; -import android.net.LinkProperties; -import android.net.Network; -import android.net.NetworkCapabilities; import android.net.NetworkInfo; -import android.net.NetworkRequest; import android.net.wifi.WifiManager; import android.os.Build; import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; import android.support.annotation.RequiresPermission; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.format.Formatter; import android.util.Log; -import org.jetbrains.annotations.NotNull; - import java.lang.reflect.Method; import java.net.InetAddress; import java.net.InterfaceAddress; @@ -39,7 +32,6 @@ import static android.Manifest.permission.ACCESS_WIFI_STATE; import static android.Manifest.permission.CHANGE_WIFI_STATE; import static android.Manifest.permission.INTERNET; -import static android.content.ContentValues.TAG; import static android.content.Context.WIFI_SERVICE; /** @@ -59,6 +51,7 @@ private NetworkUtils() { public enum NetworkType { NETWORK_ETHERNET, NETWORK_WIFI, + NETWORK_5G, NETWORK_4G, NETWORK_3G, NETWORK_2G, @@ -441,6 +434,8 @@ public static NetworkType getNetworkType() { case TelephonyManager.NETWORK_TYPE_LTE: return NetworkType.NETWORK_4G; + case TelephonyManager.NETWORK_TYPE_NR: + return NetworkType.NETWORK_5G; default: String subtypeName = info.getSubtypeName(); if (subtypeName.equalsIgnoreCase("TD-SCDMA") @@ -670,16 +665,26 @@ public static String getServerAddressByWifi() { * * @param listener The status of network changed listener */ - public static void registerNetworkStatusChangedListener(OnNetworkStatusChangedListener listener) { + public static void registerNetworkStatusChangedListener(final OnNetworkStatusChangedListener listener) { NetworkChangedReceiver.getInstance().registerListener(listener); } + /** + * Return whether the status of battery status changed listener registered. + * + * @param listener The listener + * @return True to registered, false otherwise. + */ + public static boolean isRegistered(final OnNetworkStatusChangedListener listener) { + return NetworkChangedReceiver.getInstance().isRegistered(listener); + } + /** * unregister the status of network changed listener. * * @param listener The status of network changed listener */ - public static void unregisterNetworkStatusChangedListener(OnNetworkStatusChangedListener listener) { + public static void unregisterNetworkStatusChangedListener(final OnNetworkStatusChangedListener listener) { NetworkChangedReceiver.getInstance().unregisterListener(listener); } @@ -709,6 +714,11 @@ public void run() { }); } + boolean isRegistered(final OnNetworkStatusChangedListener listener) { + if (listener == null) return false; + return mListeners.contains(listener); + } + void unregisterListener(final OnNetworkStatusChangedListener listener) { if (listener == null) return; UtilsBridge.runOnUiThread(new Runnable() { @@ -754,79 +764,79 @@ private static class LazyHolder { } } - /** - * Register the status of network changed listener. - */ - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - @RequiresPermission(ACCESS_NETWORK_STATE) - public static void registerNetworkStatusChangedListener() { - ConnectivityManager cm = (ConnectivityManager) Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE); - if (cm == null) return; - NetworkCallbackImpl networkCallback = NetworkCallbackImpl.LazyHolder.INSTANCE; - NetworkRequest.Builder builder = new NetworkRequest.Builder(); - NetworkRequest request = builder.build(); - cm.registerNetworkCallback(new NetworkRequest.Builder().build(), networkCallback); - } - - - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - public static final class NetworkCallbackImpl extends ConnectivityManager.NetworkCallback { - - @Override - public void onAvailable(@NotNull Network network) { - super.onAvailable(network); - LogUtils.d(TAG, "onAvailable: " + network); - } - - @Override - public void onLosing(@NonNull Network network, int maxMsToLive) { - super.onLosing(network, maxMsToLive); - LogUtils.d(TAG, "onLosing: " + network); - } - - @Override - public void onLost(@NotNull Network network) { - super.onLost(network); - LogUtils.e(TAG, "onLost: " + network); - } - - @Override - public void onUnavailable() { - super.onUnavailable(); - LogUtils.e(TAG, "onUnavailable"); - } - - @Override - public void onCapabilitiesChanged(@NotNull Network network, @NotNull NetworkCapabilities cap) { - super.onCapabilitiesChanged(network, cap); - if (cap.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) { - if (cap.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { - LogUtils.d(TAG, "onCapabilitiesChanged: 网络类型为wifi"); - } else if (cap.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { - LogUtils.d(TAG, "onCapabilitiesChanged: 蜂窝网络"); - } else { - LogUtils.d(TAG, "onCapabilitiesChanged: 其他网络"); - } - LogUtils.d(TAG, "onCapabilitiesChanged: " + network + ", " + cap); - } - } - - @Override - public void onLinkPropertiesChanged(@NonNull Network network, @NonNull LinkProperties lp) { - super.onLinkPropertiesChanged(network, lp); - LogUtils.d(TAG, "onLinkPropertiesChanged: " + network + ", " + lp); - } - - @Override - public void onBlockedStatusChanged(@NonNull Network network, boolean blocked) { - super.onBlockedStatusChanged(network, blocked); - LogUtils.d(TAG, "onBlockedStatusChanged: " + network + ", " + blocked); - } - - private static class LazyHolder { - private static final NetworkCallbackImpl INSTANCE = new NetworkCallbackImpl(); - } - } +// /** +// * Register the status of network changed listener. +// */ +// @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) +// @RequiresPermission(ACCESS_NETWORK_STATE) +// public static void registerNetworkStatusChangedListener() { +// ConnectivityManager cm = (ConnectivityManager) Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE); +// if (cm == null) return; +// NetworkCallbackImpl networkCallback = NetworkCallbackImpl.LazyHolder.INSTANCE; +// NetworkRequest.Builder builder = new NetworkRequest.Builder(); +// NetworkRequest request = builder.build(); +// cm.registerNetworkCallback(new NetworkRequest.Builder().build(), networkCallback); +// } +// +// +// @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) +// public static final class NetworkCallbackImpl extends ConnectivityManager.NetworkCallback { +// +// @Override +// public void onAvailable(@NotNull Network network) { +// super.onAvailable(network); +// LogUtils.d(TAG, "onAvailable: " + network); +// } +// +// @Override +// public void onLosing(@NonNull Network network, int maxMsToLive) { +// super.onLosing(network, maxMsToLive); +// LogUtils.d(TAG, "onLosing: " + network); +// } +// +// @Override +// public void onLost(@NotNull Network network) { +// super.onLost(network); +// LogUtils.e(TAG, "onLost: " + network); +// } +// +// @Override +// public void onUnavailable() { +// super.onUnavailable(); +// LogUtils.e(TAG, "onUnavailable"); +// } +// +// @Override +// public void onCapabilitiesChanged(@NotNull Network network, @NotNull NetworkCapabilities cap) { +// super.onCapabilitiesChanged(network, cap); +// if (cap.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) { +// if (cap.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { +// LogUtils.d(TAG, "onCapabilitiesChanged: 网络类型为wifi"); +// } else if (cap.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { +// LogUtils.d(TAG, "onCapabilitiesChanged: 蜂窝网络"); +// } else { +// LogUtils.d(TAG, "onCapabilitiesChanged: 其他网络"); +// } +// LogUtils.d(TAG, "onCapabilitiesChanged: " + network + ", " + cap); +// } +// } +// +// @Override +// public void onLinkPropertiesChanged(@NonNull Network network, @NonNull LinkProperties lp) { +// super.onLinkPropertiesChanged(network, lp); +// LogUtils.d(TAG, "onLinkPropertiesChanged: " + network + ", " + lp); +// } +// +// @Override +// public void onBlockedStatusChanged(@NonNull Network network, boolean blocked) { +// super.onBlockedStatusChanged(network, blocked); +// LogUtils.d(TAG, "onBlockedStatusChanged: " + network + ", " + blocked); +// } +// +// private static class LazyHolder { +// private static final NetworkCallbackImpl INSTANCE = new NetworkCallbackImpl(); +// } +// } public interface OnNetworkStatusChangedListener { void onDisconnected(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ObjectUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ObjectUtils.java index be5491ece0..d20a32574a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ObjectUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ObjectUtils.java @@ -1,6 +1,7 @@ package com.blankj.utilcode.util; import android.os.Build; +import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.support.v4.util.LongSparseArray; import android.support.v4.util.SimpleArrayMap; @@ -10,7 +11,9 @@ import android.util.SparseLongArray; import java.lang.reflect.Array; +import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.Map; /** @@ -184,13 +187,40 @@ public static boolean equals(final Object o1, final Object o2) { return o1 == o2 || (o1 != null && o1.equals(o2)); } + /** + * Returns 0 if the arguments are identical and {@code + * c.compare(a, b)} otherwise. + * Consequently, if both arguments are {@code null} 0 + * is returned. + */ + public static int compare(T a, T b, @NonNull Comparator c) { + return (a == b) ? 0 : c.compare(a, b); + } + + /** + * Checks that the specified object reference is not {@code null}. + */ + public static T requireNonNull(T obj) { + if (obj == null) throw new NullPointerException(); + return obj; + } + + /** + * Checks that the specified object reference is not {@code null} and + * throws a customized {@link NullPointerException} if it is. + */ + public static T requireNonNull(T obj, String ifNullTip) { + if (obj == null) throw new NullPointerException(ifNullTip); + return obj; + } + /** * Require the objects are not null. * * @param objects The object. * @throws NullPointerException if any object is null in objects */ - public static void requireNonNull(final Object... objects) { + public static void requireNonNulls(final Object... objects) { if (objects == null) throw new NullPointerException(); for (Object object : objects) { if (object == null) throw new NullPointerException(); @@ -212,6 +242,23 @@ public static T getOrDefault(final T object, final T defaultObject) { return object; } + /** + * Returns the result of calling {@code toString} for a non-{@code + * null} argument and {@code "null"} for a {@code null} argument. + */ + public static String toString(Object obj) { + return String.valueOf(obj); + } + + /** + * Returns the result of calling {@code toString} on the first + * argument if the first argument is not {@code null} and returns + * the second argument otherwise. + */ + public static String toString(Object o, String nullDefault) { + return (o != null) ? o.toString() : nullDefault; + } + /** * Return the hash code of object. * @@ -221,4 +268,11 @@ public static T getOrDefault(final T object, final T defaultObject) { public static int hashCode(final Object o) { return o != null ? o.hashCode() : 0; } + + /** + * Return the hash code of objects. + */ + public static int hashCodes(Object... values) { + return Arrays.hashCode(values); + } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java index 27d124b135..f3844129a9 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java @@ -134,7 +134,7 @@ public static String getInternalAppNoBackupFilesPath() { * @return the path of /storage/emulated/0 */ public static String getExternalStoragePath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStorageDirectory()); } @@ -144,7 +144,7 @@ public static String getExternalStoragePath() { * @return the path of /storage/emulated/0/Music */ public static String getExternalMusicPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)); } @@ -154,7 +154,7 @@ public static String getExternalMusicPath() { * @return the path of /storage/emulated/0/Podcasts */ public static String getExternalPodcastsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS)); } @@ -164,7 +164,7 @@ public static String getExternalPodcastsPath() { * @return the path of /storage/emulated/0/Ringtones */ public static String getExternalRingtonesPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES)); } @@ -174,7 +174,7 @@ public static String getExternalRingtonesPath() { * @return the path of /storage/emulated/0/Alarms */ public static String getExternalAlarmsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS)); } @@ -184,7 +184,7 @@ public static String getExternalAlarmsPath() { * @return the path of /storage/emulated/0/Notifications */ public static String getExternalNotificationsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)); } @@ -194,7 +194,7 @@ public static String getExternalNotificationsPath() { * @return the path of /storage/emulated/0/Pictures */ public static String getExternalPicturesPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)); } @@ -204,7 +204,7 @@ public static String getExternalPicturesPath() { * @return the path of /storage/emulated/0/Movies */ public static String getExternalMoviesPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)); } @@ -214,7 +214,7 @@ public static String getExternalMoviesPath() { * @return the path of /storage/emulated/0/Download */ public static String getExternalDownloadsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)); } @@ -224,7 +224,7 @@ public static String getExternalDownloadsPath() { * @return the path of /storage/emulated/0/DCIM */ public static String getExternalDcimPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)); } @@ -234,7 +234,7 @@ public static String getExternalDcimPath() { * @return the path of /storage/emulated/0/Documents */ public static String getExternalDocumentsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return getAbsolutePath(Environment.getExternalStorageDirectory()) + "/Documents"; } @@ -247,7 +247,7 @@ public static String getExternalDocumentsPath() { * @return the path of /storage/emulated/0/Android/data/package */ public static String getExternalAppDataPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; File externalCacheDir = Utils.getApp().getExternalCacheDir(); if (externalCacheDir == null) return ""; return getAbsolutePath(externalCacheDir.getParentFile()); @@ -259,7 +259,7 @@ public static String getExternalAppDataPath() { * @return the path of /storage/emulated/0/Android/data/package/cache */ public static String getExternalAppCachePath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalCacheDir()); } @@ -269,7 +269,7 @@ public static String getExternalAppCachePath() { * @return the path of /storage/emulated/0/Android/data/package/files */ public static String getExternalAppFilesPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(null)); } @@ -279,7 +279,7 @@ public static String getExternalAppFilesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Music */ public static String getExternalAppMusicPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_MUSIC)); } @@ -289,7 +289,7 @@ public static String getExternalAppMusicPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Podcasts */ public static String getExternalAppPodcastsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_PODCASTS)); } @@ -299,7 +299,7 @@ public static String getExternalAppPodcastsPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Ringtones */ public static String getExternalAppRingtonesPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_RINGTONES)); } @@ -309,7 +309,7 @@ public static String getExternalAppRingtonesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Alarms */ public static String getExternalAppAlarmsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_ALARMS)); } @@ -319,7 +319,7 @@ public static String getExternalAppAlarmsPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Notifications */ public static String getExternalAppNotificationsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS)); } @@ -329,7 +329,7 @@ public static String getExternalAppNotificationsPath() { * @return path of /storage/emulated/0/Android/data/package/files/Pictures */ public static String getExternalAppPicturesPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_PICTURES)); } @@ -339,7 +339,7 @@ public static String getExternalAppPicturesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Movies */ public static String getExternalAppMoviesPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_MOVIES)); } @@ -349,7 +349,7 @@ public static String getExternalAppMoviesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Download */ public static String getExternalAppDownloadPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)); } @@ -359,7 +359,7 @@ public static String getExternalAppDownloadPath() { * @return the path of /storage/emulated/0/Android/data/package/files/DCIM */ public static String getExternalAppDcimPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_DCIM)); } @@ -369,7 +369,7 @@ public static String getExternalAppDcimPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Documents */ public static String getExternalAppDocumentsPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return getAbsolutePath(Utils.getApp().getExternalFilesDir(null)) + "/Documents"; } @@ -382,14 +382,10 @@ public static String getExternalAppDocumentsPath() { * @return the path of /storage/emulated/0/Android/obb/package */ public static String getExternalAppObbPath() { - if (isExternalStorageDisable()) return ""; + if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getObbDir()); } - private static boolean isExternalStorageDisable() { - return !Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); - } - private static String getAbsolutePath(final File file) { if (file == null) return ""; return file.getAbsolutePath(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index 1f78a74874..e76a8bcd5e 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -37,8 +37,6 @@ */ public final class PermissionUtils { - private static List sPermissions = null; - private static PermissionUtils sInstance; private String[] mPermissionsParam; @@ -127,7 +125,7 @@ public static void requestWriteSettings(final SimpleCallback callback) { private static void startWriteSettingsActivity(final Activity activity, final int requestCode) { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + Utils.getApp().getPackageName())); - if (!isIntentAvailable(intent)) { + if (!UtilsBridge.isIntentAvailable(intent)) { launchAppDetailsSettings(); return; } @@ -158,7 +156,7 @@ public static void requestDrawOverlays(final SimpleCallback callback) { private static void startOverlayPermissionActivity(final Activity activity, final int requestCode) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); intent.setData(Uri.parse("package:" + Utils.getApp().getPackageName())); - if (!isIntentAvailable(intent)) { + if (!UtilsBridge.isIntentAvailable(intent)) { launchAppDetailsSettings(); return; } @@ -171,7 +169,7 @@ private static void startOverlayPermissionActivity(final Activity activity, fina public static void launchAppDetailsSettings() { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + Utils.getApp().getPackageName())); - if (!isIntentAvailable(intent)) return; + if (!UtilsBridge.isIntentAvailable(intent)) return; Utils.getApp().startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } @@ -185,13 +183,6 @@ public static PermissionUtils permission(@Permission final String... permissions return new PermissionUtils(permissions); } - private static boolean isIntentAvailable(final Intent intent) { - return Utils.getApp() - .getPackageManager() - .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY) - .size() > 0; - } - private PermissionUtils(final String... permissions) { mPermissionsParam = permissions; sInstance = this; @@ -296,25 +287,12 @@ private void startPermissionActivity() { } @RequiresApi(api = Build.VERSION_CODES.M) - private boolean rationale(final Activity activity, final Runnable againRunnable) { + private boolean shouldRationale(final UtilsTransActivity activity, final Runnable againRunnable) { boolean isRationale = false; if (mOnRationaleListener != null) { for (String permission : mPermissionsRequest) { if (activity.shouldShowRequestPermissionRationale(permission)) { - getPermissionsStatus(activity); - mOnRationaleListener.rationale(new ShouldRequest() { - @Override - public void again(boolean again) { - if (again) { - mPermissionsDenied = new ArrayList<>(); - mPermissionsDeniedForever = new ArrayList<>(); - againRunnable.run(); - } else { - activity.finish(); - requestCallback(); - } - } - }); + rationalInner(activity, againRunnable); isRationale = true; break; } @@ -324,6 +302,23 @@ public void again(boolean again) { return isRationale; } + private void rationalInner(final UtilsTransActivity activity, final Runnable againRunnable) { + getPermissionsStatus(activity); + mOnRationaleListener.rationale(activity, new ShouldRequest() { + @Override + public void again(boolean again) { + if (again) { + mPermissionsDenied = new ArrayList<>(); + mPermissionsDeniedForever = new ArrayList<>(); + againRunnable.run(); + } else { + activity.finish(); + requestCallback(); + } + } + }); + } + private void getPermissionsStatus(final Activity activity) { for (String permission : mPermissionsRequest) { if (isGranted(permission)) { @@ -385,7 +380,7 @@ public void accept(Intent data) { } @Override - public void onCreated(final Activity activity, @Nullable Bundle savedInstanceState) { + public void onCreated(final UtilsTransActivity activity, @Nullable Bundle savedInstanceState) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH); int type = activity.getIntent().getIntExtra(TYPE, -1); @@ -398,7 +393,7 @@ public void onCreated(final Activity activity, @Nullable Bundle savedInstanceSta if (sInstance.mThemeCallback != null) { sInstance.mThemeCallback.onActivityCreate(activity); } - if (sInstance.rationale(activity, new Runnable() { + if (sInstance.shouldRationale(activity, new Runnable() { @Override public void run() { requestPermissions(activity); @@ -429,7 +424,7 @@ private void requestPermissions(Activity activity) { } @Override - public void onRequestPermissionsResult(Activity activity, + public void onRequestPermissionsResult(UtilsTransActivity activity, int requestCode, String[] permissions, int[] grantResults) { @@ -441,13 +436,13 @@ public void onRequestPermissionsResult(Activity activity, @Override - public boolean dispatchTouchEvent(Activity activity, MotionEvent ev) { + public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) { activity.finish(); return true; } @Override - public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) { + public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) { if (requestCode == TYPE_WRITE_SETTINGS) { if (sSimpleCallback4WriteSettings == null) return; if (isGrantedWriteSettings()) { @@ -480,7 +475,7 @@ public void run() { public interface OnRationaleListener { - void rationale(ShouldRequest shouldRequest); + void rationale(UtilsTransActivity activity, ShouldRequest shouldRequest); interface ShouldRequest { void again(boolean again); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java index 42cab85931..8a9952fea0 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java @@ -2,9 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.net.Uri; import android.os.Build; import android.support.annotation.RequiresPermission; import android.telephony.TelephonyManager; @@ -274,15 +271,9 @@ public static String getSimOperatorByMnc() { * Skip to dial. * * @param phoneNumber The phone number. - * @return {@code true}: operate successfully
{@code false}: otherwise */ - public static boolean dial(final String phoneNumber) { - Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber)); - if (isIntentAvailable(intent)) { - Utils.getApp().startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); - return true; - } - return false; + public static void dial(final String phoneNumber) { + Utils.getApp().startActivity(UtilsBridge.getDialIntent(phoneNumber)); } /** @@ -290,16 +281,10 @@ public static boolean dial(final String phoneNumber) { *

Must hold {@code }

* * @param phoneNumber The phone number. - * @return {@code true}: operate successfully
{@code false}: otherwise */ @RequiresPermission(CALL_PHONE) - public static boolean call(final String phoneNumber) { - Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)); - if (isIntentAvailable(intent)) { - Utils.getApp().startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); - return true; - } - return false; + public static void call(final String phoneNumber) { + Utils.getApp().startActivity(UtilsBridge.getCallIntent(phoneNumber)); } /** @@ -307,27 +292,12 @@ public static boolean call(final String phoneNumber) { * * @param phoneNumber The phone number. * @param content The content. - * @return {@code true}: operate successfully
{@code false}: otherwise */ - public static boolean sendSms(final String phoneNumber, final String content) { - Uri uri = Uri.parse("smsto:" + phoneNumber); - Intent intent = new Intent(Intent.ACTION_SENDTO, uri); - if (isIntentAvailable(intent)) { - intent.putExtra("sms_body", content); - Utils.getApp().startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); - return true; - } - return false; + public static void sendSms(final String phoneNumber, final String content) { + Utils.getApp().startActivity(UtilsBridge.getSendSmsIntent(phoneNumber, content)); } private static TelephonyManager getTelephonyManager() { return (TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE); } - - private static boolean isIntentAvailable(final Intent intent) { - return Utils.getApp() - .getPackageManager() - .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY) - .size() > 0; - } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java index d7dbdda598..5425122759 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java @@ -200,7 +200,7 @@ public static boolean killBackgroundProcesses(@NonNull final String packageName) * @return {@code true}: yes
{@code false}: no */ public static boolean isMainProcess() { - return Utils.getApp().getPackageName().equals(UtilsBridge.getCurrentProcessName()); + return Utils.getApp().getPackageName().equals(getCurrentProcessName()); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java index d6413d6269..377d78f58e 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ResourceUtils.java @@ -5,17 +5,10 @@ import android.support.annotation.RawRes; import android.support.v4.content.ContextCompat; -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -160,10 +153,9 @@ public static boolean copyFileFromAssets(final String assetsFilePath, final Stri res &= copyFileFromAssets(assetsFilePath + "/" + asset, destFilePath + "/" + asset); } } else { - res = writeFileFromIS( + res = UtilsBridge.writeFileFromIS( destFilePath, - Utils.getApp().getAssets().open(assetsFilePath), - false + Utils.getApp().getAssets().open(assetsFilePath) ); } } catch (IOException e) { @@ -193,9 +185,9 @@ public static String readAssets2String(final String assetsFilePath) { public static String readAssets2String(final String assetsFilePath, final String charsetName) { try { InputStream is = Utils.getApp().getAssets().open(assetsFilePath); - byte[] bytes = is2Bytes(is);// close stream in it - if (bytes == null) return null; - if (isSpace(charsetName)) { + byte[] bytes = UtilsBridge.inputStream2Bytes(is); + if (bytes == null) return ""; + if (UtilsBridge.isSpace(charsetName)) { return new String(bytes); } else { try { @@ -207,7 +199,7 @@ public static String readAssets2String(final String assetsFilePath, final String } } catch (IOException e) { e.printStackTrace(); - return null; + return ""; } } @@ -218,7 +210,7 @@ public static String readAssets2String(final String assetsFilePath, final String * @return the content of file in assets */ public static List readAssets2List(final String assetsPath) { - return readAssets2List(assetsPath, null); + return readAssets2List(assetsPath, ""); } /** @@ -231,10 +223,10 @@ public static List readAssets2List(final String assetsPath) { public static List readAssets2List(final String assetsPath, final String charsetName) { try { - return is2List(Utils.getApp().getResources().getAssets().open(assetsPath), charsetName); + return UtilsBridge.inputStream2Lines(Utils.getApp().getResources().getAssets().open(assetsPath), charsetName); } catch (IOException e) { e.printStackTrace(); - return null; + return Collections.emptyList(); } } @@ -247,10 +239,9 @@ public static List readAssets2List(final String assetsPath, * @return {@code true}: success
{@code false}: fail */ public static boolean copyFileFromRaw(@RawRes final int resId, final String destFilePath) { - return writeFileFromIS( + return UtilsBridge.writeFileFromIS( destFilePath, - Utils.getApp().getResources().openRawResource(resId), - false + Utils.getApp().getResources().openRawResource(resId) ); } @@ -273,9 +264,9 @@ public static String readRaw2String(@RawRes final int resId) { */ public static String readRaw2String(@RawRes final int resId, final String charsetName) { InputStream is = Utils.getApp().getResources().openRawResource(resId); - byte[] bytes = is2Bytes(is);// close stream in it + byte[] bytes = UtilsBridge.inputStream2Bytes(is); if (bytes == null) return null; - if (isSpace(charsetName)) { + if (UtilsBridge.isSpace(charsetName)) { return new String(bytes); } else { try { @@ -294,7 +285,7 @@ public static String readRaw2String(@RawRes final int resId, final String charse * @return the content of file in assets */ public static List readRaw2List(@RawRes final int resId) { - return readRaw2List(resId, null); + return readRaw2List(resId, ""); } /** @@ -306,137 +297,6 @@ public static List readRaw2List(@RawRes final int resId) { */ public static List readRaw2List(@RawRes final int resId, final String charsetName) { - return is2List(Utils.getApp().getResources().openRawResource(resId), charsetName); - } - - /////////////////////////////////////////////////////////////////////////// - // other utils methods - /////////////////////////////////////////////////////////////////////////// - - private static boolean writeFileFromIS(final String filePath, - final InputStream is, - final boolean append) { - return writeFileFromIS(getFileByPath(filePath), is, append); - } - - private static boolean writeFileFromIS(final File file, - final InputStream is, - final boolean append) { - if (!createOrExistsFile(file) || is == null) return false; - OutputStream os = null; - try { - os = new BufferedOutputStream(new FileOutputStream(file, append)); - byte[] data = new byte[BUFFER_SIZE]; - int len; - while ((len = is.read(data, 0, BUFFER_SIZE)) != -1) { - os.write(data, 0, len); - } - return true; - } catch (IOException e) { - e.printStackTrace(); - return false; - } finally { - try { - is.close(); - } catch (IOException e) { - e.printStackTrace(); - } - try { - if (os != null) { - os.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - private static File getFileByPath(final String filePath) { - return isSpace(filePath) ? null : new File(filePath); - } - - private static boolean createOrExistsFile(final File file) { - if (file == null) return false; - if (file.exists()) return file.isFile(); - if (!createOrExistsDir(file.getParentFile())) return false; - try { - return file.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - return false; - } - } - - private static boolean createOrExistsDir(final File file) { - return file != null && (file.exists() ? file.isDirectory() : file.mkdirs()); - } - - private static boolean isSpace(final String s) { - if (s == null) return true; - for (int i = 0, len = s.length(); i < len; ++i) { - if (!Character.isWhitespace(s.charAt(i))) { - return false; - } - } - return true; - } - - private static byte[] is2Bytes(final InputStream is) { - if (is == null) return null; - ByteArrayOutputStream os = null; - try { - os = new ByteArrayOutputStream(); - byte[] b = new byte[BUFFER_SIZE]; - int len; - while ((len = is.read(b, 0, BUFFER_SIZE)) != -1) { - os.write(b, 0, len); - } - return os.toByteArray(); - } catch (IOException e) { - e.printStackTrace(); - return null; - } finally { - try { - is.close(); - } catch (IOException e) { - e.printStackTrace(); - } - try { - if (os != null) { - os.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - private static List is2List(final InputStream is, - final String charsetName) { - BufferedReader reader = null; - try { - List list = new ArrayList<>(); - if (isSpace(charsetName)) { - reader = new BufferedReader(new InputStreamReader(is)); - } else { - reader = new BufferedReader(new InputStreamReader(is, charsetName)); - } - String line; - while ((line = reader.readLine()) != null) { - list.add(line); - } - return list; - } catch (IOException e) { - e.printStackTrace(); - return null; - } finally { - try { - if (reader != null) { - reader.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } + return UtilsBridge.inputStream2Lines(Utils.getApp().getResources().openRawResource(resId), charsetName); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java index 8d9f75c2a1..2db6c16ed0 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java @@ -2,6 +2,7 @@ import android.content.Context; import android.os.Environment; +import android.os.StatFs; import android.os.storage.StorageManager; import android.os.storage.StorageVolume; @@ -40,7 +41,7 @@ public static boolean isSDCardEnableByEnvironment() { * @return the path of sdcard by environment */ public static String getSDCardPathByEnvironment() { - if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { + if (isSDCardEnableByEnvironment()) { return Environment.getExternalStorageDirectory().getAbsolutePath(); } return ""; @@ -124,6 +125,46 @@ public static List getMountedSDCardPath() { return path; } + /** + * Return the total size of sdcard. + * + * @param path The path. + * @return the total size of sdcard + */ + public static long getTotalSize(String path) { + StatFs statFs = new StatFs(path); + long blockSize; + long totalSize; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { + blockSize = statFs.getBlockSizeLong(); + totalSize = statFs.getBlockCountLong(); + } else { + blockSize = statFs.getBlockSize(); + totalSize = statFs.getBlockCount(); + } + return blockSize * totalSize; + } + + /** + * Return the available size of sdcard. + * + * @param path The path. + * @return the available size of sdcard + */ + public static long getAvailableSize(final String path) { + StatFs statFs = new StatFs(path); + long blockSize; + long availableSize; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { + blockSize = statFs.getBlockSizeLong(); + availableSize = statFs.getAvailableBlocksLong(); + } else { + blockSize = statFs.getBlockSize(); + availableSize = statFs.getAvailableBlocks(); + } + return blockSize * availableSize; + } + public static class SDCardInfo { private String path; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SPUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SPUtils.java index 554a2ed586..2c67dc382c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SPUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SPUtils.java @@ -22,7 +22,8 @@ public final class SPUtils { private static final Map SP_UTILS_MAP = new HashMap<>(); - private SharedPreferences sp; + + private SharedPreferences sp; /** * Return the single {@link SPUtils} instance diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java index 1a01216e9d..2cd6890242 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.support.annotation.NonNull; import java.util.HashSet; import java.util.List; @@ -45,7 +46,7 @@ public static Set getAllRunningServices() { * * @param className The name of class. */ - public static void startService(final String className) { + public static void startService(@NonNull final String className) { try { startService(Class.forName(className)); } catch (Exception e) { @@ -58,7 +59,7 @@ public static void startService(final String className) { * * @param cls The service class. */ - public static void startService(final Class cls) { + public static void startService(@NonNull final Class cls) { Intent intent = new Intent(Utils.getApp(), cls); Utils.getApp().startService(intent); } @@ -69,7 +70,7 @@ public static void startService(final Class cls) { * @param className The name of class. * @return {@code true}: success
{@code false}: fail */ - public static boolean stopService(final String className) { + public static boolean stopService(@NonNull final String className) { try { return stopService(Class.forName(className)); } catch (Exception e) { @@ -84,7 +85,7 @@ public static boolean stopService(final String className) { * @param cls The name of class. * @return {@code true}: success
{@code false}: fail */ - public static boolean stopService(final Class cls) { + public static boolean stopService(@NonNull final Class cls) { Intent intent = new Intent(Utils.getApp(), cls); return Utils.getApp().stopService(intent); } @@ -105,8 +106,8 @@ public static boolean stopService(final Class cls) { *
  • {@link Context#BIND_WAIVE_PRIORITY}
  • * */ - public static void bindService(final String className, - final ServiceConnection conn, + public static void bindService(@NonNull final String className, + @NonNull final ServiceConnection conn, final int flags) { try { bindService(Class.forName(className), conn, flags); @@ -131,8 +132,8 @@ public static void bindService(final String className, *
  • {@link Context#BIND_WAIVE_PRIORITY}
  • * */ - public static void bindService(final Class cls, - final ServiceConnection conn, + public static void bindService(@NonNull final Class cls, + @NonNull final ServiceConnection conn, final int flags) { Intent intent = new Intent(Utils.getApp(), cls); Utils.getApp().bindService(intent, conn, flags); @@ -143,7 +144,7 @@ public static void bindService(final Class cls, * * @param conn The ServiceConnection object. */ - public static void unbindService(final ServiceConnection conn) { + public static void unbindService(@NonNull final ServiceConnection conn) { Utils.getApp().unbindService(conn); } @@ -153,7 +154,7 @@ public static void unbindService(final ServiceConnection conn) { * @param cls The service class. * @return {@code true}: yes
    {@code false}: no */ - public static boolean isServiceRunning(final Class cls) { + public static boolean isServiceRunning(@NonNull final Class cls) { return isServiceRunning(cls.getName()); } @@ -163,7 +164,7 @@ public static boolean isServiceRunning(final Class cls) { * @param className The name of class. * @return {@code true}: yes
    {@code false}: no */ - public static boolean isServiceRunning(final String className) { + public static boolean isServiceRunning(@NonNull final String className) { ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); List info = am.getRunningServices(0x7FFFFFFF); if (info == null || info.size() == 0) return false; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java index 85b82d4ed4..86141a8d56 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java @@ -84,6 +84,10 @@ public final class SpanUtils { private static final String LINE_SEPARATOR = System.getProperty("line.separator"); + public static SpanUtils with(final TextView textView) { + return new SpanUtils(textView); + } + private TextView mTextView; private CharSequence mText; private int flag; @@ -135,6 +139,7 @@ public final class SpanUtils { private int spaceColor; private SerializableSpannableStringBuilder mBuilder; + private boolean isCreated; private int mType; private final int mTypeCharSequence = 0; @@ -826,10 +831,14 @@ public SpannableStringBuilder create() { if (mTextView != null) { mTextView.setText(mBuilder); } + isCreated = true; return mBuilder; } private void applyLast() { + if (isCreated) { + return; + } if (mType == mTypeCharSequence) { updateCharCharSequence(); } else if (mType == mTypeImage) { @@ -1448,12 +1457,4 @@ private static class SerializableSpannableStringBuilder extends SpannableStringB private static final long serialVersionUID = 4909567650765875771L; } - - /////////////////////////////////////////////////////////////////////////// - // static - /////////////////////////////////////////////////////////////////////////// - - public static SpanUtils with(final TextView textView) { - return new SpanUtils(textView); - } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java index d2886fb99e..dde92562c2 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java @@ -1585,7 +1585,7 @@ private static long millis2TimeSpan(final long millis, @TimeConstants.Unit final return millis / unit; } - private static String millis2FitTimeSpan(long millis, int precision) { + static String millis2FitTimeSpan(long millis, int precision) { if (precision <= 0) return null; precision = Math.min(precision, 5); String[] units = {"天", "小时", "分钟", "秒", "毫秒"}; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java index 5c92facee0..7717b44dae 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java @@ -1,7 +1,5 @@ package com.blankj.utilcode.util; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -23,7 +21,7 @@ public final class UiMessageUtils implements Handler.Callback { private static final String TAG = "UiMessageUtils"; - private static final boolean DEBUG = isAppDebug(); + private static final boolean DEBUG = UtilsBridge.isAppDebug(); private final Handler mHandler = new Handler(Looper.getMainLooper(), this); private final UiMessage mMessage = new UiMessage(null); @@ -237,17 +235,6 @@ private void logMessageHandling(@NonNull final UiMessage msg) { } } - private static boolean isAppDebug() { - try { - PackageManager pm = Utils.getApp().getPackageManager(); - ApplicationInfo ai = pm.getApplicationInfo(Utils.getApp().getPackageName(), 0); - return ai != null && (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - return false; - } - } - public static final class UiMessage { private Message mMessage; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java index 408ff7207a..8c4312d354 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java @@ -40,7 +40,7 @@ private Utils() { * * @param app application */ - static void init(final Application app) { + public static void init(final Application app) { if (sApp != null) return; sApp = app; UtilsBridge.init(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 4c01c0caac..25fb01a3af 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -5,7 +5,10 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.Parcelable; +import android.support.annotation.NonNull; +import android.support.annotation.RequiresPermission; import android.view.View; import com.google.gson.Gson; @@ -18,6 +21,9 @@ import java.io.Serializable; import java.lang.reflect.Type; import java.util.LinkedList; +import java.util.List; + +import static android.Manifest.permission.CALL_PHONE; /** *
    @@ -30,7 +36,7 @@
     class UtilsBridge {
     
         static void init() {
    -        initUtilsActivityLifecycleImpl();
    +        UtilsActivityLifecycleImpl.INSTANCE.init();
             preLoad(AdaptScreenUtils.getPreLoadRunnable());
         }
     
    @@ -74,6 +80,10 @@ static boolean isActivityAlive(final Activity activity) {
             return ActivityUtils.isActivityAlive(activity);
         }
     
    +    static String getLauncherActivity() {
    +        return ActivityUtils.getLauncherActivity();
    +    }
    +
         static String getLauncherActivity(final String pkg) {
             return ActivityUtils.getLauncherActivity(pkg);
         }
    @@ -98,6 +108,14 @@ static Context getTopActivityOrApp() {
             }
         }
     
    +    static boolean isAppRunning(@NonNull final String pkgName) {
    +        return AppUtils.isAppRunning(pkgName);
    +    }
    +
    +    static boolean isAppInstalled(final String pkgName) {
    +        return AppUtils.isAppInstalled(pkgName);
    +    }
    +
         static String getAppVersionName() {
             return AppUtils.getAppVersionName();
         }
    @@ -106,6 +124,21 @@ static int getAppVersionCode() {
             return AppUtils.getAppVersionCode();
         }
     
    +    static boolean isAppDebug() {
    +        return AppUtils.isAppDebug();
    +    }
    +
    +    ///////////////////////////////////////////////////////////////////////////
    +    // BarUtils
    +    ///////////////////////////////////////////////////////////////////////////
    +    static int getStatusBarHeight() {
    +        return BarUtils.getStatusBarHeight();
    +    }
    +
    +    static int getNavBarHeight() {
    +        return BarUtils.getNavBarHeight();
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // ConvertUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -166,6 +199,10 @@ static byte[] inputStream2Bytes(final InputStream is) {
             return ConvertUtils.inputStream2Bytes(is);
         }
     
    +    static List inputStream2Lines(final InputStream is, final String charsetName) {
    +        return ConvertUtils.inputStream2Lines(is, charsetName);
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // EncodeUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -189,22 +226,21 @@ static byte[] hashTemplate(final byte[] data, final String algorithm) {
         ///////////////////////////////////////////////////////////////////////////
         static boolean writeFileFromBytes(final File file,
                                           final byte[] bytes) {
    -        return FileIOUtils.writeFileFromBytesByMap(file, bytes, true);
    +        return FileIOUtils.writeFileFromBytesByChannel(file, bytes, true);
         }
     
         static byte[] readFile2Bytes(final File file) {
    -        return FileIOUtils.readFile2BytesByMap(file);
    +        return FileIOUtils.readFile2BytesByChannel(file);
         }
     
         static boolean writeFileFromString(final String filePath, final String content) {
             return FileIOUtils.writeFileFromString(filePath, content);
         }
     
    -    static boolean writeFileFromIS(final File file, final InputStream is) {
    -        return FileIOUtils.writeFileFromIS(file, is);
    +    static boolean writeFileFromIS(final String filePath, final InputStream is) {
    +        return FileIOUtils.writeFileFromIS(filePath, is);
         }
     
    -
         ///////////////////////////////////////////////////////////////////////////
         // FileUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -286,26 +322,45 @@ static Drawable bitmap2Drawable(final Bitmap bitmap) {
             return ImageUtils.bitmap2Drawable(bitmap);
         }
     
    -    static Intent getShutdownIntent() {
    -        return IntentUtils.getShutdownIntent();
    -    }
    -
         ///////////////////////////////////////////////////////////////////////////
         // IntentUtils
         ///////////////////////////////////////////////////////////////////////////
    -    static Intent getLaunchAppIntent(final String packageName) {
    -        return IntentUtils.getLaunchAppIntent(packageName);
    +    static boolean isIntentAvailable(final Intent intent) {
    +        return IntentUtils.isIntentAvailable(intent);
    +    }
    +
    +    static Intent getLaunchAppIntent(final String pkgName) {
    +        return IntentUtils.getLaunchAppIntent(pkgName);
         }
     
         static Intent getInstallAppIntent(final File file) {
             return IntentUtils.getInstallAppIntent(file);
         }
     
    -    static Intent getUninstallAppIntent(final String packageName) {
    -        return IntentUtils.getUninstallAppIntent(packageName);
    +    static Intent getUninstallAppIntent(final String pkgName) {
    +        return IntentUtils.getUninstallAppIntent(pkgName);
         }
     
    +    static Intent getDialIntent(final String phoneNumber) {
    +        return IntentUtils.getDialIntent(phoneNumber);
    +    }
     
    +    @RequiresPermission(CALL_PHONE)
    +    static Intent getCallIntent(final String phoneNumber) {
    +        return IntentUtils.getCallIntent(phoneNumber);
    +    }
    +
    +    static Intent getSendSmsIntent(final String phoneNumber, final String content) {
    +        return IntentUtils.getSendSmsIntent(phoneNumber, content);
    +    }
    +
    +
    +    ///////////////////////////////////////////////////////////////////////////
    +    // JsonUtils
    +    ///////////////////////////////////////////////////////////////////////////
    +    static String formatJson(String json) {
    +        return JsonUtils.formatJson(json);
    +    }
     
         ///////////////////////////////////////////////////////////////////////////
         // KeyboardUtils
    @@ -324,6 +379,10 @@ static void applyLanguage(final Activity activity) {
         ///////////////////////////////////////////////////////////////////////////
         // ProcessUtils
         ///////////////////////////////////////////////////////////////////////////
    +    static boolean isMainProcess() {
    +        return ProcessUtils.isMainProcess();
    +    }
    +
         static String getForegroundProcessName() {
             return ProcessUtils.getForegroundProcessName();
         }
    @@ -332,6 +391,20 @@ static String getCurrentProcessName() {
             return ProcessUtils.getCurrentProcessName();
         }
     
    +    ///////////////////////////////////////////////////////////////////////////
    +    // SDCardUtils
    +    ///////////////////////////////////////////////////////////////////////////
    +    static boolean isSDCardEnableByEnvironment() {
    +        return SDCardUtils.isSDCardEnableByEnvironment();
    +    }
    +
    +    ///////////////////////////////////////////////////////////////////////////
    +    // ServiceUtils
    +    ///////////////////////////////////////////////////////////////////////////
    +    static boolean isServiceRunning(final String className) {
    +        return ServiceUtils.isServiceRunning(className);
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // ShellUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -372,6 +445,10 @@ static boolean isSpace(final String s) {
             return StringUtils.isSpace(s);
         }
     
    +    static boolean equals(final CharSequence s1, final CharSequence s2) {
    +        return StringUtils.equals(s1, s2);
    +    }
    +
     
         ///////////////////////////////////////////////////////////////////////////
         // ThreadUtils
    @@ -396,6 +473,13 @@ static String getFullStackTrace(Throwable throwable) {
             return ThrowableUtils.getFullStackTrace(throwable);
         }
     
    +    ///////////////////////////////////////////////////////////////////////////
    +    // TimeUtils
    +    ///////////////////////////////////////////////////////////////////////////
    +    static String millis2FitTimeSpan(long millis, int precision) {
    +        return TimeUtils.millis2FitTimeSpan(millis, precision);
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // ToastUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -407,19 +491,19 @@ static void toastCancel() {
             ToastUtils.cancel();
         }
     
    -    ///////////////////////////////////////////////////////////////////////////
    -    // private
    -    ///////////////////////////////////////////////////////////////////////////
    -    private static void initUtilsActivityLifecycleImpl() {
    -        UtilsActivityLifecycleImpl.INSTANCE.init();
    -    }
    -
         private static void preLoad(final Runnable... runs) {
             for (final Runnable r : runs) {
                 ThreadUtils.getCachedPool().execute(r);
             }
         }
     
    +    ///////////////////////////////////////////////////////////////////////////
    +    // UriUtils
    +    ///////////////////////////////////////////////////////////////////////////
    +    static Uri file2Uri(final File file) {
    +        return UriUtils.file2Uri(file);
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // class
         ///////////////////////////////////////////////////////////////////////////
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsFileProvider.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsFileProvider.java
    index 982a5b734c..d0cb7c63fd 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsFileProvider.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsFileProvider.java
    @@ -17,10 +17,6 @@ public class UtilsFileProvider extends FileProvider {
         public boolean onCreate() {
             //noinspection ConstantConditions
             Utils.init((Application) getContext().getApplicationContext());
    -//            try {
    -//                Class.forName("com.blankj.utildebug.DebugUtils");
    -//            } catch (ClassNotFoundException ignore) {
    -//            }
             return true;
         }
     }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
    index 8938285dfb..46b6dd2bca 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
    @@ -1,6 +1,5 @@
     package com.blankj.utilcode.util;
     
    -import android.app.Activity;
     import android.content.Intent;
     import android.os.Bundle;
     import android.support.annotation.Nullable;
    @@ -131,27 +130,27 @@ public boolean dispatchTouchEvent(MotionEvent ev) {
         }
     
         public abstract static class TransActivityDelegate {
    -        public void onCreateBefore(Activity activity, @Nullable Bundle savedInstanceState) {/**/}
    +        public void onCreateBefore(UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/}
     
    -        public void onCreated(Activity activity, @Nullable Bundle savedInstanceState) {/**/}
    +        public void onCreated(UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/}
     
    -        public void onStarted(Activity activity) {/**/}
    +        public void onStarted(UtilsTransActivity activity) {/**/}
     
    -        public void onDestroy(Activity activity) {/**/}
    +        public void onDestroy(UtilsTransActivity activity) {/**/}
     
    -        public void onResumed(Activity activity) {/**/}
    +        public void onResumed(UtilsTransActivity activity) {/**/}
     
    -        public void onPaused(Activity activity) {/**/}
    +        public void onPaused(UtilsTransActivity activity) {/**/}
     
    -        public void onStopped(Activity activity) {/**/}
    +        public void onStopped(UtilsTransActivity activity) {/**/}
     
    -        public void onSaveInstanceState(Activity activity, Bundle outState) {/**/}
    +        public void onSaveInstanceState(UtilsTransActivity activity, Bundle outState) {/**/}
     
    -        public void onRequestPermissionsResult(Activity activity, int requestCode, String[] permissions, int[] grantResults) {/**/}
    +        public void onRequestPermissionsResult(UtilsTransActivity activity, int requestCode, String[] permissions, int[] grantResults) {/**/}
     
    -        public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {/**/}
    +        public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) {/**/}
     
    -        public boolean dispatchTouchEvent(Activity activity, MotionEvent ev) {
    +        public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) {
                 return false;
             }
         }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java
    index a79afa737a..783048d8ff 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java
    @@ -66,7 +66,7 @@ public static boolean zipFiles(final Collection srcFilePaths,
             try {
                 zos = new ZipOutputStream(new FileOutputStream(zipFilePath));
                 for (String srcFile : srcFilePaths) {
    -                if (!zipFile(getFileByPath(srcFile), "", zos, comment)) return false;
    +                if (!zipFile(UtilsBridge.getFileByPath(srcFile), "", zos, comment)) return false;
                 }
                 return true;
             } finally {
    @@ -130,7 +130,7 @@ public static boolean zipFiles(final Collection srcFiles,
         public static boolean zipFile(final String srcFilePath,
                                       final String zipFilePath)
                 throws IOException {
    -        return zipFile(getFileByPath(srcFilePath), getFileByPath(zipFilePath), null);
    +        return zipFile(UtilsBridge.getFileByPath(srcFilePath), UtilsBridge.getFileByPath(zipFilePath), null);
         }
     
         /**
    @@ -146,7 +146,7 @@ public static boolean zipFile(final String srcFilePath,
                                       final String zipFilePath,
                                       final String comment)
                 throws IOException {
    -        return zipFile(getFileByPath(srcFilePath), getFileByPath(zipFilePath), comment);
    +        return zipFile(UtilsBridge.getFileByPath(srcFilePath), UtilsBridge.getFileByPath(zipFilePath), comment);
         }
     
         /**
    @@ -193,7 +193,7 @@ private static boolean zipFile(final File srcFile,
                                        final ZipOutputStream zos,
                                        final String comment)
                 throws IOException {
    -        rootPath = rootPath + (isSpace(rootPath) ? "" : File.separator) + srcFile.getName();
    +        rootPath = rootPath + (UtilsBridge.isSpace(rootPath) ? "" : File.separator) + srcFile.getName();
             if (srcFile.isDirectory()) {
                 File[] fileList = srcFile.listFiles();
                 if (fileList == null || fileList.length <= 0) {
    @@ -269,7 +269,7 @@ public static List unzipFileByKeyword(final String zipFilePath,
                                                     final String destDirPath,
                                                     final String keyword)
                 throws IOException {
    -        return unzipFileByKeyword(getFileByPath(zipFilePath), getFileByPath(destDirPath), keyword);
    +        return unzipFileByKeyword(UtilsBridge.getFileByPath(zipFilePath), UtilsBridge.getFileByPath(destDirPath), keyword);
         }
     
         /**
    @@ -290,7 +290,7 @@ public static List unzipFileByKeyword(final File zipFile,
             ZipFile zip = new ZipFile(zipFile);
             Enumeration entries = zip.entries();
             try {
    -            if (isSpace(keyword)) {
    +            if (UtilsBridge.isSpace(keyword)) {
                     while (entries.hasMoreElements()) {
                         ZipEntry entry = ((ZipEntry) entries.nextElement());
                         String entryName = entry.getName().replace("\\", "/");
    @@ -327,9 +327,9 @@ private static boolean unzipChildFile(final File destDir,
             File file = new File(destDir, name);
             files.add(file);
             if (entry.isDirectory()) {
    -            return createOrExistsDir(file);
    +            return UtilsBridge.createOrExistsDir(file);
             } else {
    -            if (!createOrExistsFile(file)) return false;
    +            if (!UtilsBridge.createOrExistsFile(file)) return false;
                 InputStream in = null;
                 OutputStream out = null;
                 try {
    @@ -361,7 +361,7 @@ private static boolean unzipChildFile(final File destDir,
          */
         public static List getFilesPath(final String zipFilePath)
                 throws IOException {
    -        return getFilesPath(getFileByPath(zipFilePath));
    +        return getFilesPath(UtilsBridge.getFileByPath(zipFilePath));
         }
     
         /**
    @@ -399,7 +399,7 @@ public static List getFilesPath(final File zipFile)
          */
         public static List getComments(final String zipFilePath)
                 throws IOException {
    -        return getComments(getFileByPath(zipFilePath));
    +        return getComments(UtilsBridge.getFileByPath(zipFilePath));
         }
     
         /**
    @@ -422,34 +422,4 @@ public static List getComments(final File zipFile)
             zip.close();
             return comments;
         }
    -
    -    private static boolean createOrExistsDir(final File file) {
    -        return file != null && (file.exists() ? file.isDirectory() : file.mkdirs());
    -    }
    -
    -    private static boolean createOrExistsFile(final File file) {
    -        if (file == null) return false;
    -        if (file.exists()) return file.isFile();
    -        if (!createOrExistsDir(file.getParentFile())) return false;
    -        try {
    -            return file.createNewFile();
    -        } catch (IOException e) {
    -            e.printStackTrace();
    -            return false;
    -        }
    -    }
    -
    -    private static File getFileByPath(final String filePath) {
    -        return isSpace(filePath) ? null : new File(filePath);
    -    }
    -
    -    private static boolean isSpace(final String s) {
    -        if (s == null) return true;
    -        for (int i = 0, len = s.length(); i < len; ++i) {
    -            if (!Character.isWhitespace(s.charAt(i))) {
    -                return false;
    -            }
    -        }
    -        return true;
    -    }
     }
    diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java
    index 51c3ea38d9..6e097938bf 100644
    --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java
    +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java
    @@ -18,7 +18,7 @@
      * 
    */ @RunWith(RobolectricTestRunner.class) -@Config(manifest = Config.NONE, shadows = { ShadowLog.class }) +@Config(manifest = Config.NONE,shadows = { ShadowLog.class }) public class BaseTest { @BusUtils.Bus(tag = "base") diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskStaticUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskStaticUtilsTest.java index 096ee57994..7fcff6beb1 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskStaticUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskStaticUtilsTest.java @@ -126,22 +126,22 @@ public void getJSONArray() { @Test public void getBitmap() { assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap1", CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap1", CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap1", null, CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap1", null, CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG, 100) ); assertNull(CacheDiskStaticUtils.getBitmap("bitmap2", null, CACHE_DISK_UTILS1)); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap2", CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap2", CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap2", null, CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CacheDiskStaticUtils.getBitmap("bitmap2", null, CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG, 100) ); assertNull(CacheDiskStaticUtils.getBitmap("bitmap1", null, CACHE_DISK_UTILS2)); } @@ -149,22 +149,22 @@ public void getBitmap() { @Test public void getDrawable() { assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable1", CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable1", CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable1", null, CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable1", null, CACHE_DISK_UTILS1), Bitmap.CompressFormat.PNG, 100) ); assertNull(CacheDiskStaticUtils.getDrawable("drawable2", null, CACHE_DISK_UTILS1)); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable2", CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable2", CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable2", null, CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CacheDiskStaticUtils.getDrawable("drawable2", null, CACHE_DISK_UTILS2), Bitmap.CompressFormat.PNG, 100) ); assertNull(CacheDiskStaticUtils.getDrawable("drawable1", null, CACHE_DISK_UTILS2)); } diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskUtilsTest.java index 25a9757bb2..d772225da6 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDiskUtilsTest.java @@ -127,22 +127,22 @@ public void getJSONArray() { @Test public void getBitmap() { assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS1.getBitmap("bitmap1"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS1.getBitmap("bitmap1"), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS1.getBitmap("bitmap1", null), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS1.getBitmap("bitmap1", null), Bitmap.CompressFormat.PNG, 100) ); assertNull(CACHE_DISK_UTILS1.getBitmap("bitmap2", null)); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS2.getBitmap("bitmap2"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS2.getBitmap("bitmap2"), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS2.getBitmap("bitmap2", null), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CACHE_DISK_UTILS2.getBitmap("bitmap2", null), Bitmap.CompressFormat.PNG, 100) ); assertNull(CACHE_DISK_UTILS2.getBitmap("bitmap1", null)); } @@ -151,22 +151,22 @@ public void getBitmap() { public void getDrawable() { String bitmapString = "Bitmap (100 x 100) compressed as PNG with quality 100"; assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CACHE_DISK_UTILS1.getDrawable("drawable1"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CACHE_DISK_UTILS1.getDrawable("drawable1"), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CACHE_DISK_UTILS1.getDrawable("drawable1", null), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CACHE_DISK_UTILS1.getDrawable("drawable1", null), Bitmap.CompressFormat.PNG, 100) ); assertNull(CACHE_DISK_UTILS1.getDrawable("drawable2", null)); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CACHE_DISK_UTILS2.getDrawable("drawable2"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CACHE_DISK_UTILS2.getDrawable("drawable2"), Bitmap.CompressFormat.PNG, 100) ); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CACHE_DISK_UTILS2.getDrawable("drawable2", null), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CACHE_DISK_UTILS2.getDrawable("drawable2", null), Bitmap.CompressFormat.PNG, 100) ); assertNull(CACHE_DISK_UTILS2.getDrawable("drawable1", null)); } diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleStaticUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleStaticUtilsTest.java index d0dfcde1c4..85ac9bd05a 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleStaticUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleStaticUtilsTest.java @@ -111,8 +111,8 @@ public void getBitmap() { assertEquals(BITMAP, CacheDoubleStaticUtils.getBitmap("bitmap")); CACHE_MEMORY_UTILS.remove("bitmap"); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CacheDoubleStaticUtils.getBitmap("bitmap"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CacheDoubleStaticUtils.getBitmap("bitmap"), Bitmap.CompressFormat.PNG, 100) ); CACHE_DISK_UTILS.remove("bitmap"); assertNull(CacheDoubleStaticUtils.getBitmap("bitmap")); @@ -123,8 +123,8 @@ public void getDrawable() { assertEquals(DRAWABLE, CacheDoubleStaticUtils.getDrawable("drawable")); CACHE_MEMORY_UTILS.remove("drawable"); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CacheDoubleStaticUtils.getDrawable("drawable"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CacheDoubleStaticUtils.getDrawable("drawable"), Bitmap.CompressFormat.PNG, 100) ); CACHE_DISK_UTILS.remove("drawable"); assertNull(CacheDoubleStaticUtils.getDrawable("drawable")); diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleUtilsTest.java index 3b9873b8f8..4fff847af0 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/CacheDoubleUtilsTest.java @@ -111,8 +111,8 @@ public void getBitmap() { assertEquals(BITMAP, CACHE_DOUBLE_UTILS.getBitmap("bitmap")); CACHE_MEMORY_UTILS.remove("bitmap"); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.bitmap2Bytes(CACHE_DOUBLE_UTILS.getBitmap("bitmap"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.bitmap2Bytes(CACHE_DOUBLE_UTILS.getBitmap("bitmap"), Bitmap.CompressFormat.PNG, 100) ); CACHE_DISK_UTILS.remove("bitmap"); assertNull(CACHE_DOUBLE_UTILS.getBitmap("bitmap")); @@ -124,8 +124,8 @@ public void getDrawable() { assertEquals(DRAWABLE, CACHE_DOUBLE_UTILS.getDrawable("drawable")); CACHE_MEMORY_UTILS.remove("drawable"); assertArrayEquals( - ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG), - ImageUtils.drawable2Bytes(CACHE_DOUBLE_UTILS.getDrawable("drawable"), Bitmap.CompressFormat.PNG) + ImageUtils.bitmap2Bytes(BITMAP, Bitmap.CompressFormat.PNG, 100), + ImageUtils.drawable2Bytes(CACHE_DOUBLE_UTILS.getDrawable("drawable"), Bitmap.CompressFormat.PNG, 100) ); CACHE_DISK_UTILS.remove("drawable"); assertNull(CACHE_DOUBLE_UTILS.getDrawable("drawable")); diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/GsonUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/GsonUtilsTest.java index c52b0e8efa..62e47138f6 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/GsonUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/GsonUtilsTest.java @@ -20,7 +20,6 @@ public class GsonUtilsTest extends BaseTest { @Test public void getGson() { Assert.assertNotNull(GsonUtils.getGson()); - Assert.assertNotNull(GsonUtils.getGson(false)); } @Test @@ -30,10 +29,6 @@ public void toJson() { "{\"code\":200,\"message\":\"success\",\"data\":{\"name\":\"Blankj\",\"gender\":0,\"address\":null}}", GsonUtils.toJson(result) ); - Assert.assertEquals( - "{\"code\":200,\"message\":\"success\",\"data\":{\"name\":\"Blankj\",\"gender\":0}}", - GsonUtils.toJson(result, false) - ); } @Test diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java index 8233231a40..0c9dfe9d16 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/RegexUtilsTest.java @@ -1,5 +1,7 @@ package com.blankj.utilcode.util; +import com.blankj.utilcode.constant.RegexConstants; + import org.junit.Test; import java.util.Arrays; diff --git a/plugin/api-gradle-plugin/build.gradle b/plugin/api-gradle-plugin/build.gradle index 6693402d19..9f40e0ca74 100755 --- a/plugin/api-gradle-plugin/build.gradle +++ b/plugin/api-gradle-plugin/build.gradle @@ -23,6 +23,7 @@ dependencies { implementation localGroovy() testImplementation Config.depConfig.test_junit.dep + testImplementation Config.depConfig.plugin_gradle.dep } sourceSets { diff --git a/plugin/bus-gradle-plugin/build.gradle b/plugin/bus-gradle-plugin/build.gradle index fec80f135a..366c5e61db 100755 --- a/plugin/bus-gradle-plugin/build.gradle +++ b/plugin/bus-gradle-plugin/build.gradle @@ -23,6 +23,7 @@ dependencies { implementation localGroovy() testImplementation Config.depConfig.test_junit.dep + testImplementation Config.depConfig.plugin_gradle.dep } sourceSets { From 5d19ffa02897118817a46bd88c11943286607354 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 31 Mar 2020 10:49:04 +0800 Subject: [PATCH 023/122] see 03/31 log --- buildSrc/src/main/groovy/Config.groovy | 2 +- .../src/main/java/com/blankj/utilcode/util/ScreenUtils.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 86700927b3..9554b2f251 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.26.1-release0'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.27.0'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java index 5a0b6cd8b6..2d4df4c54b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java @@ -1,5 +1,6 @@ package com.blankj.utilcode.util; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.KeyguardManager; import android.content.Context; @@ -161,6 +162,7 @@ public static boolean isFullScreen(@NonNull final Activity activity) { * * @param activity The activity. */ + @SuppressLint("SourceLockedOrientationActivity") public static void setLandscape(@NonNull final Activity activity) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } @@ -170,6 +172,7 @@ public static void setLandscape(@NonNull final Activity activity) { * * @param activity The activity. */ + @SuppressLint("SourceLockedOrientationActivity") public static void setPortrait(@NonNull final Activity activity) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } From 2b385569bc26e4aa32a9d6efdfb0678d9e6ed566 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 31 Mar 2020 18:15:44 +0800 Subject: [PATCH 024/122] see 03/31 log --- .../pkg/feature/adaptScreen/AdaptHeightActivity.kt | 7 +++++++ .../utilcode/pkg/feature/shadow/ShadowActivity.kt | 2 +- .../java/com/blankj/utilcode/util/BarUtils.java | 14 +++++--------- .../java/com/blankj/utilcode/util/DeviceUtils.java | 3 ++- .../java/com/blankj/utilcode/util/ScreenUtils.java | 4 ++-- .../java/com/blankj/utilcode/util/ShadowUtils.java | 10 ++-------- 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptHeightActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptHeightActivity.kt index 6f312e4cd9..f00eedc77c 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptHeightActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptHeightActivity.kt @@ -9,6 +9,8 @@ import android.view.WindowManager import com.blankj.common.activity.CommonActivity import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.AdaptScreenUtils +import com.blankj.utilcode.util.BarUtils +import com.blankj.utilcode.util.LogUtils class AdaptHeightActivity : CommonActivity() { @@ -28,6 +30,11 @@ class AdaptHeightActivity : CommonActivity() { window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) } + override fun onResume() { + super.onResume() + LogUtils.e(BarUtils.getStatusBarHeight()) + } + override fun getResources(): Resources { return AdaptScreenUtils.adaptHeight(super.getResources(), 1920) } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt index d2ddebcb09..eb7c020417 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt @@ -39,7 +39,7 @@ class ShadowActivity : CommonActivity() { override fun initView(savedInstanceState: Bundle?, contentView: View?) { super.initView(savedInstanceState, contentView) - ShadowUtils.apply(shadowRectView, Config().setShadowRadius(0.01f).setShadowColor(Color.BLUE, Color.GREEN)) + ShadowUtils.apply(shadowRectView, Config().setShadowColor(Color.BLUE, Color.GREEN)) ShadowUtils.apply(shadowRoundRectView, Config().setShadowRadius( SizeUtils.dp2px(16f).toFloat())) ShadowUtils.apply(shadowCircleView, Config().setCircle().setShadowColor(Color.GREEN, Color.BLUE)) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index 99a8999096..0350dacdbb 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -55,7 +55,7 @@ private BarUtils() { * @return the status bar's height */ public static int getStatusBarHeight() { - Resources resources = Utils.getApp().getResources(); + Resources resources = Resources.getSystem(); int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android"); return resources.getDimensionPixelSize(resourceId); } @@ -431,7 +431,7 @@ public static int getActionBarHeight() { TypedValue tv = new TypedValue(); if (Utils.getApp().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { return TypedValue.complexToDimensionPixelSize( - tv.data, Utils.getApp().getResources().getDisplayMetrics() + tv.data, Resources.getSystem().getDisplayMetrics() ); } return 0; @@ -481,7 +481,7 @@ private static void invokePanels(final String methodName) { * @return the navigation bar's height */ public static int getNavBarHeight() { - Resources res = Utils.getApp().getResources(); + Resources res = Resources.getSystem(); int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId != 0) { return res.getDimensionPixelSize(resourceId); @@ -515,9 +515,7 @@ public static void setNavBarVisibility(@NonNull final Window window, boolean isV final View child = decorView.getChildAt(i); final int id = child.getId(); if (id != View.NO_ID) { - String resourceEntryName = Utils.getApp() - .getResources() - .getResourceEntryName(id); + String resourceEntryName = Resources.getSystem().getResourceEntryName(id); if ("navigationBarBackground".equals(resourceEntryName)) { child.setVisibility(isVisible ? View.VISIBLE : View.INVISIBLE); } @@ -558,9 +556,7 @@ public static boolean isNavBarVisible(@NonNull final Window window) { final View child = decorView.getChildAt(i); final int id = child.getId(); if (id != View.NO_ID) { - String resourceEntryName = Utils.getApp() - .getResources() - .getResourceEntryName(id); + String resourceEntryName = Resources.getSystem().getResourceEntryName(id); if ("navigationBarBackground".equals(resourceEntryName) && child.getVisibility() == View.VISIBLE) { isVisible = true; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java index 4707bf02b4..a16fa289a6 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.Configuration; +import android.content.res.Resources; import android.net.Uri; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; @@ -329,7 +330,7 @@ public static String[] getABIs() { * @return {@code true}: yes
    {@code false}: no */ public static boolean isTablet() { - return (Utils.getApp().getResources().getConfiguration().screenLayout + return (Resources.getSystem().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java index 2d4df4c54b..b01e18658a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java @@ -101,7 +101,7 @@ public static int getAppScreenHeight() { * @return the density of screen */ public static float getScreenDensity() { - return Utils.getApp().getResources().getDisplayMetrics().density; + return Resources.getSystem().getDisplayMetrics().density; } /** @@ -110,7 +110,7 @@ public static float getScreenDensity() { * @return the screen density expressed as dots-per-inch */ public static int getScreenDensityDpi() { - return Utils.getApp().getResources().getDisplayMetrics().densityDpi; + return Resources.getSystem().getDisplayMetrics().densityDpi; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShadowUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShadowUtils.java index d2638611e8..a9ef8bc0b5 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShadowUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShadowUtils.java @@ -1,7 +1,6 @@ package com.blankj.utilcode.util; import android.content.res.ColorStateList; -import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; @@ -58,7 +57,7 @@ public static void apply(View view, Config builder) { public static class Config { private static final int SHADOW_COLOR_DEFAULT = 0xb0_000000; - private static final int SHADOW_SIZE = dp2px(8); + private static final int SHADOW_SIZE = UtilsBridge.dp2px(8); private float mShadowRadius = -1; private float mShadowSizeNormal = -1; @@ -137,7 +136,7 @@ Drawable apply(Drawable src) { } private float getShadowRadius() { - if (mShadowRadius == -1) { + if (mShadowRadius < 0) { mShadowRadius = 0; } return mShadowRadius; @@ -170,11 +169,6 @@ private float getShadowMaxSizePressed() { } return mShadowMaxSizePressed; } - - private static int dp2px(final float dpValue) { - final float scale = Resources.getSystem().getDisplayMetrics().density; - return (int) (dpValue * scale + 0.5f); - } } public static class ShadowDrawable extends DrawableWrapper { From db8ea7a9e52082883ec72c4923d4fd4eadcad9db Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 1 Apr 2020 00:34:16 +0800 Subject: [PATCH 025/122] see 04/01 log --- CHANGELOG.md | 5 ++- README.md | 2 +- .../com/blankj/utilcode/util/AppUtils.java | 2 +- .../com/blankj/utilcode/util/DeviceUtils.java | 2 +- .../com/blankj/utilcode/util/UtilsBridge.java | 39 ++++--------------- 5 files changed, 15 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c3ec5da3a..460598f244 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ -* `20/03/27` [opt] publish.gradle +* `20/03/31` [add] Publish v1.27.0. +* `20/03/30` [add] BatteryUtils. +* `20/03/27` [add] publish.gradle. +* `20/03/20` [add] UtilsBridge to clean the utils. * `20/01/17` [upd] Leak Canary to v2.1. * `19/11/30` [add] Publish bus plugin v2.4. Publish api plugin v1.2. * `19/11/28` [add] Publish v1.26.0. diff --git a/README.md b/README.md index 65cc565ff2..aeaf56e8b2 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ If this project helps you a lot and you want to support the project's developmen [frame]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/auc_frame.png -[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.26.0-brightgreen.svg +[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.27.0-brightgreen.svg [auc]: https://github.com/Blankj/AndroidUtilCode [apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index b4aaff234b..7aa23da2fe 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -106,7 +106,7 @@ public static boolean isAppInstalled(final String pkgName) { * @return {@code true}: yes
    {@code false}: no */ public static boolean isAppRoot() { - UtilsBridge.ShellCommandResult result = UtilsBridge.execCmd("echo root", true); + ShellUtils.CommandResult result = UtilsBridge.execCmd("echo root", true); if (result.result == 0) return true; if (result.errorMsg != null) { Log.d("AppUtils", "isAppRoot() called" + result.errorMsg); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java index a16fa289a6..266734aa03 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java @@ -265,7 +265,7 @@ private static InetAddress getInetAddress() { } private static String getMacAddressByFile() { - UtilsBridge.ShellCommandResult result = UtilsBridge.execCmd("getprop wifi.interface", false); + ShellUtils.CommandResult result = UtilsBridge.execCmd("getprop wifi.interface", false); if (result.result == 0) { String name = result.successMsg; if (name != null) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 25fb01a3af..60daf01f78 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -286,11 +286,11 @@ static Gson getGson4LogUtils() { /////////////////////////////////////////////////////////////////////////// // ImageUtils /////////////////////////////////////////////////////////////////////////// - public static byte[] bitmap2Bytes(final Bitmap bitmap) { + static byte[] bitmap2Bytes(final Bitmap bitmap) { return ImageUtils.bitmap2Bytes(bitmap); } - public static byte[] bitmap2Bytes(final Bitmap bitmap, final Bitmap.CompressFormat format, int quality) { + static byte[] bitmap2Bytes(final Bitmap bitmap, final Bitmap.CompressFormat format, int quality) { return ImageUtils.bitmap2Bytes(bitmap, format, quality); } @@ -408,26 +408,26 @@ static boolean isServiceRunning(final String className) { /////////////////////////////////////////////////////////////////////////// // ShellUtils /////////////////////////////////////////////////////////////////////////// - static ShellCommandResult execCmd(final String command, final boolean isRooted) { - return ShellCommandResult.parse(ShellUtils.execCmd(command, isRooted)); + static ShellUtils.CommandResult execCmd(final String command, final boolean isRooted) { + return ShellUtils.execCmd(command, isRooted); } /////////////////////////////////////////////////////////////////////////// // SizeUtils /////////////////////////////////////////////////////////////////////////// - public static int dp2px(final float dpValue) { + static int dp2px(final float dpValue) { return SizeUtils.dp2px(dpValue); } - public static int px2dp(final float pxValue) { + static int px2dp(final float pxValue) { return SizeUtils.px2dp(pxValue); } - public static int sp2px(final float spValue) { + static int sp2px(final float spValue) { return SizeUtils.sp2px(spValue); } - public static int px2sp(final float pxValue) { + static int px2sp(final float pxValue) { return SizeUtils.px2sp(pxValue); } @@ -509,27 +509,4 @@ static Uri file2Uri(final File file) { /////////////////////////////////////////////////////////////////////////// static abstract class Task extends ThreadUtils.SimpleTask { } - - static class ShellCommandResult { - int result; - String successMsg; - String errorMsg; - - private ShellCommandResult(ShellUtils.CommandResult result) { - this.result = result.result; - this.successMsg = result.successMsg; - this.errorMsg = result.errorMsg; - } - - static ShellCommandResult parse(ShellUtils.CommandResult result) { - return new ShellCommandResult(result); - } - - @Override - public String toString() { - return "result: " + result + "\n" + - "successMsg: " + successMsg + "\n" + - "errorMsg: " + errorMsg; - } - } } From 2fb08e29ee6dd421180e7bc5b032c9aa8e99476d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=83=E5=85=B0=E6=9F=AF=E5=9F=BA?= Date: Wed, 1 Apr 2020 00:29:55 +0800 Subject: [PATCH 026/122] see 04/01 log --- .../bug_report.md} | 13 ++++- .github/ISSUE_TEMPLATE/bug_report_cn.md | 53 +++++++++++++++++++ .github/ISSUE_TEMPLATE/feature-request.md | 22 ++++++++ .github/ISSUE_TEMPLATE/feature-request_cn.md | 22 ++++++++ 4 files changed, 108 insertions(+), 2 deletions(-) rename .github/{ISSUE_TEMPLATE.md => ISSUE_TEMPLATE/bug_report.md} (83%) create mode 100644 .github/ISSUE_TEMPLATE/bug_report_cn.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request_cn.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/bug_report.md similarity index 83% rename from .github/ISSUE_TEMPLATE.md rename to .github/ISSUE_TEMPLATE/bug_report.md index daea781567..a0cbc1baee 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,3 +1,12 @@ +--- +name: Bug report +about: Make AndroidUtilCode more perfect! +title: "[BUG]" +labels: bug +assignees: Blankj + +--- + ## Describe the bug A clear and concise description of what the bug is. @@ -39,6 +48,6 @@ put the stack of crash here If applicable, add screenshots to help explain your problem. -Please delete the current line and the followings. +## Please delete the current line and the following. -Thank you for supporting [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). \ No newline at end of file +Thank you for supporting [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). diff --git a/.github/ISSUE_TEMPLATE/bug_report_cn.md b/.github/ISSUE_TEMPLATE/bug_report_cn.md new file mode 100644 index 0000000000..63845a8683 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report_cn.md @@ -0,0 +1,53 @@ +--- +name: 提交 Bug +about: 让工具类更完美! +title: "[BUG]" +labels: bug +assignees: Blankj + +--- + +## 描述 Bug + +简洁地描述下 Bug。 + +- AndroidUtilCode 的版本: +- 出现 Bug 的设备型号: +- 设备的 Android 版本: + +## 相关代码 + + +``` +put your code here +``` + +## 异常堆栈 + + + +``` +put the stack of crash here +``` + +## 截图 + +如果有的话请添加屏幕截图以帮助解释问题。 + + +## 请删除当前行及以下内容 + +感谢支持 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000000..c8f38ca916 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,22 @@ +--- +name: Feature request +about: Make AndroidUtilCode more perfect! +title: "[FEATURE]" +labels: help wanted +assignees: Blankj + +--- + +## Describe the feature + +A clear and concise description of what the feature is. + + +## Reference + +Hope to give some reference articles, links, code, if any. + + +## Please delete the current line and the following + +Thank you for supporting [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). diff --git a/.github/ISSUE_TEMPLATE/feature-request_cn.md b/.github/ISSUE_TEMPLATE/feature-request_cn.md new file mode 100644 index 0000000000..ee8b11c4f1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request_cn.md @@ -0,0 +1,22 @@ +--- +name: 提交需求 +about: 让工具类更健全! +title: "[FEATURE]" +labels: help wanted +assignees: Blankj + +--- + +## 描述需求 + +简洁地描述下需求。 + + +## 可借鉴的 + +如果有的话,可以给出一些参考文章、链接、代码 + + +## 请删除当前行及以下内容 + +感谢支持 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). From 820ad8420c14651e211810bfcf6cd6562967cbaa Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 1 Apr 2020 04:24:53 +0800 Subject: [PATCH 027/122] see 04/01 log --- .github/workflows/android.yml | 2 +- .travis.yml | 24 ---- .../com/blankj/utilcode/util/IntentUtils.java | 17 +-- .../util/UtilsActivityLifecycleImpl.java | 127 +++++++++++++----- .../com/blankj/utilcode/util/UtilsBridge.java | 5 +- 5 files changed, 102 insertions(+), 73 deletions(-) delete mode 100644 .travis.yml diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 3071e5de4e..643c32aa1c 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -14,4 +14,4 @@ jobs: with: java-version: 1.8 - name: Build with Gradle - run: ./gradlew build + run: ./gradlew aR diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 195511dd82..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: android -jdk: oraclejdk8 -sudo: false - -android: - components: - - tools - - platform-tools - - build-tools-27.0.2 - - android-27 - - add-on - - extra - - licenses: - - 'android-sdk-license-.+' - - notifications: - email: false - -before_install: - - yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;26.0.2" - -script: - - ./gradlew aR diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java index 8821796be8..c39ccc481d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java @@ -100,17 +100,12 @@ public static Intent getUninstallAppIntent(final String pkgName) { * @return the intent of launch app */ public static Intent getLaunchAppIntent(final String pkgName) { -// String launcherActivity = UtilsBridge.getLauncherActivity(pkgName); -// LogUtils.e(launcherActivity); -// if (UtilsBridge.isSpace(launcherActivity)) return null; -// Intent intent = new Intent(Intent.ACTION_MAIN); -// intent.addCategory(Intent.CATEGORY_LAUNCHER); -// intent.setClassName(pkgName, launcherActivity); -// return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - - Intent intent = Utils.getApp().getPackageManager().getLaunchIntentForPackage(pkgName); - if (intent == null) return null; - return getIntent(intent, true); + String launcherActivity = UtilsBridge.getLauncherActivity(pkgName); + if (UtilsBridge.isSpace(launcherActivity)) return null; + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + intent.setClassName(pkgName, launcherActivity); + return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index 3e33c371a7..594ed7967a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -1,7 +1,6 @@ package com.blankj.utilcode.util; import android.animation.ValueAnimator; -import android.annotation.SuppressLint; import android.app.Activity; import android.app.Application; import android.arch.lifecycle.Lifecycle; @@ -35,7 +34,7 @@ final class UtilsActivityLifecycleImpl implements Application.ActivityLifecycleC static final UtilsActivityLifecycleImpl INSTANCE = new UtilsActivityLifecycleImpl(); - final LinkedList mActivityList = new LinkedList<>(); + private final LinkedList mActivityList = new LinkedList<>(); private final List mStatusListeners = new ArrayList<>(); private final Map> mDestroyedListenerMap = new HashMap<>(); @@ -51,20 +50,23 @@ void init() { } Activity getTopActivity() { - if (!mActivityList.isEmpty()) { - for (int i = mActivityList.size() - 1; i >= 0; i--) { - Activity activity = mActivityList.get(i); - if (!UtilsBridge.isActivityAlive(activity)) { - continue; - } - return activity; + List activityList = getActivityList(); + for (Activity activity : activityList) { + if (!UtilsBridge.isActivityAlive(activity)) { + continue; } + return activity; } - Activity topActivityByReflect = getTopActivityByReflect(); - if (topActivityByReflect != null) { - setTopActivity(topActivityByReflect); + return null; + } + + List getActivityList() { + if (!mActivityList.isEmpty()) { + return mActivityList; } - return topActivityByReflect; + List reflectActivities = getActivitiesByReflect(); + mActivityList.addAll(reflectActivities); + return mActivityList; } void addOnAppStatusChangedListener(final Utils.OnAppStatusChangedListener listener) { @@ -240,12 +242,12 @@ private void postStatus(final Activity activity, final boolean isForeground) { private void setTopActivity(final Activity activity) { if (mActivityList.contains(activity)) { - if (!mActivityList.getLast().equals(activity)) { + if (!mActivityList.getFirst().equals(activity)) { mActivityList.remove(activity); - mActivityList.addLast(activity); + mActivityList.addFirst(activity); } } else { - mActivityList.addLast(activity); + mActivityList.addFirst(activity); } } @@ -292,29 +294,86 @@ private void consumeActivityLifecycleCallbacks(Activity activity, Lifecycle.Even } } - private Activity getTopActivityByReflect() { + private List getActivitiesByReflect() { + LinkedList list = new LinkedList<>(); + Activity topActivity = null; try { - @SuppressLint("PrivateApi") - Class activityThreadClass = Class.forName("android.app.ActivityThread"); - Object currentActivityThreadMethod = activityThreadClass.getMethod("currentActivityThread").invoke(null); - Field mActivityListField = activityThreadClass.getDeclaredField("mActivityList"); - mActivityListField.setAccessible(true); - Map activities = (Map) mActivityListField.get(currentActivityThreadMethod); - if (activities == null) return null; - for (Object activityRecord : activities.values()) { - Class activityRecordClass = activityRecord.getClass(); - Field pausedField = activityRecordClass.getDeclaredField("paused"); - pausedField.setAccessible(true); - if (!pausedField.getBoolean(activityRecord)) { - Field activityField = activityRecordClass.getDeclaredField("activity"); - activityField.setAccessible(true); - return (Activity) activityField.get(activityRecord); + Object activityThread = getActivityThread(); + Field mActivitiesField = activityThread.getClass().getDeclaredField("mActivities"); + mActivitiesField.setAccessible(true); + Object mActivities = mActivitiesField.get(activityThread); + if (!(mActivities instanceof Map)) { + return list; + } + Map binder_activityClientRecord_map = (Map) mActivities; + for (Object activityRecord : binder_activityClientRecord_map.values()) { + Class activityClientRecordClass = activityRecord.getClass(); + Field activityField = activityClientRecordClass.getDeclaredField("activity"); + activityField.setAccessible(true); + Activity activity = (Activity) activityField.get(activityRecord); + if (topActivity == null) { + Field pausedField = activityClientRecordClass.getDeclaredField("paused"); + pausedField.setAccessible(true); + if (!pausedField.getBoolean(activityRecord)) { + topActivity = activity; + } else { + list.add(activity); + } + } else { + list.add(activity); } } } catch (Exception e) { - Log.e("UtilsActivityLifecycle", e.getMessage()); + Log.e("UtilsActivityLifecycle", "getActivitiesByReflect: " + e.getMessage()); + } + if (topActivity != null) { + list.addFirst(topActivity); + } + return list; + } + + private Object getActivityThread() { + Object activityThread = getActivityThreadInActivityThreadStaticField(); + if (activityThread != null) return activityThread; + activityThread = getActivityThreadInActivityThreadStaticMethod(); + if (activityThread != null) return activityThread; + return getActivityThreadInLoadedApkField(); + } + + private Object getActivityThreadInActivityThreadStaticField() { + try { + Class activityThreadClass = Class.forName("android.app.ActivityThread"); + Field sCurrentActivityThreadField = activityThreadClass.getDeclaredField("sCurrentActivityThread"); + sCurrentActivityThreadField.setAccessible(true); + return sCurrentActivityThreadField.get(null); + } catch (Exception e) { + Log.e("UtilsActivityLifecycle", "getActivityThreadInActivityThreadStaticField: " + e.getMessage()); + return null; + } + } + + private Object getActivityThreadInActivityThreadStaticMethod() { + try { + Class activityThreadClass = Class.forName("android.app.ActivityThread"); + return activityThreadClass.getMethod("currentActivityThread").invoke(null); + } catch (Exception e) { + Log.e("UtilsActivityLifecycle", "getActivityThreadInActivityThreadStaticMethod: " + e.getMessage()); + return null; + } + } + + private Object getActivityThreadInLoadedApkField() { + try { + Field mLoadedApkField = Application.class.getDeclaredField("mLoadedApk"); + mLoadedApkField.setAccessible(true); + Object mLoadedApk = mLoadedApkField.get(Utils.getApp()); + Field mActivityThreadField = mLoadedApk.getClass().getDeclaredField("mActivityThread"); + mActivityThreadField.setAccessible(true); + return mActivityThreadField.get(mLoadedApk); + } catch (Exception e) { + Log.e("UtilsActivityLifecycle", "getActivityThreadInLoadedApkField: " + e.getMessage()); + return null; } - return null; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 60daf01f78..40419f216b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -20,7 +20,6 @@ import java.io.InputStream; import java.io.Serializable; import java.lang.reflect.Type; -import java.util.LinkedList; import java.util.List; import static android.Manifest.permission.CALL_PHONE; @@ -69,8 +68,8 @@ static void removeActivityLifecycleCallbacks(final Activity activity, UtilsActivityLifecycleImpl.INSTANCE.removeActivityLifecycleCallbacks(activity, callbacks); } - static LinkedList getActivityList() { - return UtilsActivityLifecycleImpl.INSTANCE.mActivityList; + static List getActivityList() { + return UtilsActivityLifecycleImpl.INSTANCE.getActivityList(); } /////////////////////////////////////////////////////////////////////////// From 3ff7852c652469e24d4147257e51b2c0289229d6 Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 1 Apr 2020 04:47:32 +0800 Subject: [PATCH 028/122] see 04/01 log --- .github/workflows/android.yml | 2 +- README-CN.md | 2 +- README.md | 2 +- buildSrc/src/main/groovy/Config.groovy | 2 +- lib/utilcode/README-CN.md | 4 ++-- lib/utilcode/README.md | 4 ++-- lib/utilcode/build.gradle | 2 +- .../src/main/java/com/blankj/utilcode/util/NetworkUtils.java | 1 - 8 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 643c32aa1c..e51c75482c 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: set up JDK 1.8 uses: actions/setup-java@v1 with: diff --git a/README-CN.md b/README-CN.md index 59c3ff9950..32a5a0ac17 100644 --- a/README-CN.md +++ b/README-CN.md @@ -51,7 +51,7 @@ [frame]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/auc_frame_cn.png -[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.26.0-brightgreen.svg +[aucSvg]: https://github.com/Blankj/AndroidUtilCode/workflows/Android%20CI/badge.svg?branch=master [auc]: https://github.com/Blankj/AndroidUtilCode [apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg diff --git a/README.md b/README.md index aeaf56e8b2..e0df3165eb 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ If this project helps you a lot and you want to support the project's developmen [frame]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/auc_frame.png -[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.27.0-brightgreen.svg +[aucSvg]: https://github.com/Blankj/AndroidUtilCode/workflows/Android%20CI/badge.svg?branch=master [auc]: https://github.com/Blankj/AndroidUtilCode [apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 9554b2f251..989e6db7ec 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -71,7 +71,7 @@ class Config { free_proguard : new DepConfig("com.blankj:free-proguard:1.0.2"), swipe_panel : new DepConfig("com.blankj:swipe-panel:1.2"), - gson : new DepConfig("com.google.code.gson:gson:2.8.6"), + gson : new DepConfig("com.google.code.gson:gson:2.8.5"), glide : new DepConfig("com.github.bumptech.glide:glide:4.7.1"), retrofit : new DepConfig("com.squareup.retrofit2:retrofit:2.4.0"), commons_io : new DepConfig("commons-io:commons-io:2.6"), diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 8439f68e2c..a35cd73bbb 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.26.0' +implementation 'com.blankj:utilcode:1.27.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.26.0' +implementation 'com.blankj:utilcodex:1.27.0' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 1296cc0bf0..deb9950378 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.26.0' +implementation 'com.blankj:utilcode:1.27.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.26.0' +implementation 'com.blankj:utilcodex:1.27.0' ``` diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index 25a50ec1d6..72e2ef7ff1 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -27,7 +27,7 @@ android { } dependencies { - compileOnly Config.depConfig.gson.dep + implementation Config.depConfig.gson.dep compileOnly Config.depConfig.support_appcompat_v7.dep compileOnly Config.depConfig.support_design.dep diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index f1572e1046..e42bf8a8f9 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -743,7 +743,6 @@ public void onReceive(Context context, Intent intent) { public void run() { NetworkType networkType = NetworkUtils.getNetworkType(); if (mType == networkType) return; - LogUtils.e(networkType); mType = networkType; if (networkType == NetworkType.NETWORK_NO) { for (OnNetworkStatusChangedListener listener : mListeners) { From 5f588ea094bc933dd53f6b458a4ab091b539d03e Mon Sep 17 00:00:00 2001 From: Blankj Date: Thu, 2 Apr 2020 01:46:11 +0800 Subject: [PATCH 029/122] see 04/02 log --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/bug_report_cn.md | 2 +- CHANGELOG.md | 7 ++- lib/subutil/README-CN.md | 6 +-- lib/subutil/README.md | 2 +- .../com/blankj/subutil/util/BatteryUtils.java | 14 +++--- lib/utilcode/README-CN.md | 46 +++++++++---------- lib/utilcode/README.md | 14 +++--- .../blankj/utilcode/util/NetworkUtils.java | 10 ++-- 9 files changed, 53 insertions(+), 50 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index a0cbc1baee..6ad34f860e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -11,7 +11,7 @@ assignees: Blankj A clear and concise description of what the bug is. -- The version of utilcode: +- The version of AndroidUtilCode: - The device: - The version of device: diff --git a/.github/ISSUE_TEMPLATE/bug_report_cn.md b/.github/ISSUE_TEMPLATE/bug_report_cn.md index 63845a8683..42c82103b3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report_cn.md +++ b/.github/ISSUE_TEMPLATE/bug_report_cn.md @@ -11,7 +11,7 @@ assignees: Blankj 简洁地描述下 Bug。 -- AndroidUtilCode 的版本: +- AndroidUtilCode 的版本: - 出现 Bug 的设备型号: - 设备的 Android 版本: diff --git a/CHANGELOG.md b/CHANGELOG.md index 460598f244..c3808d0cfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,11 @@ * `20/03/31` [add] Publish v1.27.0. -* `20/03/30` [add] BatteryUtils. +* `20/03/30` [add] BatteryUtils in subutil. * `20/03/27` [add] publish.gradle. -* `20/03/20` [add] UtilsBridge to clean the utils. +* `20/03/24` [add] UtilsBridge to clean the utils. +* `20/03/22` [upd] GsonUtils support custom gson. +* `20/03/20` [add] ActivityUtils#addActivityLifecycleCallbacks, ActivityUtils#removeActivityLifecycleCallbacks. * `20/01/17` [upd] Leak Canary to v2.1. +* `20/01/06` [add] ClickUtils#expandClickArea, ClickUtils#back2HomeFriendly * `19/11/30` [add] Publish bus plugin v2.4. Publish api plugin v1.2. * `19/11/28` [add] Publish v1.26.0. * `19/11/27` [add] Shadow demo. diff --git a/lib/subutil/README-CN.md b/lib/subutil/README-CN.md index f48cb6e2be..2a8b920cf8 100644 --- a/lib/subutil/README-CN.md +++ b/lib/subutil/README-CN.md @@ -13,9 +13,9 @@ getAppStoreIntent: 获取跳转应用商店意图 * ### 电池相关 -> [BatteryUtils.java][battery.java] -> [Demo][battery.demo] ``` -registerBatteryStatusChangedListener : 注册电池状态改变监听器 -isRegistered : 判断是否注册电池状态改变监听器 -unregisterBatteryStatusChangedListener: 注销电池状态改变监听器 +registerBatteryStatusChangedListener : 注册电池状态改变监听器 +isRegisteredBatteryStatusChangedListener: 判断是否注册电池状态改变监听器 +unregisterBatteryStatusChangedListener : 注销电池状态改变监听器 ``` * ### 剪贴板相关 -> [ClipboardUtils.java][clipboard.java] -> [Test][clipboard.test] diff --git a/lib/subutil/README.md b/lib/subutil/README.md index 5a6dae7d17..0ebcf92e8b 100644 --- a/lib/subutil/README.md +++ b/lib/subutil/README.md @@ -14,7 +14,7 @@ getAppStoreIntent * ### About Battery -> [BatteryUtils.java][battery.java] -> [Demo][battery.demo] ``` registerBatteryStatusChangedListener -isRegistered +isRegisteredBatteryStatusChangedListener unregisterBatteryStatusChangedListener ``` diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java index 9b7a9978c3..ec8605168e 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java @@ -40,28 +40,28 @@ public class BatteryUtils { } /** - * Register the status of battery status changed listener. + * Register the status of battery changed listener. * - * @param listener The status of battery status changed listener + * @param listener The status of battery changed listener. */ public static void registerBatteryStatusChangedListener(final OnBatteryStatusChangedListener listener) { BatteryChangedReceiver.getInstance().registerListener(listener); } /** - * Return whether the status of battery status changed listener registered. + * Return whether the status of battery changed listener has been registered. * - * @param listener The listener - * @return True to registered, false otherwise. + * @param listener The status of battery changed listener. + * @return true to registered, false otherwise. */ public static boolean isRegistered(final OnBatteryStatusChangedListener listener) { return BatteryChangedReceiver.getInstance().isRegistered(listener); } /** - * unregister the status of battery status changed listener. + * Unregister the status of battery changed listener. * - * @param listener The status of battery status changed listener + * @param listener The status of battery changed listener. */ public static void unregisterBatteryStatusChangedListener(final OnBatteryStatusChangedListener listener) { BatteryChangedReceiver.getInstance().unregisterListener(listener); diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index a35cd73bbb..3006fb2e65 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -661,29 +661,29 @@ getMetaDataInReceiver: 获取 receiver 的 meta-data 值 * ### 网络相关 -> [NetworkUtils.java][network.java] -> [Demo][network.demo] ``` -openWirelessSettings : 打开网络设置界面 -isConnected : 判断网络是否连接 -isAvailable[Async] : 判断网络是否可用 -isAvailableByPing[Async] : 用 ping 判断网络是否可用 -isAvailableByDns[Async] : 用 DNS 判断网络是否可用 -getMobileDataEnabled : 判断移动数据是否打开 -isMobileData : 判断网络是否是移动数据 -is4G : 判断网络是否是 4G -getWifiEnabled : 判断 wifi 是否打开 -setWifiEnabled : 打开或关闭 wifi -isWifiConnected : 判断 wifi 是否连接状态 -isWifiAvailable[Async] : 判断 wifi 数据是否可用 -getNetworkOperatorName : 获取移动网络运营商名称 -getNetworkType : 获取当前网络类型 -getIPAddress[Async] : 获取 IP 地址 -getDomainAddress[Async] : 获取域名 IP 地址 -getIpAddressByWifi : 根据 WiFi 获取网络 IP 地址 -getGatewayByWifi : 根据 WiFi 获取网关 IP 地址 -getNetMaskByWifi : 根据 WiFi 获取子网掩码 IP 地址 -getServerAddressByWifi : 根据 WiFi 获取服务端 IP 地址 -registerNetworkStatusChangedListener : 注册网络状态改变监听器 -isRegistered : 判断是否注册网络状态改变监听器 -unregisterNetworkStatusChangedListener: 注销网络状态改变监听器 +openWirelessSettings : 打开网络设置界面 +isConnected : 判断网络是否连接 +isAvailable[Async] : 判断网络是否可用 +isAvailableByPing[Async] : 用 ping 判断网络是否可用 +isAvailableByDns[Async] : 用 DNS 判断网络是否可用 +getMobileDataEnabled : 判断移动数据是否打开 +isMobileData : 判断网络是否是移动数据 +is4G : 判断网络是否是 4G +getWifiEnabled : 判断 wifi 是否打开 +setWifiEnabled : 打开或关闭 wifi +isWifiConnected : 判断 wifi 是否连接状态 +isWifiAvailable[Async] : 判断 wifi 数据是否可用 +getNetworkOperatorName : 获取移动网络运营商名称 +getNetworkType : 获取当前网络类型 +getIPAddress[Async] : 获取 IP 地址 +getDomainAddress[Async] : 获取域名 IP 地址 +getIpAddressByWifi : 根据 WiFi 获取网络 IP 地址 +getGatewayByWifi : 根据 WiFi 获取网关 IP 地址 +getNetMaskByWifi : 根据 WiFi 获取子网掩码 IP 地址 +getServerAddressByWifi : 根据 WiFi 获取服务端 IP 地址 +registerNetworkStatusChangedListener : 注册网络状态改变监听器 +isRegisteredNetworkStatusChangedListener: 判断是否注册网络状态改变监听器 +unregisterNetworkStatusChangedListener : 注销网络状态改变监听器 ``` * ### 通知相关 -> [NotificationUtils.java][notification.java] -> [Demo][notification.demo] diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index deb9950378..4068f63635 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -663,26 +663,26 @@ getMetaDataInReceiver ``` openWirelessSettings isConnected -isAvailable[Async] : 判断网络是否可用 -isAvailableByPing[Async] : 用 ping 判断网络是否可用 -isAvailableByDns[Async] : 用 DNS 判断网络是否可用 +isAvailable[Async] : 判断网络是否可用 +isAvailableByPing[Async] : 用 ping 判断网络是否可用 +isAvailableByDns[Async] : 用 DNS 判断网络是否可用 getMobileDataEnabled isMobileData is4G getWifiEnabled setWifiEnabled isWifiConnected -isWifiAvailable[Async] : 判断 wifi 数据是否可用 +isWifiAvailable[Async] : 判断 wifi 数据是否可用 getNetworkOperatorName getNetworkType -getIPAddress[Async] : 获取 IP 地址 -getDomainAddress[Async] : 获取域名 IP 地址 +getIPAddress[Async] : 获取 IP 地址 +getDomainAddress[Async] : 获取域名 IP 地址 getIpAddressByWifi getGatewayByWifi getNetMaskByWifi getServerAddressByWifi registerNetworkStatusChangedListener -isRegistered +isRegisteredNetworkStatusChangedListener unregisterNetworkStatusChangedListener ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index e42bf8a8f9..c0ae316b2c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -670,19 +670,19 @@ public static void registerNetworkStatusChangedListener(final OnNetworkStatusCha } /** - * Return whether the status of battery status changed listener registered. + * Return whether the status of network changed listener has been registered. * * @param listener The listener - * @return True to registered, false otherwise. + * @return true to registered, false otherwise. */ - public static boolean isRegistered(final OnNetworkStatusChangedListener listener) { + public static boolean isRegisteredNetworkStatusChangedListener(final OnNetworkStatusChangedListener listener) { return NetworkChangedReceiver.getInstance().isRegistered(listener); } /** - * unregister the status of network changed listener. + * Unregister the status of network changed listener. * - * @param listener The status of network changed listener + * @param listener The status of network changed listener. */ public static void unregisterNetworkStatusChangedListener(final OnNetworkStatusChangedListener listener) { NetworkChangedReceiver.getInstance().unregisterListener(listener); From 4eee99fad60b932f45fe758bd9086d1f7635f66a Mon Sep 17 00:00:00 2001 From: Blankj Date: Thu, 2 Apr 2020 15:33:51 +0800 Subject: [PATCH 030/122] see 04/02 log --- .github/workflows/android.yml | 2 +- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 2 +- lib/utilcode/README-CN.md | 4 +- lib/utilcode/README.md | 4 +- .../blankj/utilcode/util/ActivityUtils.java | 68 ++++++++----------- .../com/blankj/utilcode/util/AppUtils.java | 8 +-- .../com/blankj/utilcode/util/PathUtils.java | 50 +++++++------- .../util/UtilsActivityLifecycleImpl.java | 9 +-- .../com/blankj/utilcode/util/UtilsBridge.java | 4 ++ 10 files changed, 68 insertions(+), 84 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index e51c75482c..ed0af46aa6 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -14,4 +14,4 @@ jobs: with: java-version: 1.8 - name: Build with Gradle - run: ./gradlew aR + run: ./gradlew aR -x :lib:lib_utilcode:verifyReleaseResources diff --git a/CHANGELOG.md b/CHANGELOG.md index c3808d0cfa..080e202b8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/04/02` [fix] PathUtils sdcard enable state is wrong; ActivityUtils finish activity wrong; Publish v1.27.1. * `20/03/31` [add] Publish v1.27.0. * `20/03/30` [add] BatteryUtils in subutil. * `20/03/27` [add] publish.gradle. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 989e6db7ec..0564031b1a 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.27.0'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.27.1'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 3006fb2e65..506169b2f7 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.0' +implementation 'com.blankj:utilcode:1.27.1' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.0' +implementation 'com.blankj:utilcodex:1.27.1' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 4068f63635..833612d3d7 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.0' +implementation 'com.blankj:utilcode:1.27.1' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.0' +implementation 'com.blankj:utilcodex:1.27.1' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 529dd240e2..c7052edd71 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -1645,15 +1645,14 @@ public static boolean finishToActivity(@NonNull final Activity activity, final boolean isIncludeSelf, final boolean isLoadAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 1; i >= 0; --i) { - Activity aActivity = activities.get(i); - if (aActivity.equals(activity)) { + for (Activity act : activities) { + if (act.equals(activity)) { if (isIncludeSelf) { - finishActivity(aActivity, isLoadAnim); + finishActivity(act, isLoadAnim); } return true; } - finishActivity(aActivity, isLoadAnim); + finishActivity(act, isLoadAnim); } return false; } @@ -1673,15 +1672,14 @@ public static boolean finishToActivity(@NonNull final Activity activity, @AnimRes final int enterAnim, @AnimRes final int exitAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 1; i >= 0; --i) { - Activity aActivity = activities.get(i); - if (aActivity.equals(activity)) { + for (Activity act : activities) { + if (act.equals(activity)) { if (isIncludeSelf) { - finishActivity(aActivity, enterAnim, exitAnim); + finishActivity(act, enterAnim, exitAnim); } return true; } - finishActivity(aActivity, enterAnim, exitAnim); + finishActivity(act, enterAnim, exitAnim); } return false; } @@ -1708,15 +1706,14 @@ public static boolean finishToActivity(@NonNull final Class final boolean isIncludeSelf, final boolean isLoadAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 1; i >= 0; --i) { - Activity aActivity = activities.get(i); - if (aActivity.getClass().equals(clz)) { + for (Activity act : activities) { + if (act.getClass().equals(clz)) { if (isIncludeSelf) { - finishActivity(aActivity, isLoadAnim); + finishActivity(act, isLoadAnim); } return true; } - finishActivity(aActivity, isLoadAnim); + finishActivity(act, isLoadAnim); } return false; } @@ -1736,15 +1733,14 @@ public static boolean finishToActivity(@NonNull final Class @AnimRes final int enterAnim, @AnimRes final int exitAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 1; i >= 0; --i) { - Activity aActivity = activities.get(i); - if (aActivity.getClass().equals(clz)) { + for (Activity act : activities) { + if (act.getClass().equals(clz)) { if (isIncludeSelf) { - finishActivity(aActivity, enterAnim, exitAnim); + finishActivity(act, enterAnim, exitAnim); } return true; } - finishActivity(aActivity, enterAnim, exitAnim); + finishActivity(act, enterAnim, exitAnim); } return false; } @@ -1768,10 +1764,9 @@ public static void finishOtherActivities(@NonNull final Class clz, final boolean isLoadAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 1; i >= 0; i--) { - Activity activity = activities.get(i); - if (!activity.getClass().equals(clz)) { - finishActivity(activity, isLoadAnim); + for (Activity act : activities) { + if (!act.getClass().equals(clz)) { + finishActivity(act, isLoadAnim); } } } @@ -1789,10 +1784,9 @@ public static void finishOtherActivities(@NonNull final Class activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 1; i >= 0; i--) { - Activity activity = activities.get(i); - if (!activity.getClass().equals(clz)) { - finishActivity(activity, enterAnim, exitAnim); + for (Activity act : activities) { + if (!act.getClass().equals(clz)) { + finishActivity(act, enterAnim, exitAnim); } } } @@ -1811,12 +1805,11 @@ public static void finishAllActivities() { */ public static void finishAllActivities(final boolean isLoadAnim) { List activityList = UtilsBridge.getActivityList(); - for (int i = activityList.size() - 1; i >= 0; --i) {// remove from top - Activity activity = activityList.get(i); + for (Activity act : activityList) { // sActivityList remove the index activity at onActivityDestroyed - activity.finish(); + act.finish(); if (!isLoadAnim) { - activity.overridePendingTransition(0, 0); + act.overridePendingTransition(0, 0); } } } @@ -1832,11 +1825,10 @@ public static void finishAllActivities(final boolean isLoadAnim) { public static void finishAllActivities(@AnimRes final int enterAnim, @AnimRes final int exitAnim) { List activityList = UtilsBridge.getActivityList(); - for (int i = activityList.size() - 1; i >= 0; --i) {// remove from top - Activity activity = activityList.get(i); + for (Activity act : activityList) { // sActivityList remove the index activity at onActivityDestroyed - activity.finish(); - activity.overridePendingTransition(enterAnim, exitAnim); + act.finish(); + act.overridePendingTransition(enterAnim, exitAnim); } } @@ -1854,7 +1846,7 @@ public static void finishAllActivitiesExceptNewest() { */ public static void finishAllActivitiesExceptNewest(final boolean isLoadAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 2; i >= 0; i--) { + for (int i = 1; i < activities.size() - 1; i++) { finishActivity(activities.get(i), isLoadAnim); } } @@ -1870,7 +1862,7 @@ public static void finishAllActivitiesExceptNewest(final boolean isLoadAnim) { public static void finishAllActivitiesExceptNewest(@AnimRes final int enterAnim, @AnimRes final int exitAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = activities.size() - 2; i >= 0; i--) { + for (int i = 1; i < activities.size() - 1; i++) { finishActivity(activities.get(i), enterAnim, exitAnim); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index 7aa23da2fe..c46a0d9266 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -1,7 +1,6 @@ package com.blankj.utilcode.util; import android.annotation.SuppressLint; -import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; @@ -294,12 +293,7 @@ public static void launchAppDetailsSettings(final String packageName) { * Exit the application. */ public static void exitApp() { - List activityList = UtilsBridge.getActivityList(); - for (int i = activityList.size() - 1; i >= 0; --i) {// remove from top - Activity activity = activityList.get(i); - // sActivityList remove the index activity at onActivityDestroyed - activity.finish(); - } + UtilsBridge.finishAllActivities(); System.exit(0); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java index f3844129a9..15d9bd1e1d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java @@ -134,7 +134,7 @@ public static String getInternalAppNoBackupFilesPath() { * @return the path of /storage/emulated/0 */ public static String getExternalStoragePath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStorageDirectory()); } @@ -144,7 +144,7 @@ public static String getExternalStoragePath() { * @return the path of /storage/emulated/0/Music */ public static String getExternalMusicPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)); } @@ -154,7 +154,7 @@ public static String getExternalMusicPath() { * @return the path of /storage/emulated/0/Podcasts */ public static String getExternalPodcastsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS)); } @@ -164,7 +164,7 @@ public static String getExternalPodcastsPath() { * @return the path of /storage/emulated/0/Ringtones */ public static String getExternalRingtonesPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES)); } @@ -174,7 +174,7 @@ public static String getExternalRingtonesPath() { * @return the path of /storage/emulated/0/Alarms */ public static String getExternalAlarmsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS)); } @@ -184,7 +184,7 @@ public static String getExternalAlarmsPath() { * @return the path of /storage/emulated/0/Notifications */ public static String getExternalNotificationsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)); } @@ -194,7 +194,7 @@ public static String getExternalNotificationsPath() { * @return the path of /storage/emulated/0/Pictures */ public static String getExternalPicturesPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)); } @@ -204,7 +204,7 @@ public static String getExternalPicturesPath() { * @return the path of /storage/emulated/0/Movies */ public static String getExternalMoviesPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)); } @@ -214,7 +214,7 @@ public static String getExternalMoviesPath() { * @return the path of /storage/emulated/0/Download */ public static String getExternalDownloadsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)); } @@ -224,7 +224,7 @@ public static String getExternalDownloadsPath() { * @return the path of /storage/emulated/0/DCIM */ public static String getExternalDcimPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)); } @@ -234,7 +234,7 @@ public static String getExternalDcimPath() { * @return the path of /storage/emulated/0/Documents */ public static String getExternalDocumentsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return getAbsolutePath(Environment.getExternalStorageDirectory()) + "/Documents"; } @@ -247,7 +247,7 @@ public static String getExternalDocumentsPath() { * @return the path of /storage/emulated/0/Android/data/package */ public static String getExternalAppDataPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; File externalCacheDir = Utils.getApp().getExternalCacheDir(); if (externalCacheDir == null) return ""; return getAbsolutePath(externalCacheDir.getParentFile()); @@ -259,7 +259,7 @@ public static String getExternalAppDataPath() { * @return the path of /storage/emulated/0/Android/data/package/cache */ public static String getExternalAppCachePath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalCacheDir()); } @@ -269,7 +269,7 @@ public static String getExternalAppCachePath() { * @return the path of /storage/emulated/0/Android/data/package/files */ public static String getExternalAppFilesPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(null)); } @@ -279,7 +279,7 @@ public static String getExternalAppFilesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Music */ public static String getExternalAppMusicPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_MUSIC)); } @@ -289,7 +289,7 @@ public static String getExternalAppMusicPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Podcasts */ public static String getExternalAppPodcastsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_PODCASTS)); } @@ -299,7 +299,7 @@ public static String getExternalAppPodcastsPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Ringtones */ public static String getExternalAppRingtonesPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_RINGTONES)); } @@ -309,7 +309,7 @@ public static String getExternalAppRingtonesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Alarms */ public static String getExternalAppAlarmsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_ALARMS)); } @@ -319,7 +319,7 @@ public static String getExternalAppAlarmsPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Notifications */ public static String getExternalAppNotificationsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS)); } @@ -329,7 +329,7 @@ public static String getExternalAppNotificationsPath() { * @return path of /storage/emulated/0/Android/data/package/files/Pictures */ public static String getExternalAppPicturesPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_PICTURES)); } @@ -339,7 +339,7 @@ public static String getExternalAppPicturesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Movies */ public static String getExternalAppMoviesPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_MOVIES)); } @@ -349,7 +349,7 @@ public static String getExternalAppMoviesPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Download */ public static String getExternalAppDownloadPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)); } @@ -359,7 +359,7 @@ public static String getExternalAppDownloadPath() { * @return the path of /storage/emulated/0/Android/data/package/files/DCIM */ public static String getExternalAppDcimPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getExternalFilesDir(Environment.DIRECTORY_DCIM)); } @@ -369,7 +369,7 @@ public static String getExternalAppDcimPath() { * @return the path of /storage/emulated/0/Android/data/package/files/Documents */ public static String getExternalAppDocumentsPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return getAbsolutePath(Utils.getApp().getExternalFilesDir(null)) + "/Documents"; } @@ -382,7 +382,7 @@ public static String getExternalAppDocumentsPath() { * @return the path of /storage/emulated/0/Android/obb/package */ public static String getExternalAppObbPath() { - if (UtilsBridge.isSDCardEnableByEnvironment()) return ""; + if (!UtilsBridge.isSDCardEnableByEnvironment()) return ""; return getAbsolutePath(Utils.getApp().getObbDir()); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index 594ed7967a..ea574c9421 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -6,8 +6,6 @@ import android.arch.lifecycle.Lifecycle; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.util.Log; import android.view.Window; import android.view.WindowManager; @@ -133,15 +131,10 @@ private void removeActivityLifecycleCallbacksInner(final Activity activity, // lifecycle start /////////////////////////////////////////////////////////////////////////// @Override - public void onActivityPreCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) { + public void onActivityCreated(@NotNull Activity activity, Bundle savedInstanceState) { UtilsBridge.applyLanguage(activity); setAnimatorsEnabled(); setTopActivity(activity); - } - - @Override - public void onActivityCreated(@NotNull Activity activity, Bundle savedInstanceState) { - setTopActivity(activity); consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_CREATE); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 40419f216b..89cf1a0c51 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -95,6 +95,10 @@ static void startHomeActivity() { ActivityUtils.startHomeActivity(); } + static void finishAllActivities() { + ActivityUtils.finishAllActivities(); + } + /////////////////////////////////////////////////////////////////////////// // AppUtils /////////////////////////////////////////////////////////////////////////// From 937ef99a8a79ae67cdfca84d89ec8d948b37f4ff Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 3 Apr 2020 20:05:48 +0800 Subject: [PATCH 031/122] see 04/03 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 2 +- .../pkg/feature/click/ClickActivity.kt | 2 +- .../pkg/feature/shadow/ShadowActivity.kt | 6 +- .../blankj/subutil/util/AppStoreUtils.java | 2 +- .../com/blankj/subutil/util/BatteryUtils.java | 7 +- .../blankj/utilcode/util/ActivityUtils.java | 37 +++++--- .../utilcode/util/AdaptScreenUtils.java | 3 +- .../com/blankj/utilcode/util/ClickUtils.java | 16 ++-- .../com/blankj/utilcode/util/CrashUtils.java | 4 +- .../blankj/utilcode/util/NetworkUtils.java | 6 +- .../util/UtilsActivityLifecycleImpl.java | 92 +++++++------------ 12 files changed, 83 insertions(+), 95 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 080e202b8c..1bd47363ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/04/03` [fix] UtilsActivityLifecycleImpl#HashMap#remove IllegalStateException Bug. Publish v1.27.2. * `20/04/02` [fix] PathUtils sdcard enable state is wrong; ActivityUtils finish activity wrong; Publish v1.27.1. * `20/03/31` [add] Publish v1.27.0. * `20/03/30` [add] BatteryUtils in subutil. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 0564031b1a..66df4320d7 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.27.1'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.27.2'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt index 2f86a2eb7c..788ee59061 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt @@ -44,7 +44,7 @@ class ClickActivity : CommonActivity() { ClickUtils.applyPressedViewAlpha(it) }), ClickItem(R.string.click_bg_alpha_default, Utils.Consumer { - ClickUtils.applyPressedBgAlpha(it) + ClickUtils.applyPressedBgAlpha(it, 0.6f) }), ClickItem(R.string.click_bg_dark_default, Utils.Consumer { ClickUtils.applyPressedBgDark(it) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt index eb7c020417..bf4b25b94f 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt @@ -39,9 +39,9 @@ class ShadowActivity : CommonActivity() { override fun initView(savedInstanceState: Bundle?, contentView: View?) { super.initView(savedInstanceState, contentView) - ShadowUtils.apply(shadowRectView, Config().setShadowColor(Color.BLUE, Color.GREEN)) - ShadowUtils.apply(shadowRoundRectView, Config().setShadowRadius( + ShadowUtils.apply(shadowRectView, Config().setShadowColor(0x700000FF, 0x7000FF00)) + ShadowUtils.apply(shadowRoundRectView, Config().setShadowColor(0x700000FF, 0x7000FF00).setShadowRadius( SizeUtils.dp2px(16f).toFloat())) - ShadowUtils.apply(shadowCircleView, Config().setCircle().setShadowColor(Color.GREEN, Color.BLUE)) + ShadowUtils.apply(shadowCircleView, Config().setCircle().setShadowColor(0x700000FF, 0x7000FF00)) } } diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java index b54d183952..61b497a462 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java @@ -21,7 +21,7 @@ * desc : utils about app store *
    */ -public class AppStoreUtils { +public final class AppStoreUtils { private static final String TAG = "AppStoreUtils"; diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java index ec8605168e..f85091e649 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java @@ -11,8 +11,6 @@ import com.blankj.utilcode.util.ThreadUtils; import com.blankj.utilcode.util.Utils; -import org.jetbrains.annotations.NotNull; - import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.HashSet; @@ -26,7 +24,7 @@ * desc : *

    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

    */ -public class BatteryUtils { +public final class BatteryUtils { @IntDef({BatteryStatus.UNKNOWN, BatteryStatus.DISCHARGING, BatteryStatus.CHARGING, BatteryStatus.NOT_CHARGING, BatteryStatus.FULL}) @@ -137,7 +135,7 @@ public interface OnBatteryStatusChangedListener { void onBatteryStatusChanged(Status status); } - public static class Status { + public static final class Status { private int level; @BatteryStatus private int status; @@ -164,7 +162,6 @@ public void setStatus(int status) { this.status = status; } - @NotNull @Override public String toString() { return batteryStatus2String(status) + ": " + level + "%"; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index c7052edd71..561b851e0e 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -83,22 +83,37 @@ public static Activity getActivityByContext(Context context) { } private static Activity getActivityByContextInner(Context context) { - if (context instanceof Activity) return (Activity) context; - if (context != null && context.getClass().getName().equals("com.android.internal.policy.DecorContext")) { - try { - Field mActivityContextField = context.getClass().getDeclaredField("mActivityContext"); - mActivityContextField.setAccessible(true); - //noinspection unchecked - return ((WeakReference) mActivityContextField.get(context)).get(); - } catch (Exception e) { - e.printStackTrace(); - } - } + if (context == null) return null; + List list = new ArrayList<>(); while (context instanceof ContextWrapper) { if (context instanceof Activity) { return (Activity) context; } + Activity activity = getActivityFromDecorContext(context); + if (activity != null) return activity; + list.add(context); context = ((ContextWrapper) context).getBaseContext(); + if (context == null) { + return null; + } + if (list.contains(context)) { + // loop context + return null; + } + } + return null; + } + + private static Activity getActivityFromDecorContext(Context context) { + if (context == null) return null; + if (context.getClass().getName().equals("com.android.internal.policy.DecorContext")) { + try { + Field mActivityContextField = context.getClass().getDeclaredField("mActivityContext"); + mActivityContextField.setAccessible(true); + //noinspection ConstantConditions,unchecked + return ((WeakReference) mActivityContextField.get(context)).get(); + } catch (Exception ignore) { + } } return null; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java index b212af3ba3..5a47ecc9d8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java @@ -153,8 +153,7 @@ private static void applyMetricsFields(final Resources resources, final float ne private static DisplayMetrics getMetricsFromField(final Resources resources, final Field field) { try { return (DisplayMetrics) field.get(resources); - } catch (Exception e) { - Log.e("AdaptScreenUtils", "getMetricsFromField: " + e); + } catch (Exception ignore) { return null; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java index 8d20a5fbd4..6fd8f11963 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java @@ -213,23 +213,23 @@ private static Drawable createStyleDrawable(Drawable src, int style, float value } private static Drawable createAlphaDrawable(Drawable drawable, float alpha) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { +// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { DrawableWrapperBefore21 drawableWrapper = new DrawableWrapperBefore21(drawable); drawableWrapper.setAlphaFix((int) (alpha * 255)); return drawableWrapper; - } - drawable.setAlpha((int) (alpha * 255)); - return drawable; +// } +// drawable.setAlpha((int) (alpha * 255)); +// return drawable; } private static Drawable createDarkDrawable(Drawable drawable, float alpha) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { +// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { DrawableWrapperBefore21 drawableWrapper = new DrawableWrapperBefore21(drawable); drawableWrapper.setColorFilterFix(getDarkColorFilter(alpha)); return drawableWrapper; - } - drawable.setColorFilter(getDarkColorFilter(alpha)); - return drawable; +// } +// drawable.setColorFilter(getDarkColorFilter(alpha)); +// return drawable; } private static ColorMatrixColorFilter getDarkColorFilter(float darkAlpha) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java index 8f77c2df66..5adde0c0fb 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java @@ -4,8 +4,6 @@ import android.os.Build; import android.support.annotation.NonNull; -import org.jetbrains.annotations.NotNull; - import java.io.File; import java.lang.Thread.UncaughtExceptionHandler; import java.text.SimpleDateFormat; @@ -92,7 +90,7 @@ private static UncaughtExceptionHandler getUncaughtExceptionHandler(final String final OnCrashListener onCrashListener) { return new UncaughtExceptionHandler() { @Override - public void uncaughtException(@NotNull final Thread t, @NotNull final Throwable e) { + public void uncaughtException(@NonNull final Thread t, @NonNull final Throwable e) { final String time = new SimpleDateFormat("MM-dd_HH-mm-ss").format(new Date()); final StringBuilder sb = new StringBuilder(); final String head = "************* Log Head ****************" + diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index c0ae316b2c..20145fe440 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -782,7 +782,7 @@ private static class LazyHolder { // public static final class NetworkCallbackImpl extends ConnectivityManager.NetworkCallback { // // @Override -// public void onAvailable(@NotNull Network network) { +// public void onAvailable(@NonNull Network network) { // super.onAvailable(network); // LogUtils.d(TAG, "onAvailable: " + network); // } @@ -794,7 +794,7 @@ private static class LazyHolder { // } // // @Override -// public void onLost(@NotNull Network network) { +// public void onLost(@NonNull Network network) { // super.onLost(network); // LogUtils.e(TAG, "onLost: " + network); // } @@ -806,7 +806,7 @@ private static class LazyHolder { // } // // @Override -// public void onCapabilitiesChanged(@NotNull Network network, @NotNull NetworkCapabilities cap) { +// public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities cap) { // super.onCapabilitiesChanged(network, cap); // if (cap.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)) { // if (cap.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index ea574c9421..c0d89fe4ca 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -6,19 +6,17 @@ import android.arch.lifecycle.Lifecycle; import android.os.Build; import android.os.Bundle; +import android.support.annotation.NonNull; import android.util.Log; import android.view.Window; import android.view.WindowManager; -import org.jetbrains.annotations.NotNull; - import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** *
    @@ -34,9 +32,8 @@ final class UtilsActivityLifecycleImpl implements Application.ActivityLifecycleC
     
         private final LinkedList mActivityList = new LinkedList<>();
     
    -    private final List                 mStatusListeners               = new ArrayList<>();
    -    private final Map> mDestroyedListenerMap          = new HashMap<>();
    -    private final Map>  mActivityLifecycleCallbacksMap = new HashMap<>();
    +    private final List                mStatusListeners               = new ArrayList<>();
    +    private final Map> mActivityLifecycleCallbacksMap = new ConcurrentHashMap<>();
     
         private int     mForegroundCount = 0;
         private int     mConfigCount     = 0;
    @@ -127,11 +124,36 @@ private void removeActivityLifecycleCallbacksInner(final Activity activity,
             }
         }
     
    +    private void consumeActivityLifecycleCallbacks(Activity activity, Lifecycle.Event event) {
    +        List listeners = mActivityLifecycleCallbacksMap.get(activity);
    +        if (listeners != null) {
    +            for (Utils.ActivityLifecycleCallbacks listener : listeners) {
    +                listener.onLifecycleChanged(activity, event);
    +                if (event.equals(Lifecycle.Event.ON_CREATE)) {
    +                    listener.onActivityCreated(activity);
    +                } else if (event.equals(Lifecycle.Event.ON_START)) {
    +                    listener.onActivityStarted(activity);
    +                } else if (event.equals(Lifecycle.Event.ON_RESUME)) {
    +                    listener.onActivityResumed(activity);
    +                } else if (event.equals(Lifecycle.Event.ON_PAUSE)) {
    +                    listener.onActivityPaused(activity);
    +                } else if (event.equals(Lifecycle.Event.ON_STOP)) {
    +                    listener.onActivityStopped(activity);
    +                } else if (event.equals(Lifecycle.Event.ON_DESTROY)) {
    +                    listener.onActivityDestroyed(activity);
    +                }
    +            }
    +            if (event.equals(Lifecycle.Event.ON_DESTROY)) {
    +                mActivityLifecycleCallbacksMap.remove(activity);
    +            }
    +        }
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // lifecycle start
         ///////////////////////////////////////////////////////////////////////////
         @Override
    -    public void onActivityCreated(@NotNull Activity activity, Bundle savedInstanceState) {
    +    public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) {
             UtilsBridge.applyLanguage(activity);
             setAnimatorsEnabled();
             setTopActivity(activity);
    @@ -139,7 +161,7 @@ public void onActivityCreated(@NotNull Activity activity, Bundle savedInstanceSt
         }
     
         @Override
    -    public void onActivityStarted(@NotNull Activity activity) {
    +    public void onActivityStarted(@NonNull Activity activity) {
             if (!mIsBackground) {
                 setTopActivity(activity);
             }
    @@ -152,7 +174,7 @@ public void onActivityStarted(@NotNull Activity activity) {
         }
     
         @Override
    -    public void onActivityResumed(@NotNull final Activity activity) {
    +    public void onActivityResumed(@NonNull final Activity activity) {
             setTopActivity(activity);
             if (mIsBackground) {
                 mIsBackground = false;
    @@ -163,7 +185,7 @@ public void onActivityResumed(@NotNull final Activity activity) {
         }
     
         @Override
    -    public void onActivityPaused(@NotNull Activity activity) {
    +    public void onActivityPaused(@NonNull Activity activity) {
             consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_PAUSE);
         }
     
    @@ -183,12 +205,11 @@ public void onActivityStopped(Activity activity) {
         }
     
         @Override
    -    public void onActivitySaveInstanceState(@NotNull Activity activity, Bundle outState) {/**/}
    +    public void onActivitySaveInstanceState(@NonNull Activity activity, Bundle outState) {/**/}
     
         @Override
    -    public void onActivityDestroyed(@NotNull Activity activity) {
    +    public void onActivityDestroyed(@NonNull Activity activity) {
             mActivityList.remove(activity);
    -        consumeOnActivityDestroyedListener(activity);
             UtilsBridge.fixSoftInputLeaks(activity);
             consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_DESTROY);
         }
    @@ -244,49 +265,6 @@ private void setTopActivity(final Activity activity) {
             }
         }
     
    -    private void consumeOnActivityDestroyedListener(Activity activity) {
    -        Iterator>> iterator
    -                = mDestroyedListenerMap.entrySet().iterator();
    -        while (iterator.hasNext()) {
    -            Map.Entry> entry = iterator.next();
    -            if (entry.getKey() == activity) {
    -                List value = entry.getValue();
    -                for (Utils.OnActivityDestroyedListener listener : value) {
    -                    listener.onActivityDestroyed(activity);
    -                }
    -                iterator.remove();
    -            }
    -        }
    -    }
    -
    -    private void consumeActivityLifecycleCallbacks(Activity activity, Lifecycle.Event event) {
    -        Iterator>> iterator
    -                = mActivityLifecycleCallbacksMap.entrySet().iterator();
    -        while (iterator.hasNext()) {
    -            Map.Entry> entry = iterator.next();
    -            if (entry.getKey() == activity) {
    -                List value = entry.getValue();
    -                for (Utils.ActivityLifecycleCallbacks listener : value) {
    -                    listener.onLifecycleChanged(activity, event);
    -                    if (event.equals(Lifecycle.Event.ON_CREATE)) {
    -                        listener.onActivityCreated(activity);
    -                    } else if (event.equals(Lifecycle.Event.ON_START)) {
    -                        listener.onActivityStarted(activity);
    -                    } else if (event.equals(Lifecycle.Event.ON_RESUME)) {
    -                        listener.onActivityResumed(activity);
    -                    } else if (event.equals(Lifecycle.Event.ON_PAUSE)) {
    -                        listener.onActivityPaused(activity);
    -                    } else if (event.equals(Lifecycle.Event.ON_STOP)) {
    -                        listener.onActivityStopped(activity);
    -                    } else if (event.equals(Lifecycle.Event.ON_DESTROY)) {
    -                        listener.onActivityDestroyed(activity);
    -                        iterator.remove();
    -                    }
    -                }
    -            }
    -        }
    -    }
    -
         private List getActivitiesByReflect() {
             LinkedList list = new LinkedList<>();
             Activity topActivity = null;
    
    From 197f80f1432a1b5694b1a3776a7268eb4f4d1e08 Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Fri, 3 Apr 2020 20:10:53 +0800
    Subject: [PATCH 032/122] see 04/03 log
    
    ---
     lib/utilcode/README-CN.md | 4 ++--
     lib/utilcode/README.md    | 4 ++--
     2 files changed, 4 insertions(+), 4 deletions(-)
    
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index 506169b2f7..080615c79f 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -2,10 +2,10 @@
     
     Gradle:
     ```groovy
    -implementation 'com.blankj:utilcode:1.27.1'
    +implementation 'com.blankj:utilcode:1.27.2'
     
     // if u use AndroidX, use the following
    -implementation 'com.blankj:utilcodex:1.27.1'
    +implementation 'com.blankj:utilcodex:1.27.2'
     ```
     
     
    diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
    index 833612d3d7..d70cca6afb 100644
    --- a/lib/utilcode/README.md
    +++ b/lib/utilcode/README.md
    @@ -2,10 +2,10 @@
     
     Gradle:
     ```groovy
    -implementation 'com.blankj:utilcode:1.27.1'
    +implementation 'com.blankj:utilcode:1.27.2'
     
     // if u use AndroidX, use the following
    -implementation 'com.blankj:utilcodex:1.27.1'
    +implementation 'com.blankj:utilcodex:1.27.2'
     ```
     
     
    
    From 4ebfb1e6bf7541ef1e10ff5c448596eda77657bb Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Sat, 4 Apr 2020 16:53:26 +0800
    Subject: [PATCH 033/122] see 04/04 log
    
    ---
     .github/workflows/android.yml                 |   2 +-
     .../utilcode/pkg/feature/CoreUtilActivity.kt  |   7 +-
     .../pkg/feature/shadow/ShadowActivity.kt      |  11 +-
     .../src/main/res/drawable/shadow_circle.xml   |   2 +-
     .../main/res/drawable/shadow_round_rect.xml   |   2 +-
     .../src/main/res/layout/shadow_activity.xml   | 108 ++++++++++++++----
     lib/utilcode/build.gradle                     |   4 +
     .../com/blankj/utilcode/util/ShadowUtils.java |  19 ++-
     8 files changed, 115 insertions(+), 40 deletions(-)
    
    diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
    index ed0af46aa6..e51c75482c 100644
    --- a/.github/workflows/android.yml
    +++ b/.github/workflows/android.yml
    @@ -14,4 +14,4 @@ jobs:
           with:
             java-version: 1.8
         - name: Build with Gradle
    -      run: ./gradlew aR -x :lib:lib_utilcode:verifyReleaseResources
    +      run: ./gradlew aR
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    index ae4b441847..3dcdd68949 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    @@ -67,6 +67,9 @@ class CoreUtilActivity : CommonActivity() {
     
         override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
    +                CommonItemClick(R.string.demo_shadow, true) {
    +                    ShadowActivity.start(this)
    +                },
                     CommonItemClick(R.string.demo_activity, true) {
                         ActivityActivity.start(this)
                     },
    @@ -160,9 +163,7 @@ class CoreUtilActivity : CommonActivity() {
                     CommonItemClick(R.string.demo_sdcard, true) {
                         SDCardActivity.start(this)
                     },
    -                CommonItemClick(R.string.demo_shadow, true) {
    -                    ShadowActivity.start(this)
    -                },
    +
                     CommonItemClick(R.string.demo_snackbar, true) {
                         SnackbarActivity.start(this)
                     },
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt
    index bf4b25b94f..2ec21ad483 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/shadow/ShadowActivity.kt
    @@ -39,9 +39,14 @@ class ShadowActivity : CommonActivity() {
     
         override fun initView(savedInstanceState: Bundle?, contentView: View?) {
             super.initView(savedInstanceState, contentView)
    -        ShadowUtils.apply(shadowRectView, Config().setShadowColor(0x700000FF, 0x7000FF00))
    -        ShadowUtils.apply(shadowRoundRectView, Config().setShadowColor(0x700000FF, 0x7000FF00).setShadowRadius(
    +        ShadowUtils.apply(shadowRectView, Config().setShadowColor(0x44000000, 0x55000000))
    +        ShadowUtils.apply(shadowRoundRectView, Config().setShadowColor(0x44000000, 0x55000000).setShadowRadius(
                     SizeUtils.dp2px(16f).toFloat()))
    -        ShadowUtils.apply(shadowCircleView, Config().setCircle().setShadowColor(0x700000FF, 0x7000FF00))
    +        ShadowUtils.apply(shadowCircleView, Config().setCircle().setShadowColor(0x44000000, 0x55000000))
    +
    +        ShadowUtils.apply(shadowRectView1, Config().setShadowColor(0x44000000, 0x55000000))
    +        ShadowUtils.apply(shadowRoundRectView1, Config().setShadowColor(0x44000000, 0x55000000).setShadowRadius(
    +                SizeUtils.dp2px(16f).toFloat()))
    +        ShadowUtils.apply(shadowCircleView1, Config().setCircle().setShadowColor(0x44000000, 0x55000000))
         }
     }
    diff --git a/feature/utilcode/pkg/src/main/res/drawable/shadow_circle.xml b/feature/utilcode/pkg/src/main/res/drawable/shadow_circle.xml
    index 5589315966..7abb0e7159 100644
    --- a/feature/utilcode/pkg/src/main/res/drawable/shadow_circle.xml
    +++ b/feature/utilcode/pkg/src/main/res/drawable/shadow_circle.xml
    @@ -2,6 +2,6 @@
     
     
    -    
    +    
     
     
    \ No newline at end of file
    diff --git a/feature/utilcode/pkg/src/main/res/drawable/shadow_round_rect.xml b/feature/utilcode/pkg/src/main/res/drawable/shadow_round_rect.xml
    index 97c4e0b168..576688b254 100644
    --- a/feature/utilcode/pkg/src/main/res/drawable/shadow_round_rect.xml
    +++ b/feature/utilcode/pkg/src/main/res/drawable/shadow_round_rect.xml
    @@ -1,7 +1,7 @@
     
     
     
    -    
    +    
         
     
     
    \ No newline at end of file
    diff --git a/feature/utilcode/pkg/src/main/res/layout/shadow_activity.xml b/feature/utilcode/pkg/src/main/res/layout/shadow_activity.xml
    index 1046396a29..c8fca04657 100644
    --- a/feature/utilcode/pkg/src/main/res/layout/shadow_activity.xml
    +++ b/feature/utilcode/pkg/src/main/res/layout/shadow_activity.xml
    @@ -6,34 +6,57 @@
         android:orientation="vertical"
         android:padding="16dp">
     
    -    
    -
         
     
         
    +        android:gravity="center"
    +        android:orientation="horizontal">
     
             
     
             
     
    +        
    +
    +
    +            
    +
    +            
    +
    +        
    +
         
     
         
     
    -    
    -
         
     
         
    +        android:gravity="center"
    +        android:orientation="horizontal">
     
             
     
    @@ -65,34 +87,57 @@
                 android:id="@+id/shadowRoundRectView"
                 android:layout_width="80dp"
                 android:layout_height="80dp"
    -            android:layout_marginLeft="32dp"
    +            android:layout_gravity="center"
    +            android:layout_marginLeft="16dp"
                 android:background="@drawable/shadow_round_rect"
                 android:clickable="true" />
     
    +        
    +
    +            
    +
    +            
    +
    +        
    +
         
     
    +
         
     
    -    
    -
         
     
         
    +        android:gravity="center"
    +        android:orientation="horizontal">
     
             
     
    @@ -100,10 +145,33 @@
                 android:id="@+id/shadowCircleView"
                 android:layout_width="80dp"
                 android:layout_height="80dp"
    -            android:layout_marginLeft="32dp"
    +            android:layout_gravity="center"
    +            android:layout_marginLeft="16dp"
                 android:background="@drawable/shadow_circle"
                 android:clickable="true" />
     
    +        
    +
    +            
    +
    +            
    +
    +        
    +
         
     
          0f) {
                         float startRatio = size / shadowRadius;
                         mCornerShadowPaint.setShader(new RadialGradient(0, 0, shadowRadius,
    -                            new int[]{0, mShadowStartColor, mShadowEndColor},
    -                            new float[]{0f, startRatio, 1f},
    +                            new int[]{0, mShadowStartColor, mShadowEndColor}, new float[]{0.0F, startRatio, 1.0F},
                                 Shader.TileMode.CLAMP));
                     }
                     return;
    @@ -477,8 +476,7 @@ private void buildShadowCorners() {
                 if (shadowRadius > 0f) {
                     float startRatio = mCornerRadius / shadowRadius;
                     mCornerShadowPaint.setShader(new RadialGradient(0, 0, shadowRadius,
    -                        new int[]{0, mShadowStartColor, mShadowEndColor},
    -                        new float[]{0f, startRatio, 1f},
    +                        new int[]{0, mShadowStartColor, mShadowEndColor}, new float[]{0F, startRatio, 1F},
                             Shader.TileMode.CLAMP));
                 }
     
    @@ -486,8 +484,7 @@ private void buildShadowCorners() {
                 // this is why edge shadow shader has some extra space
                 // When drawing bottom edge shadow, we use that extra space.
                 mEdgeShadowPaint.setShader(new LinearGradient(0, innerBounds.top, 0, outerBounds.top,
    -                    new int[]{mShadowStartColor, mShadowEndColor},
    -                    new float[]{0f, 1f}, Shader.TileMode.CLAMP));
    +                    mShadowStartColor, mShadowEndColor, Shader.TileMode.CLAMP));
                 mEdgeShadowPaint.setAntiAlias(false);
             }
     
    
    From 389efc6095f02e612e76280e4a6271b9aa03fb11 Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Sat, 4 Apr 2020 16:57:51 +0800
    Subject: [PATCH 034/122] see 04/04 log
    
    ---
     .../com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt    | 7 +++----
     1 file changed, 3 insertions(+), 4 deletions(-)
    
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    index 3dcdd68949..ae4b441847 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    @@ -67,9 +67,6 @@ class CoreUtilActivity : CommonActivity() {
     
         override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
    -                CommonItemClick(R.string.demo_shadow, true) {
    -                    ShadowActivity.start(this)
    -                },
                     CommonItemClick(R.string.demo_activity, true) {
                         ActivityActivity.start(this)
                     },
    @@ -163,7 +160,9 @@ class CoreUtilActivity : CommonActivity() {
                     CommonItemClick(R.string.demo_sdcard, true) {
                         SDCardActivity.start(this)
                     },
    -
    +                CommonItemClick(R.string.demo_shadow, true) {
    +                    ShadowActivity.start(this)
    +                },
                     CommonItemClick(R.string.demo_snackbar, true) {
                         SnackbarActivity.start(this)
                     },
    
    From a0b00a19c52fe84a66751d067123d53839c73509 Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Sat, 4 Apr 2020 17:15:08 +0800
    Subject: [PATCH 035/122] see 04/04 log
    
    ---
     CHANGELOG.md                                                   | 3 ++-
     feature/utilcode/pkg/src/main/AndroidManifest.xml              | 1 +
     .../src/main/java/com/blankj/utilcode/util/AppUtils.java       | 2 ++
     .../src/main/java/com/blankj/utilcode/util/IntentUtils.java    | 2 ++
     4 files changed, 7 insertions(+), 1 deletion(-)
    
    diff --git a/CHANGELOG.md b/CHANGELOG.md
    index 1bd47363ff..3b570b4053 100644
    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -1,4 +1,5 @@
    -* `20/04/03` [fix] UtilsActivityLifecycleImpl#HashMap#remove IllegalStateException Bug. Publish v1.27.2.
    +* `20/04/04` [fix] ShadowUtils bug running on lower version devices. Publish v1.27.2.
    +* `20/04/03` [fix] UtilsActivityLifecycleImpl#HashMap#remove IllegalStateException bug.
     * `20/04/02` [fix] PathUtils sdcard enable state is wrong; ActivityUtils finish activity wrong; Publish v1.27.1.
     * `20/03/31` [add] Publish v1.27.0.
     * `20/03/30` [add] BatteryUtils in subutil.
    diff --git a/feature/utilcode/pkg/src/main/AndroidManifest.xml b/feature/utilcode/pkg/src/main/AndroidManifest.xml
    index c89d06353c..8a9f301242 100644
    --- a/feature/utilcode/pkg/src/main/AndroidManifest.xml
    +++ b/feature/utilcode/pkg/src/main/AndroidManifest.xml
    @@ -4,6 +4,7 @@
         
         
         
    +    
     
         
         
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    index c46a0d9266..6e96857509 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    @@ -75,6 +75,8 @@ public static void installApp(final File file) {
     
         /**
          * Uninstall the app.
    +     * 

    Target APIs greater than 25 must hold + * Must hold {@code }

    * * @param packageName The name of the package. */ diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java index c39ccc481d..84224db4f9 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java @@ -83,6 +83,8 @@ public static Intent getInstallAppIntent(final File file) { /** * Return the intent of uninstall app. + *

    Target APIs greater than 25 must hold + * Must hold {@code }

    * * @param pkgName The name of the package. * @return the intent of uninstall app From de3723eec0d563cb6ca2f4e00c1cdfc8b8706de3 Mon Sep 17 00:00:00 2001 From: Blankj Date: Mon, 6 Apr 2020 19:18:17 +0800 Subject: [PATCH 036/122] see 04/06 log --- .../main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt index 6a7ed81bd5..081ae6f071 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt @@ -19,7 +19,6 @@ import com.blankj.base.dialog.DialogLayoutCallback import com.blankj.common.dialog.CommonDialogContent import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.* -import com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldRequest /** * ``` @@ -31,7 +30,7 @@ import com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldReques */ object DialogHelper { - fun showRationaleDialog(context: Context, shouldRequest: ShouldRequest) { + fun showRationaleDialog(context: Context, shouldRequest: PermissionUtils.OnRationaleListener.ShouldRequest) { CommonDialogContent().init(context, StringUtils.getString(android.R.string.dialog_alert_title), StringUtils.getString(R.string.permission_rationale_message), From 3fd7a91e0e3bbd2ddbaf2b79163527b02dcc87d9 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 7 Apr 2020 00:11:37 +0800 Subject: [PATCH 037/122] see 04/07 log --- lib/utildebug/build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle index b733473cf1..6e1157ef0b 100644 --- a/lib/utildebug/build.gradle +++ b/lib/utildebug/build.gradle @@ -9,4 +9,8 @@ dependencies { testImplementation Config.depConfig.test_junit.dep testImplementation Config.depConfig.test_robolectric.dep testImplementation Config.depConfig.support_appcompat.dep +} + +afterEvaluate { + verifyReleaseResources.enabled(false) } \ No newline at end of file From ca255b6e43d8f000249f56b7c3e74dce9993748c Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 7 Apr 2020 16:51:49 +0800 Subject: [PATCH 038/122] see 04/07 log --- .../src/main/java/com/blankj/utilcode/util/GsonUtils.java | 2 +- .../src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java index 05b73b9665..53ba83a6ee 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java @@ -66,7 +66,7 @@ public static Gson getGson(final String key) { return GSONS.get(key); } - private static Gson getGson() { + public static Gson getGson() { Gson gsonDelegate = GSONS.get(KEY_DELEGATE); if (gsonDelegate != null) { return gsonDelegate; diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java index 2e63019386..f39c32661e 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ApiUtilsTest.java @@ -15,7 +15,7 @@ public class ApiUtilsTest extends BaseTest { @Before public void setUp() throws Exception { - ApiUtils.register(ApiUtils.BaseApi.class); + ApiUtils.register(TestApiImpl.class); } @Test From 35de0c4dbce67e5b433d6e6ee3d588ae6b6e9ae3 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 7 Apr 2020 16:54:00 +0800 Subject: [PATCH 039/122] see 04/07 log --- .github/workflows/android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index e51c75482c..311fc1deaa 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -14,4 +14,4 @@ jobs: with: java-version: 1.8 - name: Build with Gradle - run: ./gradlew aR + run: ./gradlew build aR From 96c45acb8eb47a58c84bb467e6b126500765f5b2 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 7 Apr 2020 17:21:35 +0800 Subject: [PATCH 040/122] see 04/07 log --- .../src/test/java/com/blankj/utilcode/util/BaseTest.java | 8 +++++--- .../java/com/blankj/utilcode/util/UiMessageUtilsTest.java | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java index 6e097938bf..ebaa83564d 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java @@ -1,7 +1,5 @@ package com.blankj.utilcode.util; -import android.support.annotation.NonNull; -import java.util.concurrent.Executor; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -9,6 +7,10 @@ import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowLog; +import java.util.concurrent.Executor; + +import androidx.annotation.NonNull; + /** *
      *     author: Blankj
    @@ -18,7 +20,7 @@
      * 
    */ @RunWith(RobolectricTestRunner.class) -@Config(manifest = Config.NONE,shadows = { ShadowLog.class }) +@Config(manifest = Config.NONE, shadows = {ShadowLog.class}) public class BaseTest { @BusUtils.Bus(tag = "base") diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/UiMessageUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/UiMessageUtilsTest.java index 1ef00ee586..140dd77683 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/UiMessageUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/UiMessageUtilsTest.java @@ -1,9 +1,10 @@ package com.blankj.utilcode.util; -import android.support.annotation.NonNull; import org.junit.Test; +import androidx.annotation.NonNull; + /** *
      *     author: blankj
    
    From 46052774edc46fdc718737745361a27996b878d9 Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Wed, 8 Apr 2020 02:58:29 +0800
    Subject: [PATCH 041/122] see 04/08 log
    
    ---
     CHANGELOG.md                                  |  2 +
     buildSrc/src/main/groovy/Config.groovy        |  2 +-
     .../plugin/readme/ReadmeCorePlugin.groovy     |  8 +++-
     .../utilcode/pkg/feature/CoreUtilActivity.kt  | 12 +++++
     .../utilcode/pkg/feature/mvp/MvpModel.java    |  2 +-
     .../pkg/src/main/res/values/strings.xml       |  1 +
     .../java/com/blankj/base/BaseApplication.java |  2 +-
     .../com/blankj/base/mvp/BasePresenter.java    | 30 +++++++------
     .../java/com/blankj/base/mvp/BaseView.java    | 11 +++--
     lib/utilcode/README-CN.md                     | 11 ++++-
     lib/utilcode/README.md                        | 11 ++++-
     lib/utilcode/build.gradle                     |  8 ++--
     .../com/blankj/utilcode/util/CrashUtils.java  | 18 +++++---
     .../com/blankj/utilcode/util/LogUtils.java    | 18 ++++----
     .../java/com/blankj/utilcode/util/Utils.java  | 10 ++---
     .../util/UtilsActivityLifecycleImpl.java      | 25 +++++++++++
     .../com/blankj/utilcode/util/UtilsBridge.java | 15 +++----
     .../utilcode/util/UtilsTransActivity.java     | 45 +++++++++++++------
     lib/utildebug/build.gradle                    |  4 ++
     19 files changed, 159 insertions(+), 76 deletions(-)
    
    diff --git a/CHANGELOG.md b/CHANGELOG.md
    index 3b570b4053..bb522593f6 100644
    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -1,3 +1,5 @@
    +* `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed. Publish v1.27.3.
    +* `20/04/07` [mdf] GsonUtils#getGson() method public.
     * `20/04/04` [fix] ShadowUtils bug running on lower version devices. Publish v1.27.2.
     * `20/04/03` [fix] UtilsActivityLifecycleImpl#HashMap#remove IllegalStateException bug.
     * `20/04/02` [fix] PathUtils sdcard enable state is wrong; ActivityUtils finish activity wrong; Publish v1.27.1.
    diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
    index 66df4320d7..053c8990d5 100644
    --- a/buildSrc/src/main/groovy/Config.groovy
    +++ b/buildSrc/src/main/groovy/Config.groovy
    @@ -15,7 +15,7 @@ class Config {
         static minSdkVersion = 14
         static targetSdkVersion = 29
         static versionCode = 1_026_001
    -    static versionName = '1.27.2'// E.g. 1.9.72 => 1,009,072
    +    static versionName = '1.27.3'// E.g. 1.9.72 => 1,009,072
     
         // lib version
         static gradlePluginVersion = '3.5.0'
    diff --git a/buildSrc/src/main/java/com/blankj/plugin/readme/ReadmeCorePlugin.groovy b/buildSrc/src/main/java/com/blankj/plugin/readme/ReadmeCorePlugin.groovy
    index a6f2b34e05..5b2f242a49 100644
    --- a/buildSrc/src/main/java/com/blankj/plugin/readme/ReadmeCorePlugin.groovy
    +++ b/buildSrc/src/main/java/com/blankj/plugin/readme/ReadmeCorePlugin.groovy
    @@ -30,8 +30,12 @@ class ReadmeCorePlugin implements Plugin {
             def sb = new StringBuilder()
             readmeCN.eachLine { line ->
                 if (line.contains("* ###")) {
    -                String utilsName = line.substring(line.indexOf("[") + 1, line.indexOf("Utils"))
    -                sb.append("* ### About ").append(utilsName).append(line.substring(line.indexOf(" -> ")))
    +                if (line.contains("UtilsTransActivity")) {
    +                    sb.append(line)
    +                } else {
    +                    String utilsName = line.substring(line.indexOf("[") + 1, line.indexOf("Utils"))
    +                    sb.append("* ### About ").append(utilsName).append(line.substring(line.indexOf(" -> ")))
    +                }
                 } else if (line.contains(": ") && !line.contains("[")) {
                     sb.append(line.substring(0, line.indexOf(':')).trim())
                 } else if (line.contains("打个小广告") || line.contains("知识星球") || line.contains("我的二维码")) {
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    index ae4b441847..bc07396d1b 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt
    @@ -2,6 +2,8 @@ package com.blankj.utilcode.pkg.feature
     
     import android.content.Context
     import android.content.Intent
    +import android.os.Bundle
    +import android.widget.TextView
     import com.blankj.common.activity.CommonActivity
     import com.blankj.common.item.CommonItem
     import com.blankj.common.item.CommonItemClick
    @@ -43,6 +45,7 @@ import com.blankj.utilcode.pkg.feature.span.SpanActivity
     import com.blankj.utilcode.pkg.feature.toast.ToastActivity
     import com.blankj.utilcode.pkg.feature.vibrate.VibrateActivity
     import com.blankj.utilcode.util.CollectionUtils
    +import com.blankj.utilcode.util.UtilsTransActivity
     
     /**
      * ```
    @@ -175,6 +178,15 @@ class CoreUtilActivity : CommonActivity() {
                     CommonItemClick(R.string.demo_toast, true) {
                         ToastActivity.start(this)
                     },
    +                CommonItemClick(R.string.demo_trans_activity, true) {
    +                    UtilsTransActivity.start(this, object : UtilsTransActivity.TransActivityDelegate() {
    +                        override fun onCreated(activity: UtilsTransActivity, savedInstanceState: Bundle?) {
    +                            super.onCreated(activity, savedInstanceState)
    +                            activity.setContentView(R.layout.common_dialog_loading)
    +                            activity.findViewById(R.id.utilActionLoadingMsgTv).text = "Trans Activity is showing..."
    +                        }
    +                    })
    +                },
                     CommonItemClick(R.string.demo_vibrate, true) {
                         VibrateActivity.start(this)
                     }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java
    index fa027bda5c..023c3a919b 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java
    @@ -31,7 +31,7 @@ public void requestUpdateMsg(final Utils.Consumer consumer) {
             ThreadUtils.executeByCached(addAutoDestroyTask(new ThreadUtils.SimpleTask() {
                 @Override
                 public String doInBackground() throws Throwable {
    -                Thread.sleep(1000);
    +                Thread.sleep(2000);
                     return "msg: " + index++;
                 }
     
    diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml
    index 2ea4c0df1e..04d50c86f2 100644
    --- a/feature/utilcode/pkg/src/main/res/values/strings.xml
    +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml
    @@ -37,6 +37,7 @@
         SPStaticUtils Demo
         SpanUtils Demo
         ToastUtils Demo
    +    TransActivity Demo
         VibrateUtils Demo
     
         
    diff --git a/lib/base/src/main/java/com/blankj/base/BaseApplication.java b/lib/base/src/main/java/com/blankj/base/BaseApplication.java
    index d4c8580c3b..aedea57cb4 100644
    --- a/lib/base/src/main/java/com/blankj/base/BaseApplication.java
    +++ b/lib/base/src/main/java/com/blankj/base/BaseApplication.java
    @@ -83,7 +83,7 @@ private void initCrash() {
                 @Override
                 public void onCrash(String crashInfo, Throwable e) {
                     LogUtils.e(crashInfo);
    -                AppUtils.relaunchApp(true);
    +                AppUtils.relaunchApp();
                 }
             });
         }
    diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    index acdfa44950..7365c3490a 100644
    --- a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    +++ b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    @@ -1,12 +1,12 @@
     package com.blankj.base.mvp;
     
    +import android.app.Activity;
     import android.arch.lifecycle.Lifecycle;
    -import android.arch.lifecycle.LifecycleObserver;
    -import android.arch.lifecycle.LifecycleOwner;
    -import android.arch.lifecycle.OnLifecycleEvent;
    -import android.support.annotation.CallSuper;
    +import android.support.annotation.NonNull;
     
    +import com.blankj.utilcode.util.ActivityUtils;
     import com.blankj.utilcode.util.LogUtils;
    +import com.blankj.utilcode.util.Utils;
     
     import java.util.HashMap;
     import java.util.Map;
    @@ -19,7 +19,7 @@
      *     desc  :
      * 
    */ -public abstract class BasePresenter implements LifecycleObserver { +public abstract class BasePresenter extends Utils.ActivityLifecycleCallbacks { private V mView; private Map mModelMap = new HashMap<>(); @@ -29,6 +29,7 @@ public abstract class BasePresenter implements LifecycleObse void bindView(V view) { this.mView = view; onAttachView(); + ActivityUtils.addActivityLifecycleCallbacks(mView.getActivity(), this); } public V getView() { @@ -54,9 +55,16 @@ public M getModel(Class modelClass) { return null; } - @CallSuper - @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) - public void onDestroyPresenter() { + @Override + public void onLifecycleChanged(@NonNull Activity activity, Lifecycle.Event event) { + super.onLifecycleChanged(activity, event); + if (event == Lifecycle.Event.ON_DESTROY) { + destroyPresenter(); + } + LogUtils.i("onLifecycleChanged: " + event); + } + + private void destroyPresenter() { if (mView != null) { mView.mPresenterMap.remove(this.getClass()); mView.onDestroyView(); @@ -67,11 +75,5 @@ public void onDestroyPresenter() { } } mModelMap.clear(); - LogUtils.i("onDestroyPresenter"); - } - - @OnLifecycleEvent(Lifecycle.Event.ON_ANY) - public void onLifecycleChanged(LifecycleOwner owner, Lifecycle.Event event) { - LogUtils.i(event.toString()); } } diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java b/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java index 1e725be0b0..a870e06d82 100644 --- a/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java +++ b/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java @@ -1,9 +1,14 @@ package com.blankj.base.mvp; +import android.app.Activity; import android.arch.lifecycle.Lifecycle; +import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; +import com.blankj.utilcode.util.ActivityUtils; +import com.blankj.utilcode.util.Utils; + import java.util.HashMap; import java.util.Map; @@ -19,20 +24,17 @@ public abstract class BaseView { private FragmentActivity mActivity; private Fragment mFragment; - private Lifecycle mLifecycle; Map> mPresenterMap = new HashMap<>(); public abstract void onDestroyView(); public BaseView(FragmentActivity activity) { mActivity = activity; - mLifecycle = activity.getLifecycle(); } public BaseView(Fragment fragment) { mFragment = fragment; mActivity = fragment.getActivity(); - mLifecycle = fragment.getLifecycle(); } public T getActivity() { @@ -49,9 +51,6 @@ public void addPresenter(BasePresenter presenter) { mPresenterMap.put(presenter.getClass(), presenter); //noinspection unchecked presenter.bindView((V) this); - if (mLifecycle != null) { - mLifecycle.addObserver(presenter); - } } public

    > P getPresenter(Class

    presenterClass) { diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 080615c79f..9ca73f157d 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.2' +implementation 'com.blankj:utilcode:1.27.3' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.2' +implementation 'com.blankj:utilcodex:1.27.3' ``` @@ -1143,6 +1143,11 @@ file2Uri: file 转 uri uri2File: uri 转 file ``` +* ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java] +``` +start: 启动透明 Activity +``` + * ### 震动相关 -> [VibrateUtils.java][vibrate.java] -> [Demo][vibrate.demo] ``` vibrate: 震动 @@ -1365,6 +1370,8 @@ getComments : 获取压缩文件中的注释链表 [uri.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +[trans.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java + [vibrate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java [vibrate.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index d70cca6afb..08ba2811ff 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.2' +implementation 'com.blankj:utilcode:1.27.3' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.2' +implementation 'com.blankj:utilcodex:1.27.3' ``` @@ -1143,6 +1143,11 @@ file2Uri uri2File ``` +* ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java] +``` +start +``` + * ### About Vibrate -> [VibrateUtils.java][vibrate.java] -> [Demo][vibrate.demo] ``` vibrate @@ -1362,6 +1367,8 @@ getComments [uri.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +[trans.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java + [vibrate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java [vibrate.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index a4d5d69d3d..283e55936b 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -40,6 +40,10 @@ dependencies { testImplementation Config.depConfig.eventbus_lib.dep } +afterEvaluate { + verifyReleaseResources.enabled(false) +} + apply from: "${rootDir.path}/gradle/publish.gradle" publish { name = "UtilCode" @@ -47,8 +51,4 @@ publish { artifactId = Config.depConfig.lib_utilcode.artifactId version = Config.depConfig.lib_utilcode.version website = "https://github.com/Blankj/AndroidUtilCode" -} - -afterEvaluate { - verifyReleaseResources.enabled(false) } \ No newline at end of file diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java index 5adde0c0fb..dd049e7e77 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java @@ -21,6 +21,8 @@ public final class CrashUtils { private static final String FILE_SEP = System.getProperty("file.separator"); + private static final UncaughtExceptionHandler DEFAULT_UNCAUGHT_EXCEPTION_HANDLER = Thread.getDefaultUncaughtExceptionHandler(); + private CrashUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } @@ -79,7 +81,12 @@ public static void init(@NonNull final File crashDir, final OnCrashListener onCr public static void init(final String crashDirPath, final OnCrashListener onCrashListener) { String dirPath; if (UtilsBridge.isSpace(crashDirPath)) { - dirPath = Utils.getApp().getFilesDir() + FILE_SEP + "crash" + FILE_SEP; + if (UtilsBridge.isSDCardEnableByEnvironment() + && Utils.getApp().getExternalFilesDir(null) != null) + dirPath = Utils.getApp().getExternalFilesDir(null) + FILE_SEP + "crash" + FILE_SEP; + else { + dirPath = Utils.getApp().getFilesDir() + FILE_SEP + "crash" + FILE_SEP; + } } else { dirPath = crashDirPath.endsWith(FILE_SEP) ? crashDirPath : crashDirPath + FILE_SEP; } @@ -91,7 +98,7 @@ private static UncaughtExceptionHandler getUncaughtExceptionHandler(final String return new UncaughtExceptionHandler() { @Override public void uncaughtException(@NonNull final Thread t, @NonNull final Throwable e) { - final String time = new SimpleDateFormat("MM-dd_HH-mm-ss").format(new Date()); + final String time = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss").format(new Date()); final StringBuilder sb = new StringBuilder(); final String head = "************* Log Head ****************" + "\nTime Of Crash : " + time + @@ -105,15 +112,14 @@ public void uncaughtException(@NonNull final Thread t, @NonNull final Throwable sb.append(head).append(UtilsBridge.getFullStackTrace(e)); final String crashInfo = sb.toString(); final String crashFile = dirPath + time + ".txt"; - UtilsBridge.writeFileFromString(crashFile, crashInfo); + UtilsBridge.writeFileFromString(crashFile, crashInfo, true); if (onCrashListener != null) { onCrashListener.onCrash(crashInfo, e); } - UncaughtExceptionHandler handler = Thread.getDefaultUncaughtExceptionHandler(); - if (handler != null) { - handler.uncaughtException(t, e); + if (DEFAULT_UNCAUGHT_EXCEPTION_HANDLER != null) { + DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(t, e); } } }; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java index 4c02db523f..040a3545d0 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java @@ -593,7 +593,7 @@ private static void printDeviceInfo(final String filePath, final String date) { private static void input2File(final String filePath, final String input) { if (CONFIG.mFileWriter == null) { - UtilsBridge.writeFileFromString(filePath, input); + UtilsBridge.writeFileFromString(filePath, input, true); } else { CONFIG.mFileWriter.write(filePath, input); } @@ -621,13 +621,12 @@ public static final class Config { private IFileWriter mFileWriter; private Config() { - mDefaultDir = Utils.getApp().getFilesDir() + FILE_SEP + "log" + FILE_SEP; - mFileWriter = new IFileWriter() { - @Override - public void write(String file, String content) { - - } - }; + if (UtilsBridge.isSDCardEnableByEnvironment() + && Utils.getApp().getExternalFilesDir(null) != null) + mDefaultDir = Utils.getApp().getExternalFilesDir(null) + FILE_SEP + "log" + FILE_SEP; + else { + mDefaultDir = Utils.getApp().getFilesDir() + FILE_SEP + "log" + FILE_SEP; + } } public final Config setLogSwitch(final boolean logSwitch) { @@ -863,7 +862,8 @@ static String object2String(Object object) { static String object2String(Object object, int type) { if (object.getClass().isArray()) return array2String(object); - if (object instanceof Throwable) return UtilsBridge.getFullStackTrace((Throwable) object); + if (object instanceof Throwable) + return UtilsBridge.getFullStackTrace((Throwable) object); if (object instanceof Bundle) return bundle2String((Bundle) object); if (object instanceof Intent) return intent2String((Intent) object); if (type == JSON) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java index 8c4312d354..78ab596888 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java @@ -53,14 +53,16 @@ public static void init(final Application app) { */ public static Application getApp() { if (sApp != null) return sApp; - throw new NullPointerException("UtilsFileProvider load failed."); + sApp = UtilsBridge.getApplicationByReflect(); + if (sApp != null) return sApp; + throw new NullPointerException("UtilsFileProvider load failed && reflect failed."); } /////////////////////////////////////////////////////////////////////////// // interface /////////////////////////////////////////////////////////////////////////// - public abstract static class Task extends UtilsBridge.Task { + public abstract static class Task extends ThreadUtils.SimpleTask { private Consumer mConsumer; @@ -99,10 +101,6 @@ public void onActivityDestroyed(@NonNull Activity activity) {/**/} public void onLifecycleChanged(@NonNull Activity activity, Lifecycle.Event event) {/**/} } - public interface OnActivityDestroyedListener { - void onActivityDestroyed(Activity activity); - } - public interface Consumer { void accept(T t); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index c0d89fe4ca..af57bc14bd 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -12,6 +12,7 @@ import android.view.WindowManager; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -83,6 +84,27 @@ public void run() { }); } + Application getApplicationByReflect() { + try { + Class activityThreadClass = Class.forName("android.app.ActivityThread"); + Object thread = getActivityThread(); + Object app = activityThreadClass.getMethod("getApplication").invoke(thread); + if (app == null) { + return null; + } + return (Application) app; + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + return null; + } + private void addActivityLifecycleCallbacksInner(final Activity activity, final Utils.ActivityLifecycleCallbacks lifecycleCallbacks) { List callbacks = mActivityLifecycleCallbacksMap.get(activity); @@ -265,6 +287,9 @@ private void setTopActivity(final Activity activity) { } } + /** + * @return the activities which topActivity is first position + */ private List getActivitiesByReflect() { LinkedList list = new LinkedList<>(); Activity topActivity = null; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 89cf1a0c51..1cd3997123 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -1,6 +1,7 @@ package com.blankj.utilcode.util; import android.app.Activity; +import android.app.Application; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; @@ -72,6 +73,10 @@ static List getActivityList() { return UtilsActivityLifecycleImpl.INSTANCE.getActivityList(); } + static Application getApplicationByReflect() { + return UtilsActivityLifecycleImpl.INSTANCE.getApplicationByReflect(); + } + /////////////////////////////////////////////////////////////////////////// // ActivityUtils /////////////////////////////////////////////////////////////////////////// @@ -236,8 +241,8 @@ static byte[] readFile2Bytes(final File file) { return FileIOUtils.readFile2BytesByChannel(file); } - static boolean writeFileFromString(final String filePath, final String content) { - return FileIOUtils.writeFileFromString(filePath, content); + static boolean writeFileFromString(final String filePath, final String content, final boolean append) { + return FileIOUtils.writeFileFromString(filePath, content, append); } static boolean writeFileFromIS(final String filePath, final InputStream is) { @@ -506,10 +511,4 @@ private static void preLoad(final Runnable... runs) { static Uri file2Uri(final File file) { return UriUtils.file2Uri(file); } - - /////////////////////////////////////////////////////////////////////////// - // class - /////////////////////////////////////////////////////////////////////////// - static abstract class Task extends ThreadUtils.SimpleTask { - } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java index 46b6dd2bca..0b9ce217bc 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java @@ -1,7 +1,9 @@ package com.blankj.utilcode.util; +import android.app.Activity; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; @@ -23,18 +25,33 @@ public class UtilsTransActivity extends AppCompatActivity { private static TransActivityDelegate sDelegate; public static void start(final TransActivityDelegate delegate) { - start(null, delegate); + start(null, null, delegate); } public static void start(final Utils.Consumer consumer, final TransActivityDelegate delegate) { + start(null, consumer, delegate); + } + + public static void start(final Activity activity, + final TransActivityDelegate delegate) { + start(activity, null, delegate); + } + + public static void start(final Activity activity, + final Utils.Consumer consumer, + final TransActivityDelegate delegate) { if (delegate == null) return; Intent starter = new Intent(Utils.getApp(), UtilsTransActivity.class); - starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (consumer != null) { consumer.accept(starter); } - Utils.getApp().startActivity(starter); + if (activity == null) { + starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + Utils.getApp().startActivity(starter); + } else { + activity.startActivity(starter); + } sDelegate = delegate; } @@ -130,27 +147,27 @@ public boolean dispatchTouchEvent(MotionEvent ev) { } public abstract static class TransActivityDelegate { - public void onCreateBefore(UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/} + public void onCreateBefore(@NonNull UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/} - public void onCreated(UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/} + public void onCreated(@NonNull UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/} - public void onStarted(UtilsTransActivity activity) {/**/} + public void onStarted(@NonNull UtilsTransActivity activity) {/**/} - public void onDestroy(UtilsTransActivity activity) {/**/} + public void onDestroy(@NonNull UtilsTransActivity activity) {/**/} - public void onResumed(UtilsTransActivity activity) {/**/} + public void onResumed(@NonNull UtilsTransActivity activity) {/**/} - public void onPaused(UtilsTransActivity activity) {/**/} + public void onPaused(@NonNull UtilsTransActivity activity) {/**/} - public void onStopped(UtilsTransActivity activity) {/**/} + public void onStopped(@NonNull UtilsTransActivity activity) {/**/} - public void onSaveInstanceState(UtilsTransActivity activity, Bundle outState) {/**/} + public void onSaveInstanceState(@NonNull UtilsTransActivity activity, Bundle outState) {/**/} - public void onRequestPermissionsResult(UtilsTransActivity activity, int requestCode, String[] permissions, int[] grantResults) {/**/} + public void onRequestPermissionsResult(@NonNull UtilsTransActivity activity, int requestCode, String[] permissions, int[] grantResults) {/**/} - public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) {/**/} + public void onActivityResult(@NonNull UtilsTransActivity activity, int requestCode, int resultCode, Intent data) {/**/} - public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) { + public boolean dispatchTouchEvent(@NonNull UtilsTransActivity activity, MotionEvent ev) { return false; } } diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle index 8a06562880..11a345f42d 100644 --- a/lib/utildebug/build.gradle +++ b/lib/utildebug/build.gradle @@ -8,4 +8,8 @@ dependencies { testImplementation Config.depConfig.test_junit.dep testImplementation Config.depConfig.test_robolectric.dep testImplementation Config.depConfig.support_appcompat_v7.dep +} + +afterEvaluate { + verifyReleaseResources.enabled(false) } \ No newline at end of file From 9d013008b69ace69e719933740cd99100a514e7f Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 8 Apr 2020 03:14:45 +0800 Subject: [PATCH 042/122] see 04/08 log --- .github/ISSUE_TEMPLATE/bug_report.md | 1 - .github/ISSUE_TEMPLATE/bug_report_cn.md | 1 - .github/ISSUE_TEMPLATE/feature-request.md | 1 - .github/ISSUE_TEMPLATE/feature-request_cn.md | 1 - 4 files changed, 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 6ad34f860e..e29c2e45b6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,7 +1,6 @@ --- name: Bug report about: Make AndroidUtilCode more perfect! -title: "[BUG]" labels: bug assignees: Blankj diff --git a/.github/ISSUE_TEMPLATE/bug_report_cn.md b/.github/ISSUE_TEMPLATE/bug_report_cn.md index 42c82103b3..02ea0223e3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report_cn.md +++ b/.github/ISSUE_TEMPLATE/bug_report_cn.md @@ -1,7 +1,6 @@ --- name: 提交 Bug about: 让工具类更完美! -title: "[BUG]" labels: bug assignees: Blankj diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index c8f38ca916..90a0fe1993 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -1,7 +1,6 @@ --- name: Feature request about: Make AndroidUtilCode more perfect! -title: "[FEATURE]" labels: help wanted assignees: Blankj diff --git a/.github/ISSUE_TEMPLATE/feature-request_cn.md b/.github/ISSUE_TEMPLATE/feature-request_cn.md index ee8b11c4f1..20862d047b 100644 --- a/.github/ISSUE_TEMPLATE/feature-request_cn.md +++ b/.github/ISSUE_TEMPLATE/feature-request_cn.md @@ -1,7 +1,6 @@ --- name: 提交需求 about: 让工具类更健全! -title: "[FEATURE]" labels: help wanted assignees: Blankj From 72af9ebfc6628f6188a1f3f6d3b9a51c5e9414d5 Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 8 Apr 2020 14:32:50 +0800 Subject: [PATCH 043/122] see 04/08 log --- CHANGELOG.md | 3 ++- buildSrc/src/main/groovy/Config.groovy | 2 +- .../feature/messenger/MessengerActivity.kt | 1 + lib/utilcode/README-CN.md | 4 ++-- lib/utilcode/README.md | 4 ++-- .../com/blankj/utilcode/util/CleanUtils.java | 22 +++++-------------- .../blankj/utilcode/util/ProcessUtils.java | 22 +++++++++++-------- .../java/com/blankj/utilcode/util/Utils.java | 10 ++++++--- .../com/blankj/utilcode/util/UtilsBridge.java | 4 ++-- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb522593f6..204abb5f8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ -* `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed. Publish v1.27.3. +* `20/04/08` [fix] CleanUtils clean dir not work. Publish v1.27.4. +* `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed; Utils#getApp failed run on remote process. Publish v1.27.3. * `20/04/07` [mdf] GsonUtils#getGson() method public. * `20/04/04` [fix] ShadowUtils bug running on lower version devices. Publish v1.27.2. * `20/04/03` [fix] UtilsActivityLifecycleImpl#HashMap#remove IllegalStateException bug. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 053c8990d5..33b8f5c317 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.27.3'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.27.4'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/messenger/MessengerActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/messenger/MessengerActivity.kt index 7c30128522..3d00af0e1a 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/messenger/MessengerActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/messenger/MessengerActivity.kt @@ -12,6 +12,7 @@ import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.CollectionUtils import com.blankj.utilcode.util.MessengerUtils import com.blankj.utilcode.util.SnackbarUtils +import com.blankj.utilcode.util.ToastUtils /** * ``` diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 9ca73f157d..9fea26017d 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.3' +implementation 'com.blankj:utilcode:1.27.4' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.3' +implementation 'com.blankj:utilcodex:1.27.4' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 08ba2811ff..0da9d2e9f0 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.3' +implementation 'com.blankj:utilcode:1.27.4' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.3' +implementation 'com.blankj:utilcodex:1.27.4' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java index 749ea1acb2..aa95ae7126 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java @@ -25,7 +25,7 @@ private CleanUtils() { * @return {@code true}: success
    {@code false}: fail */ public static boolean cleanInternalCache() { - return cleanCustomDir(Utils.getApp().getCacheDir()); + return UtilsBridge.deleteAllInDir(Utils.getApp().getCacheDir()); } /** @@ -35,7 +35,7 @@ public static boolean cleanInternalCache() { * @return {@code true}: success
    {@code false}: fail */ public static boolean cleanInternalFiles() { - return cleanCustomDir(Utils.getApp().getFilesDir()); + return UtilsBridge.deleteAllInDir(Utils.getApp().getFilesDir()); } /** @@ -45,7 +45,7 @@ public static boolean cleanInternalFiles() { * @return {@code true}: success
    {@code false}: fail */ public static boolean cleanInternalDbs() { - return cleanCustomDir(new File(Utils.getApp().getFilesDir().getParent(), "databases")); + return UtilsBridge.deleteAllInDir(new File(Utils.getApp().getFilesDir().getParent(), "databases")); } /** @@ -66,7 +66,7 @@ public static boolean cleanInternalDbByName(final String dbName) { * @return {@code true}: success
    {@code false}: fail */ public static boolean cleanInternalSp() { - return cleanCustomDir(new File(Utils.getApp().getFilesDir().getParent(), "shared_prefs")); + return UtilsBridge.deleteAllInDir(new File(Utils.getApp().getFilesDir().getParent(), "shared_prefs")); } /** @@ -77,7 +77,7 @@ public static boolean cleanInternalSp() { */ public static boolean cleanExternalCache() { return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) - && cleanCustomDir(Utils.getApp().getExternalCacheDir()); + && UtilsBridge.deleteAllInDir(Utils.getApp().getExternalCacheDir()); } /** @@ -87,16 +87,6 @@ public static boolean cleanExternalCache() { * @return {@code true}: success
    {@code false}: fail */ public static boolean cleanCustomDir(final String dirPath) { - return cleanCustomDir(UtilsBridge.getFileByPath(dirPath)); - } - - /** - * Clean the custom directory. - * - * @param dir The directory. - * @return {@code true}: success
    {@code false}: fail - */ - public static boolean cleanCustomDir(final File dir) { - return UtilsBridge.deleteFilesInDir(dir); + return UtilsBridge.deleteAllInDir(UtilsBridge.getFileByPath(dirPath)); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java index 5425122759..e1d3006821 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ProcessUtils.java @@ -231,17 +231,21 @@ private static String getCurrentProcessNameByFile() { } private static String getCurrentProcessNameByAms() { - ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); - if (am == null) return ""; - List info = am.getRunningAppProcesses(); - if (info == null || info.size() == 0) return ""; - int pid = android.os.Process.myPid(); - for (ActivityManager.RunningAppProcessInfo aInfo : info) { - if (aInfo.pid == pid) { - if (aInfo.processName != null) { - return aInfo.processName; + try { + ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); + if (am == null) return ""; + List info = am.getRunningAppProcesses(); + if (info == null || info.size() == 0) return ""; + int pid = android.os.Process.myPid(); + for (ActivityManager.RunningAppProcessInfo aInfo : info) { + if (aInfo.pid == pid) { + if (aInfo.processName != null) { + return aInfo.processName; + } } } + } catch (Exception e) { + return ""; } return ""; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java index 78ab596888..dd957b5a51 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java @@ -5,6 +5,7 @@ import android.app.Application; import android.arch.lifecycle.Lifecycle; import android.support.annotation.NonNull; +import android.util.Log; /** *

    @@ -48,14 +49,17 @@ public static void init(final Application app) {
     
         /**
          * Return the Application object.
    +     * 

    Main process get app by UtilsFileProvider, + * and other process get app by reflect.

    * * @return the Application object */ public static Application getApp() { if (sApp != null) return sApp; - sApp = UtilsBridge.getApplicationByReflect(); - if (sApp != null) return sApp; - throw new NullPointerException("UtilsFileProvider load failed && reflect failed."); + init(UtilsBridge.getApplicationByReflect()); + if (sApp == null) throw new NullPointerException("reflect failed."); + Log.i("Utils", UtilsBridge.getCurrentProcessName() + " reflect app success."); + return sApp; } /////////////////////////////////////////////////////////////////////////// diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 1cd3997123..5ce1d4f7b2 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -260,8 +260,8 @@ static File getFileByPath(final String filePath) { return FileUtils.getFileByPath(filePath); } - static boolean deleteFilesInDir(final File dir) { - return FileUtils.deleteFilesInDir(dir); + static boolean deleteAllInDir(final File dir) { + return FileUtils.deleteAllInDir(dir); } static boolean createOrExistsFile(final File file) { From b05171d7eaffaae58842dda14fc33761696c7066 Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 8 Apr 2020 15:45:28 +0800 Subject: [PATCH 044/122] see 04/08 log --- CHANGELOG.md | 2 +- .../com/blankj/utilcode/util/FileUtils.java | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 204abb5f8f..1bacdc2119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -* `20/04/08` [fix] CleanUtils clean dir not work. Publish v1.27.4. +* `20/04/08` [fix] CleanUtils clean dir not work. FileUtils#isFileExists. Publish v1.27.4. * `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed; Utils#getApp failed run on remote process. Publish v1.27.3. * `20/04/07` [mdf] GsonUtils#getGson() method public. * `20/04/04` [fix] ShadowUtils bug running on lower version devices. Publish v1.27.2. diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java index a7ee1987b6..55ecacbe8d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java @@ -50,6 +50,16 @@ public static File getFileByPath(final String filePath) { return UtilsBridge.isSpace(filePath) ? null : new File(filePath); } + /** + * Return whether the file exists. + * + * @param file The file. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isFileExists(final File file) { + return file != null && isFileExists(file.getAbsolutePath()); + } + /** * Return whether the file exists. * @@ -58,7 +68,8 @@ public static File getFileByPath(final String filePath) { */ public static boolean isFileExists(final String filePath) { if (Build.VERSION.SDK_INT < 29) { - return isFileExists(getFileByPath(filePath)); + File file = getFileByPath(filePath); + return file != null && file.exists(); } return isFileExists29(filePath); } @@ -79,16 +90,6 @@ private static boolean isFileExists29(String filePath) { return true; } - /** - * Return whether the file exists. - * - * @param file The file. - * @return {@code true}: yes
    {@code false}: no - */ - public static boolean isFileExists(final File file) { - return file != null && file.exists(); - } - /** * Rename the file. * From 7f5f292c653bcdca036594f5b9316d65149be72e Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 8 Apr 2020 16:48:45 +0800 Subject: [PATCH 045/122] see 04/08 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 2 +- .../blankj/utilcode/pkg/feature/activity/ActivityActivity.kt | 4 ++++ feature/utilcode/pkg/src/main/res/values/strings.xml | 1 + lib/utilcode/README-CN.md | 4 ++-- lib/utilcode/README.md | 4 ++-- .../src/main/java/com/blankj/utilcode/util/ActivityUtils.java | 4 ++-- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bacdc2119..04892ba06c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/04/08` [fix] ActivityUtils#finish bug. Publish v1.27.5. * `20/04/08` [fix] CleanUtils clean dir not work. FileUtils#isFileExists. Publish v1.27.4. * `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed; Utils#getApp failed run on remote process. Publish v1.27.3. * `20/04/07` [mdf] GsonUtils#getGson() method public. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 33b8f5c317..8fc917deb0 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.27.4'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.27.5'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt index 96f2e5a7bf..63d2ac5bd8 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt @@ -53,6 +53,7 @@ class ActivityActivity : CommonActivity() { CommonItemTitle("isActivityExists(${SubActivityActivity::class.java.name})", ActivityUtils.isActivityExists(AppUtils.getAppPackageName(), SubActivityActivity::class.java.name).toString()), CommonItemTitle("getLauncherActivity", ActivityUtils.getLauncherActivity(AppUtils.getAppPackageName())), CommonItemTitle("getMainActivities", ActivityUtils.getMainActivities().toString()), + CommonItemTitle("getActivityList", CollectionUtils.collect(ActivityUtils.getActivityList()) { input -> input.javaClass.simpleName }.toString()), CommonItemTitle("getTopActivity", ActivityUtils.getTopActivity().toString()), CommonItemTitle("isActivityExistsInStack", ActivityUtils.isActivityExistsInStack(CoreUtilActivity::class.java).toString()), CommonItemImage("getActivityIcon") { @@ -143,6 +144,9 @@ class ActivityActivity : CommonActivity() { CommonItemClick(R.string.activity_finish_to_activity, true) { ActivityUtils.finishToActivity(CoreUtilActivity::class.java, false, true) }, + CommonItemClick(R.string.activity_finish_all_activities_except_newest, true) { + ActivityUtils.finishAllActivitiesExceptNewest() + }, CommonItemClick(R.string.activity_finish_all_activities, true) { ActivityUtils.finishAllActivities() } diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml index 04d50c86f2..22df9f2d27 100644 --- a/feature/utilcode/pkg/src/main/res/values/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml @@ -71,6 +71,7 @@ Start Launcher Activity Finish CoreUtilActivity Finish To CoreUtilActivity + Finish All Activities Except Newest Finish All Activities diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 9fea26017d..f2d571cd03 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.4' +implementation 'com.blankj:utilcode:1.27.5' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.4' +implementation 'com.blankj:utilcodex:1.27.5' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 0da9d2e9f0..0a25e193f0 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.4' +implementation 'com.blankj:utilcode:1.27.5' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.4' +implementation 'com.blankj:utilcodex:1.27.5' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 561b851e0e..2a5cc80f3c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -1861,7 +1861,7 @@ public static void finishAllActivitiesExceptNewest() { */ public static void finishAllActivitiesExceptNewest(final boolean isLoadAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = 1; i < activities.size() - 1; i++) { + for (int i = 1; i < activities.size(); i++) { finishActivity(activities.get(i), isLoadAnim); } } @@ -1877,7 +1877,7 @@ public static void finishAllActivitiesExceptNewest(final boolean isLoadAnim) { public static void finishAllActivitiesExceptNewest(@AnimRes final int enterAnim, @AnimRes final int exitAnim) { List activities = UtilsBridge.getActivityList(); - for (int i = 1; i < activities.size() - 1; i++) { + for (int i = 1; i < activities.size(); i++) { finishActivity(activities.get(i), enterAnim, exitAnim); } } From 11dff44fedaddca85ffe471209751f776074ade4 Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 10 Apr 2020 04:31:48 +0800 Subject: [PATCH 046/122] see 04/10 log --- CHANGELOG.md | 2 + buildSrc/src/main/groovy/Config.groovy | 2 +- .../utilcode/pkg/src/main/AndroidManifest.xml | 4 + .../utilcode/pkg/feature/CoreUtilActivity.kt | 4 + .../utilcode/pkg/feature/file/FileActivity.kt | 59 ++++++++++++++ .../utilcode/pkg/feature/log/LogActivity.kt | 2 +- .../src/main/res/layout/fragment_dialog.xml | 1 + .../pkg/src/main/res/values/strings.xml | 4 +- .../main/res/layout/common_dialog_loading.xml | 11 ++- lib/utilcode/README-CN.md | 11 ++- lib/utilcode/README.md | 11 ++- .../com/blankj/utilcode/util/FileUtils.java | 36 +++++---- .../blankj/utilcode/util/FragmentUtils.java | 4 +- .../com/blankj/utilcode/util/PathUtils.java | 80 ++++++++++++++++++- .../com/blankj/utilcode/util/ThreadUtils.java | 4 + .../com/blankj/utilcode/util/UriUtils.java | 27 ++++++- .../blankj/utilcode/util/PathUtilsTest.java | 29 +++++++ 17 files changed, 258 insertions(+), 33 deletions(-) create mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/file/FileActivity.kt create mode 100644 lib/utilcode/src/test/java/com/blankj/utilcode/util/PathUtilsTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 04892ba06c..5836e73504 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +* `20/04/10` [fix] FileUtils#isFileExists; FragmentUtils#getTop bug. Publish v1.27.6. +* `20/04/09` [add] UriUtils#res2Uri; ThreadUtils#getMainHandler; PathUtils#getxxPathExternalFirst. * `20/04/08` [fix] ActivityUtils#finish bug. Publish v1.27.5. * `20/04/08` [fix] CleanUtils clean dir not work. FileUtils#isFileExists. Publish v1.27.4. * `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed; Utils#getApp failed run on remote process. Publish v1.27.3. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 8fc917deb0..6d63dbc373 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.27.5'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.27.6'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/AndroidManifest.xml b/feature/utilcode/pkg/src/main/AndroidManifest.xml index 8a9f301242..e7ce02afb7 100644 --- a/feature/utilcode/pkg/src/main/AndroidManifest.xml +++ b/feature/utilcode/pkg/src/main/AndroidManifest.xml @@ -143,6 +143,10 @@ android:name=".feature.device.DeviceActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:launchMode="singleTop" /> + > { + return CollectionUtils.newArrayList( + CommonItemTitle("isFileExists: " + PathUtils.getInternalAppFilesPath(), "" + FileUtils.isFileExists(PathUtils.getInternalAppFilesPath())), + CommonItemTitle("isFileExists: " + PathUtils.getExternalAppFilesPath(), "" + FileUtils.isFileExists(PathUtils.getExternalAppFilesPath())), + CommonItemTitle("isFileExists: " + PathUtils.getExternalStoragePath(), "" + FileUtils.isFileExists(PathUtils.getExternalStoragePath())), + CommonItemTitle("isFileExists: " + PathUtils.getDownloadCachePath(), "" + FileUtils.isFileExists(PathUtils.getDownloadCachePath())), + CommonItemTitle("isFileExists: " + PathUtils.getExternalDownloadsPath(), "" + FileUtils.isFileExists(PathUtils.getExternalDownloadsPath() + "/" + "app-release.apk1")), + + CommonItemTitle("isFileExists: " + PathUtils.getInternalAppFilesPath(), "" + FileUtils.isFileExists(File(PathUtils.getInternalAppFilesPath()))), + CommonItemTitle("isFileExists: " + PathUtils.getExternalAppFilesPath(), "" + FileUtils.isFileExists(File(PathUtils.getExternalAppFilesPath()))), + CommonItemTitle("isFileExists: " + PathUtils.getExternalStoragePath(), "" + FileUtils.isFileExists(File(PathUtils.getExternalStoragePath()))), + CommonItemTitle("isFileExists: " + PathUtils.getDownloadCachePath(), "" + FileUtils.isFileExists(File(PathUtils.getDownloadCachePath()))), + CommonItemTitle("isFileExists: " + PathUtils.getExternalDownloadsPath(), "" + FileUtils.isFileExists(File(PathUtils.getExternalDownloadsPath() + "/" + "app-release.apk1"))) + ) + } + + override fun onDestroy() { + super.onDestroy() + SnackbarUtils.dismiss() + } +} diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt index 085b799cfd..b26bd9644c 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt @@ -130,7 +130,7 @@ class LogActivity : CommonActivity() { mConfig.setConsoleSwitch(it) } ), - CommonItemClick("Global Tag", if (mConfig.globalTag == "") "\"\"" else mConfig.globalTag).setOnClickUpdateContentListener { + CommonItemClick("Global Tag", if (mConfig.globalTag == "") "null" else mConfig.globalTag).setOnClickUpdateContentListener { if (StringUtils.isSpace(mConfig.globalTag)) { mConfig.globalTag = TAG } else { diff --git a/feature/utilcode/pkg/src/main/res/layout/fragment_dialog.xml b/feature/utilcode/pkg/src/main/res/layout/fragment_dialog.xml index 6e9a560af0..7e8aa92c9a 100644 --- a/feature/utilcode/pkg/src/main/res/layout/fragment_dialog.xml +++ b/feature/utilcode/pkg/src/main/res/layout/fragment_dialog.xml @@ -4,5 +4,6 @@ style="@style/CommonTextStyle" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@drawable/common_content_dialog_bg" android:padding="@dimen/spacing_16" android:scrollbars="vertical" /> \ No newline at end of file diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml index 22df9f2d27..57ece0868a 100644 --- a/feature/utilcode/pkg/src/main/res/values/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml @@ -6,12 +6,12 @@ AppUtils Demo BarUtils Demo BrightnessUtils Demo - BlurUtils Demo + BusUtils Demo CleanUtils Demo ClickUtils Demo - BusUtils Demo CrashUtils Demo DeviceUtils Demo + FileUtils Demo FlashlightUtils Demo FragmentUtils Demo ImageUtils Demo diff --git a/lib/common/src/main/res/layout/common_dialog_loading.xml b/lib/common/src/main/res/layout/common_dialog_loading.xml index 79a3207e4a..6399d89e45 100644 --- a/lib/common/src/main/res/layout/common_dialog_loading.xml +++ b/lib/common/src/main/res/layout/common_dialog_loading.xml @@ -15,21 +15,20 @@ android:minWidth="100dp" android:minHeight="40dp" android:paddingLeft="20dp" - android:paddingTop="8dp" + android:paddingTop="10dp" android:paddingRight="20dp" - android:paddingBottom="8dp"> + android:paddingBottom="10dp"> [PathUtils.java][path.java] -> [Demo][path.demo] ``` +join : 连接路径 getRootPath : 获取根路径 getDataPath : 获取数据路径 getDownloadCachePath : 获取下载缓存路径 @@ -745,6 +746,10 @@ getExternalAppDownloadPath : 获取外存应用下载路径 getExternalAppDcimPath : 获取外存应用数码相机图片路径 getExternalAppDocumentsPath : 获取外存应用文档路径 getExternalAppObbPath : 获取外存应用 OBB 路径 +getRootPathExternalFirst : 优先获取外部根路径 +getAppDataPathExternalFirst : 优先获取外部数据路径 +getFilesPathExternalFirst : 优先获取外部文件路径 +getCachePathExternalFirst : 优先获取外部缓存路径 ``` * ### 权限相关 -> [PermissionUtils.java][permission.java] -> [Demo][permission.demo] @@ -1049,6 +1054,7 @@ getStringArray : 获取字符数组资源 * ### 线程相关 -> [ThreadUtils.java][thread.java] -> [Test][thread.test] ``` isMainThread : 判断当前是否主线程 +getMainHandler : 获取主线程 Handler runOnUiThread : 运行在主线程 runOnUiThreadDelayed : 延时运行在主线程 getFixedPool : 获取固定线程池 @@ -1139,6 +1145,7 @@ removeListener: 移除消息监听器 * ### URI 相关 -> [UriUtils.java][uri.java] ``` +res2Uri : res 转 uri file2Uri: file 转 uri uri2File: uri 转 file ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 0a25e193f0..ed5ee22da0 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.5' +implementation 'com.blankj:utilcode:1.27.6' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.5' +implementation 'com.blankj:utilcodex:1.27.6' ``` @@ -709,6 +709,7 @@ hashCode(s) * ### About Path -> [PathUtils.java][path.java] -> [Demo][path.demo] ``` +join getRootPath getDataPath getDownloadCachePath @@ -745,6 +746,10 @@ getExternalAppDownloadPath getExternalAppDcimPath getExternalAppDocumentsPath getExternalAppObbPath +getRootPathExternalFirst +getAppDataPathExternalFirst +getFilesPathExternalFirst +getCachePathExternalFirst ``` * ### About Permission -> [PermissionUtils.java][permission.java] -> [Demo][permission.demo] @@ -1049,6 +1054,7 @@ getStringArray * ### About Thread -> [ThreadUtils.java][thread.java] -> [Test][thread.test] ``` isMainThread +getMainHandler runOnUiThread runOnUiThreadDelayed getFixedPool @@ -1139,6 +1145,7 @@ removeListener * ### About Uri -> [UriUtils.java][uri.java] ``` +res2Uri file2Uri uri2File ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java index 55ecacbe8d..d182f9b9f2 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java @@ -57,7 +57,11 @@ public static File getFileByPath(final String filePath) { * @return {@code true}: yes
    {@code false}: no */ public static boolean isFileExists(final File file) { - return file != null && isFileExists(file.getAbsolutePath()); + if (file == null) return false; + if (file.exists()) { + return true; + } + return isFileExists(file.getAbsolutePath()); } /** @@ -67,27 +71,31 @@ public static boolean isFileExists(final File file) { * @return {@code true}: yes
    {@code false}: no */ public static boolean isFileExists(final String filePath) { - if (Build.VERSION.SDK_INT < 29) { - File file = getFileByPath(filePath); - return file != null && file.exists(); + File file = getFileByPath(filePath); + if (file == null) return false; + if (file.exists()) { + return true; } return isFileExists29(filePath); } private static boolean isFileExists29(String filePath) { - try { - Uri uri = Uri.parse(filePath); - ContentResolver cr = Utils.getApp().getContentResolver(); - AssetFileDescriptor afd = cr.openAssetFileDescriptor(uri, "r"); - if (afd == null) return false; + if (Build.VERSION.SDK_INT >= 29) { try { - afd.close(); - } catch (IOException ignore) { + Uri uri = Uri.parse(filePath); + ContentResolver cr = Utils.getApp().getContentResolver(); + AssetFileDescriptor afd = cr.openAssetFileDescriptor(uri, "r"); + if (afd == null) return false; + try { + afd.close(); + } catch (IOException ignore) { + } + } catch (FileNotFoundException e) { + return false; } - } catch (FileNotFoundException e) { - return false; + return true; } - return true; + return false; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java index 2855b80928..0916aa3b1d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java @@ -1542,10 +1542,10 @@ private static Fragment getTopIsInStack(@NonNull final FragmentManager fm, if (isInStack) { Bundle args = fragment.getArguments(); if (args != null && args.getBoolean(ARGS_IS_ADD_STACK)) { - return getTopIsInStack(fragment.getChildFragmentManager(), parentFragment, true); + return getTopIsInStack(fragment.getChildFragmentManager(), fragment, true); } } else { - return getTopIsInStack(fragment.getChildFragmentManager(), parentFragment, false); + return getTopIsInStack(fragment.getChildFragmentManager(), fragment, false); } } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java index 15d9bd1e1d..ed0a0d31c0 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PathUtils.java @@ -2,6 +2,7 @@ import android.os.Build; import android.os.Environment; +import android.text.TextUtils; import java.io.File; @@ -13,12 +14,57 @@ * desc : utils about path *
    */ -public class PathUtils { +public final class PathUtils { + + private static final char SEP = File.separatorChar; private PathUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } + /** + * Join the path. + * + * @param parent The parent of path. + * @param child The child path. + * @return the path + */ + public static String join(String parent, String child) { + if (TextUtils.isEmpty(child)) return parent; + if (parent == null) { + parent = ""; + } + int len = parent.length(); + String legalSegment = getLegalSegment(child); + String newPath; + if (len == 0) { + newPath = SEP + legalSegment; + } else if (parent.charAt(len - 1) == SEP) { + newPath = parent + legalSegment; + } else { + newPath = parent + SEP + legalSegment; + } + return newPath; + } + + private static String getLegalSegment(String segment) { + int st = -1, end = -1; + char[] charArray = segment.toCharArray(); + for (int i = 0; i < charArray.length; i++) { + char c = charArray[i]; + if (c != SEP) { + if (st == -1) { + st = i; + } + end = i; + } + } + if (st >= 0 && end >= st) { + return segment.substring(st, end + 1); + } + throw new IllegalArgumentException("segment of <" + segment + "> is illegal"); + } + /** * Return the path of /system. * @@ -386,6 +432,38 @@ public static String getExternalAppObbPath() { return getAbsolutePath(Utils.getApp().getObbDir()); } + public static String getRootPathExternalFirst() { + String rootPath = getExternalStoragePath(); + if (TextUtils.isEmpty(rootPath)) { + rootPath = getRootPath(); + } + return rootPath; + } + + public static String getAppDataPathExternalFirst() { + String appDataPath = getExternalAppDataPath(); + if (TextUtils.isEmpty(appDataPath)) { + appDataPath = getInternalAppDataPath(); + } + return appDataPath; + } + + public static String getFilesPathExternalFirst() { + String filePath = getExternalAppFilesPath(); + if (TextUtils.isEmpty(filePath)) { + filePath = getInternalAppFilesPath(); + } + return filePath; + } + + public static String getCachePathExternalFirst() { + String appPath = getExternalAppCachePath(); + if (TextUtils.isEmpty(appPath)) { + appPath = getInternalAppCachePath(); + } + return appPath; + } + private static String getAbsolutePath(final File file) { if (file == null) return ""; return file.getAbsolutePath(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java index 659e65b1d8..b99dc4d21f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java @@ -60,6 +60,10 @@ public static boolean isMainThread() { return Looper.myLooper() == Looper.getMainLooper(); } + public static Handler getMainHandler() { + return HANDLER; + } + public static void runOnUiThread(final Runnable runnable) { if (Looper.myLooper() == Looper.getMainLooper()) { runnable.run(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java index 909b210854..faf5cb9506 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java @@ -33,6 +33,18 @@ private UriUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } + /** + * Resource to uri. + *

    res2Uri([res type]/[res name]) -> res2Uri(drawable/icon), res2Uri(raw/icon)

    + *

    res2Uri([resource_id]) -> res2Uri(R.drawable.icon)

    + * + * @param resPath The path of res. + * @return uri + */ + public static Uri res2Uri(String resPath) { + return Uri.parse("android.resource://" + Utils.getApp().getPackageName() + "/" + resPath); + } + /** * File to uri. * @@ -59,8 +71,7 @@ public static File uri2File(@NonNull final Uri uri) { String authority = uri.getAuthority(); String scheme = uri.getScheme(); String path = uri.getPath(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N - && path != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && path != null) { String[] externals = new String[]{"/external", "/external_path"}; for (String external : externals) { if (path.startsWith(external + "/")) { @@ -193,6 +204,18 @@ private static File getFileFromUri(final Uri uri, final String selection, final String[] selectionArgs, final String code) { + if ("com.google.android.apps.photos.content".equals(uri.getAuthority())) { + if (!TextUtils.isEmpty(uri.getLastPathSegment())) { + return new File(uri.getLastPathSegment()); + } + } else if ("com.tencent.mtt.fileprovider".equals(uri.getAuthority())) { + String path = uri.getPath(); + if (!TextUtils.isEmpty(path)) { + File fileDir = Environment.getExternalStorageDirectory(); + return new File(fileDir, path.substring("/QQBrowser".length(), path.length())); + } + } + final Cursor cursor = Utils.getApp().getContentResolver().query( uri, new String[]{"_data"}, selection, selectionArgs, null); if (cursor == null) { diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/PathUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/PathUtilsTest.java new file mode 100644 index 0000000000..7d56434300 --- /dev/null +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/PathUtilsTest.java @@ -0,0 +1,29 @@ +package com.blankj.utilcode.util; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + *
    + *     author: blankj
    + *     blog  : http://blankj.com
    + *     time  : 2020/04/09
    + *     desc  :
    + * 
    + */ +public class PathUtilsTest extends BaseTest { + + @Test + public void join() { + assertEquals(PathUtils.join("", ""), ""); + assertEquals(PathUtils.join("", "data"), "/data"); + + assertEquals(PathUtils.join("", "//data"), "/data"); + assertEquals(PathUtils.join("", "data//"), "/data"); + assertEquals(PathUtils.join("", "//data//"), "/data"); + + assertEquals(PathUtils.join("/sdcard", "data"), "/sdcard/data"); + assertEquals(PathUtils.join("/sdcard/", "data"), "/sdcard/data"); + } +} \ No newline at end of file From 6f0974c88b6efbabc7123ec84a0fc7a3a07d46ff Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 10 Apr 2020 04:45:33 +0800 Subject: [PATCH 047/122] see 04/10 log --- CHANGELOG.md | 2 +- build.gradle | 27 ------------------- .../java/com/blankj/utilcode/pkg/Config.kt | 17 ++---------- 3 files changed, 3 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5836e73504..1b2d1261dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ * `20/04/10` [fix] FileUtils#isFileExists; FragmentUtils#getTop bug. Publish v1.27.6. -* `20/04/09` [add] UriUtils#res2Uri; ThreadUtils#getMainHandler; PathUtils#getxxPathExternalFirst. +* `20/04/09` [add] UriUtils#res2Uri, UriUtils#uri2File support QQBrowser; ThreadUtils#getMainHandler; PathUtils#getxxPathExternalFirst. * `20/04/08` [fix] ActivityUtils#finish bug. Publish v1.27.5. * `20/04/08` [fix] CleanUtils clean dir not work. FileUtils#isFileExists. Publish v1.27.4. * `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed; Utils#getApp failed run on remote process. Publish v1.27.3. diff --git a/build.gradle b/build.gradle index 95ee2ab7aa..308b6e2632 100644 --- a/build.gradle +++ b/build.gradle @@ -8,18 +8,6 @@ buildscript { url new File("mavenLocal") } } - maven { - url 'https://maven.aliyun.com/repository/public' - name 'replace jcenter() and mavenCentral()' - } - maven { - url 'https://maven.aliyun.com/repository/jcenter' - name 'replace jcenter()' - } - maven { - url 'https://maven.aliyun.com/repository/google' - name 'replace google()' - } google() jcenter() } @@ -33,21 +21,6 @@ buildscript { allprojects { repositories { - maven { - url 'https://maven.aliyun.com/repository/public' - name 'replace jcenter() and mavenCentral()' - } - maven { - url 'https://maven.aliyun.com/repository/jcenter' - name 'replace jcenter()' - } - maven { - url 'https://maven.aliyun.com/repository/google' - name 'replace google()' - } - maven { - url "https://jitpack.io/" - } google() jcenter() } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt index 0b8565bc7f..f517ca7f6e 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt @@ -1,7 +1,6 @@ package com.blankj.utilcode.pkg -import android.os.Environment -import com.blankj.utilcode.util.Utils +import com.blankj.utilcode.util.PathUtils /** * ``` @@ -12,20 +11,8 @@ import com.blankj.utilcode.util.Utils * ``` */ object Config { - val FILE_SEP = System.getProperty("file.separator") val LINE_SEP = System.getProperty("line.separator") const val TEST_PKG = "com.blankj.testinstall" - val CACHE_PATH: String - val TEST_APK_PATH: String - - init { - val cacheDir = Utils.getApp().externalCacheDir - CACHE_PATH = if (cacheDir != null) { - cacheDir.absolutePath - } else { - Environment.getExternalStorageDirectory().absolutePath - } + FILE_SEP - TEST_APK_PATH = CACHE_PATH + "test_install.apk" - } + val TEST_APK_PATH: String = PathUtils.getCachePathExternalFirst() + FILE_SEP + "test_install.apk" } From 60fdd85b70047bae45210765bd2be9e54f7dfc71 Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 10 Apr 2020 04:47:43 +0800 Subject: [PATCH 048/122] see 04/10 log --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 308b6e2632..24c3b741e7 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,7 @@ buildscript { allprojects { repositories { + maven { url "https://jitpack.io/" } google() jcenter() } From 5e1e82dab9571df926ff68766abf48552d34f29f Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 10 Apr 2020 04:55:37 +0800 Subject: [PATCH 049/122] see 04/10 log --- .../java/com/blankj/utilcode/pkg/Config.kt | 3 ++- lib/common/src/main/assets/test_install | Bin 0 -> 1800374 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 lib/common/src/main/assets/test_install diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt index f517ca7f6e..51bb0b7e66 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/Config.kt @@ -14,5 +14,6 @@ object Config { val FILE_SEP = System.getProperty("file.separator") val LINE_SEP = System.getProperty("line.separator") const val TEST_PKG = "com.blankj.testinstall" - val TEST_APK_PATH: String = PathUtils.getCachePathExternalFirst() + FILE_SEP + "test_install.apk" + val CACHE_PATH = PathUtils.getCachePathExternalFirst() + FILE_SEP + val TEST_APK_PATH: String = CACHE_PATH + "test_install.apk" } diff --git a/lib/common/src/main/assets/test_install b/lib/common/src/main/assets/test_install new file mode 100644 index 0000000000000000000000000000000000000000..50afc3206adf23f037b0ff4590066c62f54a27c8 GIT binary patch literal 1800374 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 z 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%0ALZ{JJjZoc&HU!(9*cX}a>$s24c(MgJut@?Z7aO1 zieE6x*!<&PuU-Ge_x2nFa};iwe%-Fcqk437tM2aZnNUyBwgT_U75ML+9*kbi%k&7H_h=E?Q)J$anh z=PvMCX+oH09?A4hnXY+rGkBWm89t9Kjn_(ZyOxpb<7wvkd|uq!5nqnGz%ACo!4aX` zY@vqGgSODn(E1#6j~TF%`(q7$pjAYur4M(Zki#h;g4(YEdJxy!1t`>@kl^_EMA%nA z1jS#&e9JIsmPSs3BU+&fw0u#aI~;v+L_GRlZN$iwFO*SYtUwm~*eaj}2YWH7UMP=( zurG^;vzhNtevkSW)U`MALtGPkELB{YaXL~)DT+x0_jkc>pp))NSM1-sgt**sI?5I| zDiNn*+*P)?s}gZC#$9QPyD||6yTo+Y^gh$uO)rQ?uaHMh_qlRhgz4krUi9Ef^F6GM zmZvGfnOYM2uTQ!_%1{8N?w0_n?w_uVk&6|=Za9^PPA~S7X~)L zYQJND*af?wi}T^(%nrA_X6Qd3>00w!^Gp|!w1RF^e`=oLlE@LoC1d{6)8uy(se<{5 z`dA8w{&bsf!)LGJe3*QBQ}t4!DtJ!7(aM)PSDy;kneMQ@PX%~)xY6$|#}xbf?G3-6 z=a9XvL%(r*0ywV5D$f7GHKH({+Ew@~;oL_nOYx{bKzn6d>4*N;^qM36HUBkzE=#YP zFD%!u;xZVA!_DMyu$gS2uR^aKhQAy(7xC_P+bXV4XwE*_oIgrj*8}COj8PaCG{6(@ zR~G2n4o-ehHiutjhpSi@4!_b4mvEi;%R{ZbW603#h~4 zUhoxMM_-9IlZ_PLS5(t>$DUQ3Z+RM#Dk7D0*59K$tigJ3u$71yEb&|83nUBEd^@RYx700ze%ZO20*8<-J zC*d2hQa2yxC4I2g!+dhUthgg5BjA}mB&Odh-;ACD;rA%aVa;=@#|k;wLja5{X6claI!Ip1ot&Nuh5c zhwBW_{$}`9cyBspl3FtGi2Hwaqx^HY;?ry@)f; zzb!AO?~#`>k0U?|r%N}4=1Frye<`Niz~ieqf2={Ox6Q$;T~(wd^y}5GGU*oRza6p! zdmjIiNn^OK4V76Ab8Z?Elm{te^c6^HNVnNSp&tY4-nq%8#;6SZ3}T;WJ_|^$hbgc_w@2cotvpJ};2aJz%^^2cGj&>d|qHy$u%x?0O}Y z_PFqc0dAj-pCQk-$3^=FXe8UJ+W<%1q$X*yG)IEEU1Zix;J?CNxA4V*WPcZpj`I5j zxb85IyV()f-w}7aBd*38Q=A8L%)06HGX*UhluDl|O>|K}GG)d^zdY{fw*i4<-KiC8 z((^^vt`U4uzak~+d~X(UdW8~9;@Lj4Ci&fp%M|Q3;jw5y!9Eta-dw}?cb)#Epw3UJ z^pn!0pH>vK(boT@P1Dhl=GU}o!YqyG3(s27XFn-uWuuIIp)~4ipiexeoIP)Ywl=+8 z`Ic*i{EM#G`R1i5c)tR?@222Ad2RBW1(%`kxYm@R&l@gXPOE_86ifGzfb8v}Dd z7G7d{O23RYz@MhY^t!qr8LeKC~+DWxL)kawE&ab7p`{Eu}u*7EZ|_aQxuRw>1# zSb55_4t+TfW8q2#>d)ZiXBT9m zf94n2{h+T~bzy5JtE~PC)K;xxwXIInUpb9IDp>u8QuP1iW@iqGNpt0x_3sSz?{1r? zx2{b;?218Pvhd0l zUQEBms*7UPMcjLKtmX0`F{;8zNgp|rRJvfdbk9WlC5oHfz#a~`0GmD%s0WMV)FTlW zI;M}j5AuE2>={-n-G@5Rio|?f-%BdhPnuDp`E-SQA%C|yrdKJQO-p5%pKzb!KPLK4 zT_@_BsYsR#8@GLwxz22(QDo8ve)?@C;Ngx6(ms*CgOxta(u=-2OThKcW?ymmc^15j z18!LGu8uLgd|mRGeFtOqtuK3S%u zJ~|P?+*%=l&}|Unrz;HI453>g^acyvf;y?uakLU&is?RP4+bSb5O;l_@zjWphg#=C zdbLPJnMq>w98VkMOJMC^LK>sJWE!cD-T=L#eLpCAJslLikwTvWB=l=Sr)|SJE_Z6^ z<7rKB5}fS1$#@nRq~Ayru&yTTdPg5`GsiWL9DMP@?x&(gkgcZ^wpX89$N2^|71z_6 z$c+@`NpPP#0@0KFgDP&K+`a|Q#Y5}3zL(K&JVkjcwByve$VH6)6Jc!bkR@hoFB7Pf zQFAjj1^{%x#j-mX`r7D!3$3ZSiPj9bi5dpLje+t>kpKN50!-l4Mu^mvusS^d^Tc=${t+RtH>OFW}cZ;9d)UBh3+Zw{g!{Z~A;c zT+{1TnyZW_og!{Bu-62Nelv32(v0 z)BGZC?f%nd*qc5QWtXlOZJ%h`{BX0F*6W3x#z}D3s)oB(JF8#1the{eJ&yjw_%lwB z7ytEKFZ5(5Q2SZvob??{4Z|`x3t=qR5-Bf|m=5eXo9^R)^`_2hkhc}-b_DLQEUeFv zD`4*A7RkhJCv)U_Vb>7T%#?MOMsoP3y>>mf;XJr}0@DkJH3;+!>wxmh6R8or0rEZ| zQwu**g`y&qjuhqG>L_P++H!7R&vhPZ^qc6ZP(?o9(dX|3HcnhZA}6WLLFG45UT)}1 zjL{?x5B(&{e%Mj=97owA&02N$(4ahYLh6gH9o>BU`(y&YwI~3kI_qTE<-=-MUw5DdekhpM$Za~xNOsp z)u#}*2G>p2z(X*Gre%%q6{BivQwBVb;WA>-U_*hK%d3lBpdZovt z_510dLqM|*-9lLj`ui}N#-SUarf0$LZ2$$z<~NA(D*Se;h5h>$nJOYCMn7ORGF}}I z-$)UB%A`)uS77QGJ<7tyYZ%vAMo+nu&VIf+7QTUDxB)QS1|?Rr5@D7d7PD;dQCw*? zuiZ*(UWdMV<9g9Q9^)01q+yO1Crn zO1HyUe1ukkNGbVML2LTlx|^SL4x$y_pWzf$Q4}RCW%y%A*^2e(F97cX@X$}(&Jr63 zR(2b!4s$o8=es?!fz$L-39UZVDZwQE!*Vk|KyE(`WrvgPfUL9UrR$Y?fzu74`*o*Hujh{qVlTXt`fW5$ z+Q`p4n&lPb9yoX21%G!_J1uOHk`B|{laj6=CEeX7zIzh$ z7W^J+w|m-kqupMi;KTi{G}7~mkS}&GMZ2fX5FToVQE!H0?Y+_2U-#Mc2(4BAL9RqXPmV>b$Yf*G)88jEx#aR;1WkE8J-d%mfT zd`&E$uo->dM$XSS!ZT^bYn<@g^?o z8mAMA-0b$P!S|FR59|q^S*7wz5Sm=%gEN9O+4IC0cZ1@bzm;Zw(*`)~A-A-R>5rQp zOfpF^vv+e2iz|h1zhxhj*RAI!@s>BCi2De}o8NGSr12BNY{jHaKO${<=Er0c_fLi= zFa@R0>E(*dG>p)8psI>+qdp#HYUukI9hMY7%#0t0@gKzKP&58WGmjr?#$S)|hXj52 z*Cs(9B%lwYi@1+C9ycbXPB#=K%3NTD8}%UyuhUIQ@i&?AgB4z<8;cTk!uT7__{%W< zkl2T&Y!bRk(^S+|y35z7_pZ}PJ$;M{eL9>c_d>eeIKPH1pp}xweq*!`)3mOX;7mB| zF)Lgp@%!pB75&i{ONXIH9W;fICx)5QzA{q)krJf_H&#}q9W zHH9J!s#wsP>#igM?mUZxcGzoGDz#RP23~7!6a8%{@v{!-XCaL5OUmaR&^tqzS=TtE z23%ivK<}9SNS3Q<;914N&Y=hX8@?v}%wi~a(*L1cC7}KXzDKH2tb^+dTbbR9gVpWH z;ASFmz7Wcf*CSoGog;Q`5@)Q$$Stthjd@`c*W2TIzlqZ)o}19u>zhS7ted&TgjxAo zh+Go(8~QUrb6?+-N{5f6fql3sl@9-Blkn~KIJMJ=@6*()rCG0RsMiOqUQ5k-EjH`5 znAJ<*{yj~3@)M~(D11+F9)7*FjMmG`VOLr~6MK!R`}BnHqqZFO(-m;y{DkdN0!Oih zVt$=Gw3a%?GT-yNGcEI%%;CeCzSCfTnJK%Z>a6M_^67~pgF#Dih+6%b$Ir@n4 z(w`8#x_!_`d#U07l6Ha_V(5Eem7QA5yx~!Ud;p<$i=1=eZfgwo1McUco-d?~!CY$$ zo(KFdq>SUE7LEge<3+%6Fa^hQ3&)Fq<6z1-uCw~lMKDD&Tq@aJ`m->tzeqtAOiu!1bDiOSJ6`t8H%puD1Z!o7DNPB#{px z&0+L2BK-|}LB|v-?hgpsYz%mdS)k%H`#h3>ziGh}G&=w^+vxuWjOP&;xemn=3kBp! z7sT{7Kv#X{&LYy3$tSCb$uJ;%_7V8|j5daAiz8~i_Bl&8-26|qL1|q=#vxr|I?A6&k4g!fA6c8l8habY z`5kJ%gX8=?3F6~S-)T63vPgHh=|X*NR#>!z6_#G_uzGSYd9T>K5ki zYgsLIQIl7oCZXfvp41a?oy*oC#(zm8;a=>!hI|D*eR@()W6$wkygJc~5$wS)Y`y+T zQrwp(9FYn~kGJYanS7Z>Lw^g|g^M@yyJZ>C)yAk^Oe2kYs918yCJeFC1l7iH8PJeK z8gcg+wK+X+<=V~S9NZ3e`rgI5&EL-W%|ZqsT5Pw4%HFaz^Rq;`{)5lXOPOxv=~W!G z`Fmsfu$#sCsEyi4dlVxN>KmG<%bd+zXOiE>VswX!+|@z!2iia$^*8D7sodkwXtkbx zPqQuCACGP3JZpY_NqG3U=u{yw7Nboi%)$cQd2zyL4yL)-N;9bS5466ViGw%q{kKsPWvK0DOtl#H1bN_@X zcqG4s*4~=vjyim0MVoIyn6caI5MvYlH(HZYDwS`Wo9N?6aiIR^;wemN(l^4~L0@6k zJJDvR-A?@X!)9?0{oZju{dKc=)A@ng-$wr0EZ$DOr`Ti3Z%WD*z8_(}cVS5FZbm9Uz=H&;?FN_6S1 zlWZsozKFhs-=nY&G5r9{BG#ht_!8uhB-X^KThjA7I&Deyr*@VD#^+tl7N>8qw@IVE zR>f2Q&$K@G7k0)L_O^#@;d47qmNUCegOt&57ako}jmN>?3+#+D)v`tip!eekW7 z?;GBGs#RN8uH+@6Cq*A*Z#Da%G0_KN?X=v=-xN~)%>8PU3a-U{`t{9PGt@WJC0 zsQ|v2bfLvOtZy~%tS^$dzOlH1aZoZL?pIsfX{ujhKE&SFB(#Gf)?v4;V(tIxSo_^A z_;JU3a`jfR_5nNHX4wi7HUrMvDtyp6>st5^b@lSPhM%sJ)NJnQ>?2Y(3xys&75O&BVW5d?`OP%^2d$6%MYC-;>wHMp z0n%N;(#^Bdm5~=b|?^IcZ@ zKd60goU=8RKkz3_(49xOrqZ2tTT}1Vd$y+XU0-sfjFj_@i*ZbkAZ8V%A z`MSV;`h7@qM$+9sxwmnz45*E@xy50lUYGsZPHsIZggCz$7dn>ceT*xBxaJ}=?vpZ7 z4&nA9?a{>iJHA!$vSoi0{k+J|A8mHTec_06Zxizt=sbF5`~K%7b@TqI5-W= zb4P*kn_6t2cPkxn(;RWz9dXl(?eeA1Z%h9M@bWhC2KfY>X|^fJZZ3yY?<>YNAZSvtJx-rdY`10AaeI0h*-A4{DcORjbVc|@M0#@e zc0uE|kWytMX*8ZzXvA;5%hhcc_l*jm%eNN`AFCL5nHAR=;%2fqQRYZTna?N=`##%6 z-(cLcDSdadBmTLR`00-LT`BRi9PztT;^#Z!_t<2qdH*jn`vmJ=DsLvS@Lq+>dGj&Y zVQ-th-;!TszTmctaox(s)$LD=-DlR=xnb=7&BjjH!uxf*>F-d@AV!7TugOjNE5!Z2`K!# ztLjraMW`cvKzYQ9i$tEryxUut^_&Cs9KiL1eyhq15@}XdRvRMCuF7mrq&ZbtrxNM@ z$Sjp~n$wYJZl)PEAu=1n_n$^IPo9L~uH!nAuAWm#jyK@rwOE8=`rm=jL zJ(X(PirxL5N}QAJclF;(1(mKZkNE3bSNId>snVy!d8)#1Kg+hU;1R$5o%oce_`R%N ztMrTWxMdlicJteL(4C(WJk~0Iy?lnhUOC+_>giGn3>n_Hrc-@&tAB}mGQl*z_bnfOi9yr5~7NAG4m#F2w zO8LEJy#1q3am43l_+DeTe>Xc_U+psHp6)mDZp$lG@ua<}_#Bqz%Vt*2IZ)2LGpzVn zw4!8sb?8X8&A#w;PYGV*dC=bTt+skuTP1P}#2eVw>(28Voi2tyZ0n7!734b5d+HPi zXQC$&oQYBbZBjb<4YdoT--$dC)fjue-*992* z>Nv#pLb;c4e}5$@VYY1T+~bX>Cis>8{K=ePVexigctG0RoBpTV8XXL!C)PB5TKJUd z@8`aC5W8I_p5JRqpSJsjF@1JE&Cj|gs?ljR|7(o~_-n#7{#f|O;%b|%+d)rrx-v+r z@pIk-mpi`tX)Xs`FBveW2Ev@G_1CL){z0xwlGc$-u7|X*v2`>M&VV_L`)FKezy6TWfo#dE#k7I|sq|U+TBN>EXrvy>88|dcZvx=GG9HTbKLmU6=V2XBUZ`u|Im6 z`++wa1}DmCsJE3f+A60?DuERNeWdU{Qs5^4M;q*yYM@xgh#`LQjeUev9{UKbDq9$b z5Aho#F83QFFZ0I+21_D6xh-P;-ucJV;=OYy)O#4zy8-Gw+;4xUL|W_F(Sclsb*>qf zsB_KG|GCbOTx`|ZXgG151;zmle#00JE2J~j7c~ohY);1bP+E)u^?i~ad+4xebNLR@ z<`K~5kWDUhxlYHZcyk0@{2fv^j!f^iyIl zJa>oK3$KFuj)MA*_9wqb57=S)cZ`g(&E2b#<}RaGCKTyakfpEJfIdY=!!OV)dmdQh zvXqb|xO#_JKUYINuJI?o(~sRDd{SP+>L9VVy{r9(AMp8k9k{OpzGf!x5NqaNfG-B^ zYJ_pP7S>EWWzEdkA=XUHwr2kIKaa)p{S#}Z@gLTViE(%%teIhoBoiCKrX4D+891w98@qZC4!faWAfDwF8eF^IB0RaO69M$BKH8b(fGSK*oEf~ z{V4cR%_-#=YGag?1glfaY4J>Q+8V(6r-hZ<8{&Og@{H+g9_r*3b@H(~S^ZG!7!kEZ z^aJ`o7yZyFrObiQ4|0jUAH+Mrna^;$!1d+h{3!c}epu>MBM2egU4oui#`=X_9%fS= z(w9kuN%du*2Hs4R;qyxPrg82+$necdlGd}!@FgVsYG$8Eh7bDSwz2+z{3Vl@(^p4pP?l%@|_0HtY9PHo0VPOl}Wi1)eSC|`)URWvS8bvTY9D_>8$0O__=q z4Iqt7D@zg6i%Zadz1QT?Of%OE&PNxMGVPcoWg3t^?I64w#KKJ~m9LFHq8j74oni4_ z@$fU^z2aQQd&PKvf>*TQ8NokjA>qCLQdc8wXpQ&!+hAp0sy6C{xMJvJKl*dwZ-1*H zPY*`>yRmy&4eP<>zADMXyshEeoW$PUC3egGcO6fPcj#I1PB8`c#$Cn9@BXJfEBGu^8J{J?p^##&oSbITTle$PhH}_$FpuKftiO*Guwz2X;U%n+t5`XvO z^m630ri~?wBXq#_4lsqi1MDt#z5~RcI?3L4eNVA&$+?(5 zZ6Q92axyeqI??-B4wQ60%)Aea(Lc`=KP!jsWqg0K!vx=o{xtSs#ddNyNQh zM*2edOA&t4Wm=Yc_*s62LXWdQ7XvL1p9-`k+mcDx_$-$N(sUk=TA)7_E9U)~%OdO( zX`+}$HPfhs?=dRd2j6>^+p8!eXQ`&mmN6dK^*2MS>aUvQugd7e${t5FseafbxS1U* zCQK^u6j)PNIy}mMb-pD{H<@#H_@2{5?D}g>4o~yXGTV8v=xHV6W`thGdo`cI%FYht zR93GZu-|Vhj*hMG1Eq&MmKa!*p7xp)rPSny^G~EPCrZp_^PAI+a;vN;l=W0`bZY%M zfIk`r`v2d{y5WNVr7W*GCVh5t8dc?iU3NIqsfX$YFhA)qKDjxHriA|1WF9jQV}K?t z_f?X%jBcR>4AL!$apnAsZb^(I1$3(u(5-IAnl%l%W)cZ~jnn~ZtyC!3&0*=5Gw^uAmb7 zMbL<+c5+!DL%$u)V3)y~I-{f~X$nV6I4u!p@ig6z?o|z=#K3#O819 z*iL?LszSO({5HuC92b{^TY5~$al!6$1pNi-`_u}wib7DfE!ULm3d26S7xvuHCqhQC z?70r40_8<|!iYnyjfy+`rRs8DOz&P&&E{8`3r}Zy&m*K#Dj=R{DLI1gJAj|E)D1E( zL$*?589@0z!&uFPh2Br_?*}}W-Uij+=fqph5IE0vE1|OAddIrrIq{D52aIAH7q!V5 zj(bkLkzrgrSF(=f6nkD8a@p;p%zRF~@%#b#@y62LWw-mj_yl!bY1MTY)b$*zu8f!S zoO8VIwvG2Q&x!HAJ7v80Joo?Kc)QIN^YwFlUyGB0D1#>%5vWJFrY`6*D&R}+=NNUA zUOuM~Jt9iX+lJ}WQ2I14*R-pK?egs6cFBvS-{B@01j@g-7H@r{q`qic2 z`;GBx8NToH?Bf;KmFnk+`5NEF&k7CXUh7Q;!|is7u^0hkaiKXD99P9I+uWe7T?zeM zzJ|N+vdxWfTbKQPuivipHvejOabBF*W4kaN@6oXSN0o#Ddz?--B|@)Za*o{o2+uoo zmylt-v?N*X^~zmB?)8{M?zPd%Gq@yqZjVo@BfdW%y}NZ6KXYTfjG43j#;gbY#_apy zW^kY1xPKg%!1E$z&BX%IS%+!7W{q(e6Iz6z;BlYKD0~730$Q%(m^FC3;d`*F@A4A{5kA> zmcJCn=q^=Z`bSIs4a5_|6%=N>;3d9#eMK7B@-(o=VfF09l?UMwsKaCn?}zXbSnu1+ zauy}UE%WoUK?aw%*p-k~#?~!`J#B@*URmz1S0DG+yB7QF-AnxSo<;t8FXj|>n|!-F zuzQ#$Rl2=os0y>w1+&vo2<&5I6!gVqCCGia9Z%A5GaOM8h0vX5=t>s4!wg-)LQ~Ap zP!^hIh8kFCx)~bILQ^p$SIMo3C%013NI?CyZA>4i_F`{M<rAoh2G_@gfp=5 zL35nmXVz&X)G73)xMTF+ohrXvw_Dsh9(TO^4zb{i9Pr^5e6a&Q%7QQPbDImC=Xou_ zk?)_Ywj@T)LVuNPm(O-Fm|u>Q8yST#YL@!r`UL0^qhgb2X7JQilzS4p(cfi+M z@D+ahooLH${{EKmkYfZ___=p`)G+>+Vs1J_XKi zOCiUrur>`??eXw)7l%~?*0}h3-1>qw9X_lo@U_JH!nM4gg*PK80z2L>abDvlOt|| zBTn99kDKU-qmH=S9C582ag!Wzr#j-MIO5K9#7$M~=d26%q?g|rut(URyo{Y}Xp(%? zrF%rbEr))amLfkj(h)yBCBD%Se|t*&O^*0GQsSpM;_pm}pXrFdJ0<=RNBliX^7&+` z)n^bNzSkjtv}I3vy_=`^h`BNr&LsaXvFqLJ*(1&pGgHnVFYXcNj~^Z9kJqg{vrB?W z^*_4D=>tV}Fu=#}RF$J_kf9_|ypQGcLh9NZ#T z!p=Eb_-1F`Dl6B zg6{7+eP|*Fghps5#iJeNbBAWR{q6+Ktl2BhJ7ZNNxDtAGK?%yaxy}B(WH0w$+(1@C z?_AkB$~a45Gdvo?O!J9Z`$R5{7L3qf$_vl2Qu}KT*HpVB@xqh*vJ+m(_L!*4uZVm0 zsJ;BnQq-d#t4Bwx9{rN)QAz$=E&8)s+;ieuM4=YZF>1eYewA4LaU;~@qW?>ORQ#{~ zan}iJlJLuhcWj)|2TQoT&-(=XsVDI(i9SQyP`s}9{9nh;|G(Dt?*B4&*Rrt_^?3CE zw|d<9Kh?uy-Z$4mJ^qcp(Yk7FG*!z@aOp=uO|UirX-iwQ0IM+lqj+m7bLgV9(De+e zCP5!dn|4WB==QYG#l zuS8Uwhw!W59D`pM_B{N$wVnZad)vOSt!n)P@)G_vEFdpuU!%xjfB8_vvf9M5(8RKU zVHrgZnel7P_{C=Y<7WIT{xWhc+yG~=+wdyC-R9tXdsFss*q2d*=rzCHrqSnn`5T(h zq1}c&KQooM_Z)*X|5jrZWUR_LR`sqo z{Grbib+M8*od4;L2JOTeV4u10Syz0Ou$RWo1%Gu7P#6ynk|fXsmC zFeq*yL(?Sy_qZhyHO3`w(Il**f-ow`z6glytJv?H zd+SzLb+;zpd*Aoq>#3@H?!KIR?^$WfDzL^Cw8n44P4W!6f|Lf-vat4Aejk)$%yJsj zOJkOk(z2+`C>1h63dKjX&7(C%!}5_zArowUF60s#B056Or)fL;+)R)OgP#a3B^vKzEMB7~ zseYjfRsxK-W84Q2Ije=xtEQhQcHhCh4SHaRGCbRlD_?^rL%#i} z&gJ>;TrtmyQ&O^#celC935OdxXpa(A>McJX94m{ka-K&1 zh&WYT5kj6wS~&#$V;(6ZsAY}z#i1VJD!p=-9=3Ij<`?>Y!1At}Z~3bhIw3bziw){o zqRL}E66~&LB8M3FIadi~l=DJu24ddQH+uO-UAw!o(jK?R=jZF!Fh0vO^O;O!6jml$ z&_Ej%Y2_W6+LwsWr+gRQ$A6yBX$Bt^&>3Ev&*=<%U37+b>@@%ClW*VS!}Su@K{PT6c4MM)}H$vy8=ApHWs& zxl{9NY!s6-m8p*jLiuO>7a_!!o$axJ(M{kMC97%!+@&kY^`~NQM+o3EI%6a&Zp{KF zE2WYXpv}Vw#+}!EJiL#9u?~}|z2W{)k}-NyTQDIyj_L($ zdPdUuJhit|X7#laTTa#JPo)XM^8W~hva7vY>Y<*Mq^U_2PY}K0Fwsknhu;WMp?QX- z#|;+C{1!@U!oQCZh&2(Lb%u{)zr{|4doHYZowHLDEA&YQq|aJ?{|#fQYU zNfU>fh$lc74M!e1QBw#JTpSFHlTpI-%iP7!81s2s6wDdz(O}P|jRmskveC3`LGkm( z7Yq1a2m8MA`vRXe8(r{63*ft4@W%?^M_uqg6u<)uo$$vC;FT`;69w?dLT=yo$pYHC zX~Ui>u*)6iFyrZh{eQTf?wNu-N7=Av9cMF(hq18G2M>miU&v+hH#u}8*u0*!(DJ9P z_^L(AZf;W96iSjkp>({V+K{lld|ooWwTl+!?z$dJ_A>1V<9T2AlX*9~^5%8D*{b78I{#4lRy#gHc$dZ zv?Ne)|HZq+SGwYm*;-_m^+PD1zp`v0_qFo_^d;u4R~wG@uC&u;L-{r>H!QU7Vn&vw zRkUhi`^#kMzp>L3HGjVBvdbnaO&_nSMw<&h%a8A2fX{O9S#FZMj2_h}=?Mso+zek~ z`lZ6xE%4Qwe)-|+R`{x>UjlsH244pK^1|2c@D-(BC8|m~jG&r|$!e-rQd4~^)Kou3 z&EY$={UliwUWVru+3y);5XvtJ90zjjmNH5qhtY6zD^bMJENN6g>?_AJt9>B|{Zk@86eW@VoKPHkLA8sRJQU7Zu}B`T z6wTvRS02YLV)xEgLsT2k`T>~?Z%IRf+6fT*N=b3q%^tFdokLm;kJ<<)HuSmTvEm0H z{&We;#IJJrngL%4=yA1f5S$0n$_dq?!yeGcMVu~Gt~&YXqZcvTUTLKt#K)4*cM{f& zmxOu$!Y&ERy;kD7BP@^ci>&=GnuxRV1Eixqs3zl>_7%yXxik6SfMxS1wTSKQ$)<8B zQ76e}czQxajSE79N1>;)bjz!fIs;>*jn|~>(FcqIyYwzR&+z)E7cm(awGP`}k0nQ- zWP_EgSS`x+hkce>#Pqz>Q1NuEKiIthG3QM@zSi0#!f2F|$)jNGnxIcc!o{sV-87Tl zm3jO-7coDg$tD?M_|;@{nVODI5EKzZR3X{yQ!6E+WSX`Tr5Qvhc6T#_6afSLU# z34LOftJwDBNH5gsWgG$eRRUjgCB>ohIoldTRYXiEkz_oeqK)=s9LlcqL;OiN?;$j; zY{I^;52&g7a@D!-Ke@=gC!x<@#2?QsvV1K01_qH{+u-X>GGsSIEfJ%DH&w6dmuqME zZ*LI@?nBoKG_=YY+6bZLMDzWc;2B*&`w&^fasKa>2 z*;K72MjC3OxkimjcLJs#Sv`tmnp&&b{Ees>&)lACYt!Pw_McfKZ2V#_pVvoq$^uMU z%;@qRu^O1UXIG2d^PkaH9S02CM{N*%^qDqJuZ~#y1?;4gUTp1+a#ZbV`m4(q=&u&@ zGe{Kn2J{M?;$L^k zvb<*Jmph~2_nV6?JB>Dr~z40!U-WYUI6+!EM6R0hV1c}PSNV0D~l5FimlKtR$NpI2>uNIQt zkj&Ezy(j?XK>IyiVQfK?sIs{$=j$l?F~e&Oa!=CWsiG}QE0>`+K?&tH>M4CEXq^+U zfpa2ia5L_dX+!~ST+2cqJ%0HJ_XRwh_#`P3;Mn!0~hqXFETOFWQ4(^~| zBk>D*?^z+@L#rQeq9s;Og9k?4^DvZjE5<5-21(R&X)x@4*oV3g7nA-T%Z95*t*XEH zcnXbr*$8_{*f%YJBRqqYda<3bmVEp>?E96#->p1+c=BR#<7gkmYnK7zFr8|3B+yn8 zNe<}`<8UlVo&?WJ2GDV6@#5@2pJWq-=Sfb-;+G%u^Xg@=$K5VFZAIM%uzRTutxPLJVDmEX!i^wk)A*21(woX163P#WTYJ;xXmbSdr=>%MefHGH>`tGKYc&z6 z)Ux85R$h|b{#V|Hc!qt}$Fp5pb$fnz1h9Ek4a#$#Vz6`e6)J}R9>QyC4El{ekJuja zuaEgz@(R^yi*m`w+!kd+jpFci_SMJCRzZ|J3|Qq3l+Y5o;-MNtNEts$K3BR z_DpUc-S%=JhFPe!^_%WDYCo@eC-TQ@x{9PEc0#X9oHl~<~n?e3pJuV<8> z3C0@^91*&+U#g z*TN+6dOQ5Ls?+EBH%kibnPI%05I!nr&&<|3 zJu_k3Gpl{bTJb$CP0#1#uJ~_j;&RHEqvmUf{t;leTd;gvs?P#!Du-=|lIP`QBjm$VfqvK^*TL~vx)v2+&Lj-vHIQl6ZQMePt@=7|4=`_<+s9s`VFHp zD8|({NDUs1)c9_YdV3xNJpG%V?ew(qnA{-JyF(4^m~u!y-vgz2p|p#SWHZVr!$;4g z``~>HVooXQd0EaVzl=z@XU6x}Tv^`G$b?HoAY4zDpBG^5`*Veyk|3@Hb@-vt|C!C0Pu_#|I%S})D% zX<|92)Wq}XvCn_PdEx+9POTvhooDJ}mBTT;(o~b9eKGi7UFk>G8zPcMKkb-_m$z`t<8&nSSecEQiA$@d|=(FH%N0KUxyKf5MhpMKXT zd=Gy}b(VX;mF}E^aXI=4=Og3D7<5-s=qTY1l~JysDYz9iK{0<2EFVoQz3)?J{$uQV za~-|1PmiD%7aKU=IU<+NaV_dL}E?C$w96W-9PMFfm zaMHE?pE+Rh-Ujw5-yeH_R-AVg{fzU5-UK|kuz*){q6@yrVLO+>PyUS2;xkHrgL%L> z-aw6eW;cYz8RN=haRL9S!v+7i0Dg%JzQl%eU*}hSX4#5uR^w_Yt^8bqTbi^=l7vAT zthFxWirQiFpcsUmZ|+YkX&N?A!uFawRAO$2^|)1oxnph?40EGunCsORq{}h=**@SqJp6gBcRmKc`>eRV=KDV5bda~8rk_Yo*yAqPr!Lr^T(Hk1?jr-| z!dp&Qe5p&`XpsxH%q4I1wJXmrU4BrvahQPVzLFwRF3%&bJXgBxCzmeevQcj_9;C6# zMe8w^I?Mdp)yCspu+^^m3|s1~&l*}Ep6)DHy0xx6+m;sk6`{6@?KE#ge(S9^u(R@& zOF13u6*z75F%*YB(2S*genL89gA~cb+cz!cayM_28u4Ay6<;Sg^{el3rdKvP_^g(G z6Nifk-z157`~4r6S~5RMlH{-7KfChYT(G|1biub2!2juje^UVe#0B5#syp`0S4$Z# zXLa9(zCImxAs&TW-bHBh;;_x@cICIdpgjLFC;Zz2T%oz(I||ZQyWrmyzz4YCI}7C2 z1~21t8OBn01LnytmyF<<%N%p4X*Z><@^vto!{|J@m?)09ceyiNe2;7W{35?hW3Oxd z+_|hcUb%N!{yb-6GG`gHN9Xh@(bJ-KybH6t%Rp*}KWh28blov9&N~n%P2(Jm@HplU zH`V0t5N8UFvpyGRrOKY&4n6i|MSK)5EA+GRR*`uBT2@Gd_{0^Dm9czTj<3(-tuB&w zW05kp6$#s4Bux0cFu&5z3*)Ip!uk{mGe0k+n+z%vHoQo=ql)BrR*|%cB4Mc_VHXuC z<7Y*}rWGmonj-P8|Gd!e=&heS`8g?Ju9^~GQB%^ZYK}(w;OCr1y40qTmRYopCjs^u zlVg&qAW}mKN{#)trGy0i4Ss4L@VTXG^7id&qkk}wFG?$SQP^?*`?0roacG18S9Z*_ za(2`Yan!~^bEXkNtn$m^`)Ahq{oV%u&){}i>de_f+(`0rJ}cg}NNYo1@<{imcY7vNPnI7?CZQgh zH#r^ps_Ao1*}nO5GEhdok9jzG!)1W;{wXK*xoWcV6*XD)s+w-P#%Q|O+@8D%VA5j& z%0aOBCTQ7URzKvnG)rmY7l46K=X6E3E8Z_Ml$f8Tl^fuEYJQx&8Pdv(TJA@FL;Oag z$z%SbF#IMAf1QQTBf0RKG5iJWA;|C9!gT+O@P`Y-e~saH73Oz6hTq7-e-81Nw8=1Q z(($_>d;pn2X9l4og(FO;&q|yZ_;x9s3xtjojx@fVN5>Z5CT0tBy`AQIjs^K8Qgw_b zh})bktnsxp?hp%dImDeo;~r;+ByPDBcCDE-Uc?da78EX8q= zq;~-EJ3=PVkn9gE#T_)o!5>(TjHe*uP0jc%g>3tQ2)%9ozz&onvG@WfTl|2eHBV7C zvy5z2$GxDT8+dc|_f&KpTjsEtJAQU`y6^D(Yl&iNQt9(jBWd#_(! zT#tRua(-@I2s`rRh*OXKiRD~YygiaHU;f;3E?>UiC0{<*PSX*|moI-~IX~wvkh_$& z2+Ei5QFHhDcbDgEvWSHHjEr-ik;Xp2mG8?Ew0DxRUoE%o!_K$+xT|$aL>$HJjxkxS zWdMs>c}flsN_Y7=#h{90vvrVHqfME(uEeJO4%w$pI%&U}8hk*_*&_aCx#d^VWdR1x zta3=sC~G2K%31gsl|#=cYvH>@jLOiz6Q)EiGID+;11p&SxF7Q?nX_vt7q?3Vxt|{? z^e0JuXsqBel;=l;Jo?q(6@|81hOOWL zl1(^X87kF0p?SZWiLZ_r5=uK9P%(!29nY&}MZP_fu%Lx)TO%VOAKL~=+Lm*}Jdxjy zd4`3}T+X+MJ(9K++=d+F6rb5AE@Nxb@g=e(IM+z$isEbJvK4%dEXI?qYmH=9@cBNq zV2xa}g0GPSt~GLlo#u*yHFEn3zD5?o8o7+Fk%MZkE_bcS@md5}BUg}|U)7Byr5sWn zGNCKnHqs6`_%Kh|<9$eV&W)E=6w0{1vVzl%4neQ&l$~^=cUBbYv0(ZSS1{XHT*GZ} zq>Ng$`vC1mkf`tp^yIZLGebgJ`3U*Z#N5x@xZLia=>>hd%I?#Hu0Gvlr}+n1bK7yBz~2FZ-l*ro%N*Ek`z>_QrR%yaThQaGrtEFtZ{U z`(?Q+exN2UrVK@6G#nhy$=xG=u`0*9U1!C{TQ3Mw_^A*H@XUjT559uAA|`IyvDgHI)mew2=dv!uYzl8PnC zgHk&~;-&uFTptX%{{z~y)EMtgjSOi?_)Rk&F>ZkHw{V{|M$&fc@XgviUQUfvwDSd3 zYZP>tA(i6eqtePKCR3yQTcDag@zE_2DJa|)x)kEUEn1i-cTF4^89xKdFu&q515b1_ zT0hF*pteroy!}+B^)r?kb)+kPeZ&yVeYv&t=WZ^ye{&>XFYwLoeA@fr9y!{3g_brh zX^%VT#~*cbo(1%PGRw&4r7W=LtfIN-My_=C82LP&w-Pug8kkFd(s7a)&+aY1$)^Ad)fti%LRMJ zaLQ1A_(i^cD!V7ogYasIpotgRGA>V1%YZt?bw60&7t+0#T4{MMZ)6K1#zBr$Eiab9Qkpc%PXw{{azHr zdfuJWNVMURALj*kobh4tg@QOQ=9LCLCt}zI5UWH?H@zTL)}#FzcP!W&#JL5rUU8Rq zL0EjHpuE4i<7C3(-wNWq;f^DO#WxDdddm?fnAL<5f|gC(ISn93e?Z$MxtM`0`_7*S z1IYJ3a6U$#FZo$_E@86tp`5=yfT3RKKmoCmy0d~%Uf59$c4YIg+GHM7;RK`_=3X^! z?p9mOoobi4Lp|Tzt}5nMJdBkx88Y}CWAVa57OzaRbRGTHvy$5XU_U>X3;UAs@v3CR zWmTd;-tVjvM7aUZMsN%=szlKpqEv~pJ4CL6bDS$gtP&M>h)^XOj*#W#dMK;O9jB=Z zma8koUt!~)DPJ<28WzgTv~i}utgif#)JSvjd@98qxN5o;w?>=`>o0BmSyHLw$>R|T zX+M(l9&+cGj0RdG%tc+ih)AU;Uy%fovmgI^XB^|HNIi}7niYrT^Wsm|?-!DjcmBbb z?z8bwEyrK`@=K1ZhQi+Ue1zQ#*uU*xGF+u9my=;y4u|dfvbep1!}h#e2IrC&A~^5- zR(*x97(U1L%z*Yl-wW?|;w;FG5fRWP4bxLozhd@r!Xj&5t<}B@#bH{5=)rr1)Iz@+ z>DSfL`A8{-mDVF1mgX7E8;~kq4l&GcnJxq6wF$fR9uAq!!C!H{%UtO1mkHM`si2x- zgq-;m(_=w;bB63fy$_-e9&}b8QYQz!BjjVSCGcJb?<)DdNXk_Cc)3&_A(xO!`TA4w zy+QVnTWaThbbIsL$Ksd=NH9?2hjE(xsx;@V+_=y9$~o?Tag95djlAV6b`HrO_X`E+ z7r{$VJ1I{6gIp&y5%YUK2Ojy#JqLzsxpH6ois@ycJq4l+5=)2?e~DTINh-r(2m5Oz z?xI7@|El;N_8EkqLjB#+{foR!@s>Js3s}Rn@kgpl^_=9ir5;`BoO6GHvHFXp&&0;# zq?OKj@V09n@bNr-B_GdyR34^DV>Cw`hyPj0*L0IMt?9jpF)Fv-uXe)X??;@z*ni`M zDIY|fca>45FioBCl}#d+HAz?b^->>59?mZ~??~s@DyYk73!+*m4Uo%>5qbERW2- z>xw&NQZ6o^OJsGSej>%|tDSWT%1(KU%GE#Odwn&Z^Q&P!9H#4mr-}YZnq%!W>mZF7 z#WX%k2D@%G8w+128__*z2}ugeN9$EjthGl;I{sYSC{L-NN@%et9dB)qNT_{uT`(lU zEl%na4$I$rQL1_rQ6+PK8KJ+uR9=+YE!w5m-d)*mqaL>F*}l3sjeN3Q&y7&eP}E5y zzi>6D&6Y&->A6!^b9(L}7dd>1X~lMdx9E%!d!@qVV`{S3$Z=~|Aq{`hJ) z4V}t?u4Zzk3C!8DAu`&2JJWtU!+ty6ddtnLSAV4M-?aOFC-nWvuD<`k?#If4zMp6J z{SjB+e`=@c;Yh>k(7l?S_X=seV>RTYO)}2WoO-D1S2N$$KNUX_e?;prCTJ7l4{4K( z@$mgHd?(=hQTR^6^L}`af#<#OJR9J%0e-HQj6bNQjB)UMKx=?IXcF>F);$3G@N4Y~ znGnBE!`zecIS{Kw%i+cB>U{dpyU`qdXspJ(x`af|Ukt8c{G%w@CaXf%_;@s)OdGwT zqSZHeqNMgJ*D&4csJK%`n}Z2y0<~K>K_1VZ-ZAu<@F&=J;B59?axQ%)OUJSBvLySi z7|XuNIhseodoYBN7R?VxeMV?FlphkgZgrnEY%C|KXKNuLr*qxU4nM~gexe;dhK6%_ zoQ5@Q>^p>WwUjtcbNT`~Z4K8oc88C(!&_*08RUTbbK4q*XRW)B$9KJOkNl+Y(R5$m zD5uBzXiP#bUc-3Z9l``{k~m(Qr@VVT- zVE*5;hR^@QuKEA4oo0ZY#%rDDpIF0e53%`NNYVY!o=FIkU9b;qSdI_7> zegpWjAH|m)TCV>VugU2+3e-~zvpG9S;~rQH?tw*_;=p<5X*v6}lj$9TS&jN~4bvOr z_r*ytlcoUvJx@!?lO1i_v4-JZYQ@&Jgvogn+vJQgF6yDY^aMV|j4~dcK`EoO;J3`$ zpYo(Ma|_44-nE6i?b5ZJ$1sWZ3)kCM*K!_qN-N}Hr!?eYPtuYjr)Y`h^R(os$y%mq zLX>Ijr!}wbMiN$Yq>t!d74vC&9viB(VX(IC#+>O11B&15h>?)1Nz_Q zh2LxQ!V{76w4BYWyBvNxCToR$I`}yGisp&qze>(K`9M_)mi?xgn$UO_aE8`mMFdorz z@*xjtXf=_AKkNv9)bW150|EuLu=mAIk`?Q>=p*dQv4zr=ARn~rR zH`MbooZpo&x2R=Sm|LS@ev2V-rZ6#DNlJCKqCt<4XvL$!YlL^(b(q~<#)a*tl52#w z;LGWSp`3eR&}IttQ4Qul?o;E4`5nun!WQ2VADbvyRKO+^Z=LS(g$!{61HB$PT|> zQygo!$2z`-A8@VtKI{0JpY2-nF+2W)uJ{A&@Hv`O_U1&p+(%vI4zcrpnC7oRI6j9% z_*0Z#u9Bqmdky6Xa`Vn-hleD!oV~-jNg7C^<+%FTw`Bu@&cahjF7&NDpCAgKjbe?s zO-?I=@iatdbj0e?Yx^%K3DrS6%R93gGX$;9)sm*JQp6-pfwU zbt9Lpv+Syp4@g&2rEH9X8<*SyajRtBhrA72*A?n&VEArchWH_*>n)46on{9A!3FPA z01vKr!mH(c-JvQDNBWXdQ_u%d7u=BZX@@7c@{bneKg^XrCg~R@sPZ(!UOeA$17w}U>5FGfZ#4% z<-&WV9Pb5c0{=kjgnTbCcX>z;NUK2Fv{H^IVkso$#_o~z#pmDSuDVC;z6(9GucZwQbG2I`TIap(P?vgJE{t0m*b8UBPI~rxOygQWiUm6euq!MWw=_^@ z!43dyDu-=|l6~-f5&vGv`|Zg3;=VzJ4eZ<+7KWdRwuG3E$A41Wn`z}(v=NWi57FC& zZI7PQ)ASA8F8X6|&%ZRPIMyt}d%NJ5*>GN`+6~3Wa=-?zV`s|w^yv78{C2SLAsa0F zaB5oVCo^kR5~&b*8wLt^t2Ga*qPZXK+)z6$mX0Yt^MA7CzejeI-S#8(P1*GwVAof+ zcD&9F{Qh=cJKhIV?d-nyl$O$-bkNSO+`#YMH^N|ozZ;Uf7n_pjBcRr z>`jc1~Y!yolPCoKMK)T#g5 z;7a$$sN$gEH@jfZxnN^lu;*Q{HW%y#7wmi&?8T^)|8V)n;`*LfTHzTbE<3}ovBT?K z;Wy;v!~fmNaUlaKN+4>wM5@lc+%1xXdc7AoP{1*Hd`3)+P-%2~bL9XzP z8;kE*TQ@TQ-Hjrr{LSca`>iX1x$lL3_;<9Pgv7LQj$BX7?`=Dmn~M8LFWbcD!G*Ak zkC6q3u73Yb`M96`JAM?m; z{kH7~FB!9m-97rqt<5iJ4Wdk{<#O0@C&L&1eNIa@y{IKeKCe~FXdiQ$vIv^gAb4P8 zKL?E0M^;6Ql~(q(VOn!tnOH6N7x`a+OOr?C;2a_l<~2sQbdjnpn?(cYnvf`s&kLC7 zB>L@x`u7D~Igt8ZkgPV}u!+er@pBcI-|izOjpwyS>g#K{rG@>x)@nfeQ0@lavF?Pv zRg319GEyz}r{&|h7;`qPT|prCZen!2K0>SVf>te5z>TC@=ue?u8rNg(Pa=6}6O%{o zBXlWCp>LAPi`pOqS`BzRrM{?P4%E(?=z}oiC1Ot10`{p$%pH_B3OV(#@q%veB`@w?NO^28_?m6lQ)? zCWhrnfvAU3bv-2Ptq_vwnTt!TJ`;q+NMyC^EN?D; zt_y7DdSAD=?rKy7*Z4dmvm=gho%zT&9oEW4hsxa!HzQjgp9d__YjYL_{AL$5gDMcVP<=Hh(( zd7JtC>j^d98Fljhmv1i4*IH?(=>utmn3J!yVKe7Z9Vp;yZQINMWI&t0`C8w*_*#4I zG>4)&y$+^de`GVab@;kw@y*58w3PH$Ew@*eZeekf@z=FP-D_I1{;yg(F2$IA7`D#T zEu1e9hPAt&p4tB9xHI(J!seNEW>h9CZ)z#^4bABTF}fwE2P&Y=O^BnCl=6m#x?)W4 zaV^7p%3BV;`w3f|v|h%~9JD28OTa_rp#*Zu7KT?_jW+>bRl;0&LqqvNd`5-dp01{& z(a5N@F^ir^u!Z%q`F+xOOGB?I_?#Bs6phQ~ZrFWx66z1gW7(sN*fuKxKW|2{$z z>e&eGj*?z5l1E_lvE~>$P1#6Wg1S^9#iTj>+mp_Z9`-!BXiIS#(9|u?y;_Aeg1c8R zCOY=~tBS=TB{3)dylzWzy!z`c{H(J_cAf)o=iy|p>kM?)mg2bS{wuV$<HeF@=RJ<9vlVOqzqW8ZGau&2aj|^;q(v_H@dfbDT<{ZYxW|$S?B;N&8Q{UD6Jv3m>y;yX z{T41~2(Xa9N4RIS1>%v2d93DLXB}bDGjg*Flh45hrBWH|$)i zDyh*QYf*7GNsd~obs1%zdYE$+9uajc423Mj1Y?gh)a9~PU25njanD|R* z({gCj=URvN3oYgA)>8hjpnYe_&OPI%Z#ccQcM04fVjRz74|rhZ+yU@C)UI}N-U`5{ zH^_d=0!qji_3kIhdCRoq?R&K3{4cexxazqzKttv)*OCjqg!sf0B*9=NesOG0uvB*D z(db{3RePq5O3$ruhQU;=x9`&${O3Yn{x7W0Rte5F{Gk_fb+Ee!Fd0B=#+I9v1+b5_(pCdksRgtVoBF5{ZE zIZ##=^yp8wD`vH80IANF1)+CMc=?XM>|!rm zZ(=LAb9DopfzOR``BGea!vS_2mC0b^O02s;vgs@M_S3c8=uzmm8j6L!2&!VI^fNM6 z5@1aR0b=e96RmexxGaE@jf#iHg!LIf*gAej9J7_v!&YkfXU^8GmQJLxQcIFmaGRPO zV_%q0BIdMxeBM@$dse|Z{TkNk8d#@mVV$nF*QUqv(|Y+ zogfF`bW>0Ilwe3kIWI;}G>QnNmjn2y>w3hJ|>&CS91lzs0D>P+7WQ03B6%so}QUTY{t3*dm2UxD(Y-%!kKP|SQj zJxM9-378pD`I9fN(UPyM)eu87%>#u9mnL6^{sBCFy^rP^#NL6ER|%|@9_DTeHN2k3 z3Hm)a#`5ENt$ohFCMT2Z>c@#Or%dvCdn~?&bLAj79gKtVN*g!I%mmkS2G!P{81jrktFQYnRf z5Nm@To;FY#4L(ul#PN(&rLHc{6(#0?q zBSeWzZWszPEfafQN(>oJ5_QAK2#-uo7GR!uGsc>>O4u<}edsGbvQ89*HL@(2heybJ zvKeCo!hEluF~YY!3;pomeytCjV_CjllA66&OTtg>Ir*{%f^QucH3FsptmdQTky0;9 zqxw^GFw~q^=B@Vi_wv7PC=Vx;E~r6^$J4&>P&;>s%`dR%yO&vg^mCiOdmh~PE~Mu# z1-_96^4WGK>)ARBPPl+seNRP6Jz}4AzK?v*2(SBA_zunpoE1Zh;js{&=f}|fC2d@R zHHQ_kjruE6J*u~>?Wi0{ri~*qll44+bVteT=C&k$fU*WsAHG|mZ}wA;hUlSwV2s0Z z1aB~kY<+)keM{E&5&R~2_LrF+x&59t4$6wlo`?1=mx4{YDuRr z4f_CVDbl+R%UviXd(Uo-)!6PKZq&G*k4-qWG4(@i1IbLX3jI(Ki&P|UrozL?i3 zJ1jpMaN1I9G4;hVt67DJsV|0=7?y9Z%QQV6ySO$;wF(4kvvOB0U5DDaGr}IjIt!Fi+xjB8We4+N0((IK;{|b7^1`i6?Ny?}KJ(8L z#!8}~N{GRHbEkVvflx16s)#n4MhI}Pydk697xR(|LAb{}QsxT_FZrV){NFkF8ToLkW3_{w0dS1# zsnk9jKY?OciSqe)+|4`KJt9nAo@~VzIA7IyH{7*@+imLOiR95jkL+M}y^59BDER5T zBD8F@KM1QTgl7Zv|a-GiVAnyJy2!iC6`Nyx*MDVBd@Wx-EZkSfB8Bygxfm z&hJkir`C@1Xsj>})5AL9JBE*LXvvI!B33V#keltZ3Fb2b;Nz@08F0O>>pTTPuD=x zv$05=-AOpjdGU97_^9a^k73UR@Rli_psw>t%_A zW!B51sGr1R+wY^c-QrZTp4lA9C{M@GW75@7hoBgX;=OZb`>|BYet9q?GPt?3%zEoD z;(lsCe+_Yr!QczX1)N`E?&SVAdV3h2?&%ST`>t2NGq3OB)gD7~^Nvs1nbZ3eNQQh! zb%`>{KFV3>GB(5n;`A3YdZ*>Djm3v}qAMP!pS0}E$&e8WS1dT&i&Hz9EFyX<&5#2z zroogU2kD!6g!4QvwBk)xJ$i=hk1_6`S67V=Mb>jVXX%~HS8Jk0*44-$B}9@fUY}IK+NqqX5)Phb% zd7uq%^yU$6qxQ9(Oh#3c;9k}g&=VsA`Us&9NscVj6U_m=TNJY$@SJAcMeR{e8CjyY z!%u@1F(~4J^I9qF-WW2dZhf``a+op-ph6ij_i-Q03!n_-p(f&xe_g3QMA1ny4*Az% z{({g^&+^CpZb}?e4=00^tyz@&t+4K0n9owkXDrrLJ_W`X@=8EmMW|~6@|pm7Nm90B z0?P}1luk)NUE!xmCzC<-P*)N16ES2^bAWU}4pWlY609qW2lumjKVk3vAdNbxm;mjrKP6XJSrR&u#p-%WUR?`o^@Uw4mg}e4pUSmf z{UB>@#nx)#$pk}ai$7y@eynSF*Kwo;&%@1-%P7`9JBMbd7yL5H9Gq!@5qsM4GRFNF zhu}QPDEH#*mFCuW&@Vcd;hf=|LoA&wOKD*SX^Pqym1%T?EYR$afd>KfqoT%fLK zYh2aUJ*ubUmVl1CxGE-Yh0(hWMsG%6(kRBzcS_7pg5H5%)TS3ib0^{eb(guFK11df zcxK@)v;l9|LLHo#Me}R=KGHl4@7?HuR~T>ZZ4~xoG4~PPUg)vK$`$SIoBIY~oH}zI z=4I}nUn9-0=+|b7b2dN@ONpQ{y*P)BHt9!xd$ZYWewfGl1*~5gC0u(*xx+s|iS<)$ zIW$840)5rV?n=88$xGWJ#io+IRev^5^M=M0pog%V+37H)RCnM{47umiug)eA?m zv^|?>-vAzO6xJf->p=qj-bSG-Xls|LqPZUH#@g$%?9^#L(cXha+FNe@dRf1yqn+z^ zSvml*PI96?m4tMSlp7i4kv80arjldeyTb9^N5>sW6*|R`-qo}xro^U_3KkY}hADc^ z7y8a!PTv`m1w-!;YxI;dTAwK=^8_V1Y8Y~SmIT8A9r z)poez3Xj?06*|`u!f$gox3ADd=?q(92He%R$B080h~Be{#``u#9QC3)MY~yhqvTXi zm$DjZI?6h0Kj-I}CTARDO-v~g=S)|ewXQgvmOI{xqbeEY)LO&_gXrA|X}H`cdB<+X z(}eRl?8mVF#c547wWmjdq_xh_8-;R$vOyW;FvSh3iu-1#a15Li5Z(ar1}A(sgZI(R zoniEW@hvZ>>%T1L(0?fB(2tbE&t$h*ZB8gPc#097a=e^2^t;`b@7Q>??ygT$BuM46 z*y(BZZZ4CSjYaZ!34gHWORHk&6^^_2GrPGAALJcMH~DJ$-J12opLa8wmZ~6(aWDMV zJ>gA&O`!IRn4Nt%y+hs5ssPrltsd<{pC9N_{x}XPq(5L!z&=qy8hmBYJAi-0L3&qQ zu1$(~Q+i=sgtRsrdcDyXpa$&91C6xt{5a(Dy)bS(d>?0hH~1E2k;co?OOEvByPaaa zZZ6lvV-0g1OJ{yV!?qK;S_jEa{AyNrLdsc^p{oaZU5*Lyf}Y>->xI;kLUL=oA+tuU(_a8r_@((kb1%%9*aZ&NMl7J zVVEjo|KQEovQH(1C04Emmm%|@^V>Yg_D+rV$ws~B-IWF}ZxxhROKrk;LObz&;uSN7p}-@Dh6WmJ0CvR+47#y+*gp>xRf@v0zh z9mUH?<&BbaJzeqRYZY-Ssn_iGznJ$;^7JvyRVcb6_vi}5I!$mRX0JxVE`5~W&NcU57a;G^X+`B4}s+ux7upntYO zKB#-q05_ygVVIsa{?V>cI#~^jTU9O7zQi#c3h#K@?-YhYtN>D3AyyDlHQ3*jN*XeE zz&LNu`JcWD%1BUsT~1e1;e4XBmUi>^H5Q!?HI79O#l8Kg%op=6NZxw-kI z)h`TRhX6140lb_5JUooz;YK|wybugS^THBJ1ANdPk)}fbg@pm0snA1VVL@;z^bFen z8xN^YvQn8Fb7T9ry~XkOJ9|0)ZiJp~sLj{K{ih4wXybRD@5g(K%NZ}-%g?Ouj?34{ z|I&uNKTgQYZ(Uw~K1+st^Ik?XQbX#_L}G-VxNrpAs_~S^zlPS!=&$);A~77khwDSw z_s+z4`0gC8pA^}ag|)IJM{_%}m(kp6#5PZj)aFUYPlsLEturU?E3V%d*vD{>N@Ao} z$yCw=IH48#{)b2(&i7?}H~I$qhRpPit;I4*C_Nt5T7I1Seb4YXWmLw8kaPEO zeqD%Z(YyVv&=a%E?F$3u#s7riZ|jlpfWM$fMGK_2Cn59ezkkGruPkJ?KO zHkLu(KT(1H5yq85D|(CRz_g~v$GsFmy?3P~a!j?5T~Aw1~KS*!yX^hg*^a5w2{T}m-}HSj)0?cN>BI))^olp?u~#wGy`wRe?*m`bj^U>oXGUx7`|!6N{vr*SP|Sm^ zF&{#&55(p5p^AHb@Ynd;JjokR)*Hp$+2oC<=!u(PR^B{Z&ooV_t^df}EX*B1uFVpA z?EbZn-J{%NM|+vhKR$k+=f|Vtmy4%T&I}=2As)&-G?vRG43n>+!b>8D)m}s1l1XPp zlO8$T9SjPwKlUn7gPkQepO`j!w7*MAOU9P?f~p)jJml#rGTK`qcbCXQqc=dpFlojH zeI?x}=dr6Z$WlB@N`vM;I7b=&iHoVWlspkIYp@}Raywpp_oo#JpQ0LSQ2cNnR>-ub zh2!2gaV~$8RfB26Gw~V72W?Gdn%Ziw^OOd#mwxjPRWrLQq#Pf4(thhM1v_@5mucmP z+Rz%Ap-%}k$Q7hUm=ees=hj|8Ij+01I4eDrg23l6LeHnrbruxoFOBmB=V|?BKflwa z16{^~ad3waB4pb5r^b1xAG1=ckDr2ggXpf|pLh+E)|d$Mz|-J4mbPA?GLzCosyhem z!**XMA$)r_3OJ@qIRnlqC>`aQI39J(p!E;TEtONXr|2EA5qgI)Tt~h|KVmK|w|FMV z-QKgG(bCe&{0DxM@XZoxr+Y)~OcMEQqV^aqyJC2K_XsheFUAq5 zL}87?dfR9L;#t<%=sTnlsN{^^ehkB_PU~!eMqf`7d3*%y*RDK7J03h|IpT)`-G0Ad zK3Qhn17C&q&7pF37XAzL4l?|A=kuk$8lM6u;m9>ZZj3laYqZ}drY<{K$LBQT5998H zwsl-K!uo#9`W|leJ5oT+)t&xRk-pphTZ*YlVD_nEw_nN*xiN+EdF=zKUQU~*+b;_E z{aa{jjnL*%_a^*+osJoypEPF_N%)7;_n~t}kVH>-55QhICrr9!QBV)o-&{}gI)~%9 zTTa#+JRX8Ldon;W06|)``4P=0FhZX@CvgnCh2ib_p>sSmA9H0f=#V*|W`$bwW7?Xh zb9z$!4_bSc5K|Thr;@Yun9>vW*t0GE3GUs;AGGx-oV?w^yr(5^U9_k>QY6mrYPr0zNNe*1#L3{jM(~qCRl`Ydak8h6*eOiV8w5BVlL>mN1?nM;h9g9c z(6a=8QvnKVgN7^);x9G+T%F!%WVqu>@Dt7#k~*AcvzNlN8d_E@#x7v-Vi)u*NsS+) zoBPXzYO%kdjvQ3AC(Fwn59J;U<&G~}?)d+r+=Nwb0?IW%Vr9VF2keer6BX z?>;adS6Xs zp|KvX&`o^V!A*V$A1hEDiL7~Os&|5J^@zZGgw-rEUTq!}Ih^HrChR=N|HnMX>sD(8 ztF_Bno@@_ceBdZ;*Ffrvm!GA39O8bS#_CKHG3Dtpeo>2>h+}mO4H3U}Ha+$b=S{Wf zR90_Kg_KO5t7qb$)XKh~G)y{_O(w_aqh(n_KXjw1Y|(ewZb1@;2t5eKJq`BmLDNIT ziYM@RR3-`bT6*u<+AT`iVWOQvbfgenDPrb($R#qju9k$X`6jV!U=wojA!c7ValWIj z7r_ki(As*iwgH?$M|@?nU1U^UF@#Dgt*a?ZJWx_c%Vhc_q9HsFiZ6KlJ}ph zC+{1hBi0x|k`F-q))Ag^_I5_5y{`SDi<1wG(IZ3g{lbeeeJ1`u?O+eS4H+M%F_W{; z)!}q3B<8f}b9-hc*0op8z*NcEV~T{ItDi$W0>Z}zJp$&_?ePd5@Kh_!Sy;Ov?SIV* z3G)?(d#Ekt!^e^15kJZ}Vu?hH{xXd8eYJfFzBh`MWCU91>x8;YfEm|P*WNrT*$Fk6 zFvj}oXhH0#!WjOLO&ibFR#BOi-$D*_)b{1>;|+(IUE4%+i#|=ci{8UuuE)}9p^RzD z?|#fmy@2_lEzZ~D=B}Lo#!DbS#3PB3P*abB^=yXTjSi0VBuFz1OQ-?*K9$LCZHCbm zeROm^IF{RRRO#EM5kfgl*$uPiG*Og>qRt?cn1mHd`Q1=ogr5T^m}E2bt_Sw0J;c_- zo&)tbhVsi>bfhUKy{o8TFYNv@V1IgSiwd{fV$IdDFg zjoE(+Hh2dT-+eXGpMq)S$y(%WPE)=_>u0|D8PI!4^IMf9ZiRVy{x@{)_;LJ=m(#yX;rA)m0TRUB`f*?BCweWq*ri7-U5^&PIif0Hy@%BK$!U<; z%guB~9;y&?=Y!ct*w~?s48#bGKGCYcY#|I6h!!ruQ8D-6tPv?L$kF0nIKpWC2{cx9rblZBTWc^eszt9yPsUn>q)N^_)bE)b;(uCyk2=<0(3(%DK-$@q z9_vT_)tdnmOL8D_Gvb?*lCTbLhPibM%$-}=j7fSsWmpFg+9|_2fcPD^wdf%U<3&yz zDxXC#ZSoexm0x*0(vV~m4H+s2=`(Q);8(zCvxp4$YsmWsHgEkD3b)g22RugvN@>ZN zj=J_~)3H|gmYI%mhMct^+bstKECXvbcXp-?aM%MZY>Xpp&~ z9H91dA4L3}oQ>tM@G%A9SZ~!k)+>9=JGlJ+Z@*__2Qw6~L^lz$!_b<1J@la{!ioCM z_FAsJ45Kf>=rb9B3L!V|{`NhW&u`JWy;B^Qe|>M!qa?(PcwSD997AVFCQ;X37Y{k) zJiq?lx>rk)@fc%Bq>6g3@X$N$Q*8pZObRKDGuk8c&d{^Or_>Pm>v82egry%E@lkxN ziep8O5c1f*wU08LpS1EwtxRW^hlHiO&kIR-ufqBHr6iSi8PWDQob`S|sj+eFol&@c zdl8gA4og3$_p>;i<2uaM`ewZI9@}oPdA>C)O|oK`2Q}$eRxZ}vOfnbbWWkz`vU@=i zPWYptOSv39LMI$$JPW4#l^WcpN6DGNsKD-j$cMbNjcH;GqCcZ^x{FGio>nes!?#xJ zjq9!F*FtTRbu66#Z>@T=9=?n#+ai?m7Zy(OgvDp#s9^** zoC6+8lV)|ObmV=f;Db8NRAAjt@81Ns0yJBVLhMy3t5UjlR;h~%ZC%r`(}x#vK0Nj9&0b^$@zkC)@L@0MDiWf;Sp@h^fuZSnVz7B!FQ|u-6#*I@Z{C4v_(l8 zW|FXcipOc8=tCd3P?Vg3Z9kU2hrP>5F1*zacUvz~rKmI}h^2HHGuuWHz`D~}Z^{Ji zrm(L|*t}NKxW_>q`jDtRHt4Lw-;36PmjyQ%sC|FgU6#3^OvumY?f)ttLPlEaVJ3aT zs0s`9aq#=K<1SVI1LLLRKGbE*trZ-8&qw}X@nluDnupYKPty+$;GU){1=2KB=i##l zAX(T}^q6%oPSs6>xh*uIE{Wg5!&85-_>A7< z^oe?8WMX=Uevc%`Yv4>d9Q6j}Yl30V>SNHp6Sfxlq8KxAbq76bCC|6NTH(GBN35Ib zny7co=+HYdlVEQWvmMjh^>T;4`5%6;&ICq>jypyo(ysqi>42}K0eM9_;6_UXgeD@B z^g)UTu-sp3MdHlkEh`U}Vv?0&66PoH{3hubg88}g;A8Un59~~oR^Fv&s%*-zu3wf?~}+89g19Qh6EKEgQ~%CGCtUmlsLhf*Verv;}i<3m3%{iR%M^3q!^ z=IOYd*I<^NqZ4sRS63t*Eq4;7VK__X_Q!i=EqNQeT&KJZE92NKvuTtV32~YsP6Rcv zSQ!G$t>j23qZ#Wai2PlZ&}ssvz}+m-j3sx#SID-XN66?bze7R3qafdU$X8_fig3@t zvhWU^7}c&nAc#`3d7?g=-diTp{6(Q-Po%brvX)M_=VVGV#=WWNq$vP*@QH9Il9?3rehL?5X>Nafn_Jrfe@FP1WieLd zH2k751js=toL`)^Qu0D5A)dGpR~eCp428PF z`z#{)5*KvnsDpwr#(E@yo)!+$n6R}$P2uh3SmGk+@lhS{KEn4g+@6MH@>6tN+M%28 z^Lel#Yw1v0D`Bp}R)>>kx+m+zP4ByK)1fTmA^gALChbRXQwng?;$W(7GQ&&zb9kvI z-1twl@X}<8m(KeScxiDEVRicNC>ZP-F3dR7O8dkB)~jg1nuqC7JYywN~U4 z^ypN`$LJB{s~aL8t@mh7kJ2@ZdAJzz`yKV#?+#cU=Rg|dsSy7}{OD|Y1oI>jN8Eq{ zK^jVdXkFb9%D3pxB~T944VVVyv>iPJ{W+S`pB_$s=0KT9b&j@V2I)S<+dNreEBYCf z)g%)XXUlOsH^tK98~sG&zx`+ChtZ0q=Uem>(Ps}reztbmjKQ_rW363o7Yx$m+1?(0 z1!t*e;rAH+263#Bwz0Mu(mHKcGFgS~98X=^LEMAmC7rBLCGw7}N(U+~x$!g?tX^4) zemUVZ55ZGlbkAF|G?*{@nG`Vjo{yVO@1Ms@VX{KO{EBpt>Xz#i)jLVyW$eRHi^9wK zgq0)imue)|mUuDn(h}~+`(|hQdR2MfG(cK|(j~n$D4C>D3y@V3m5upwe9*(b73s@- zh0^Oi;*2s=Vtx7=k<>ozMfxti6NcO_?=dT##%oLCwaZ!bNVQpdz0}4s#80Ds;=Cjx zHywf;WEma(FJ>#0Z@nF5CnWUQ%is0n$#S6$ej9}c<*{goqzl{M0wc8pki+-CV*dVT zkf6*?pk?$12xx)ar){4t^D|!=iEbA6HOl}eriXPA^{01^KPW9Fc#cIYb90TJ(s`T~ zvb(}7A-zfEaOVQQJ&wL&wgBZx#^xExI*eoI$38RCuF+Jwl#H{qs3VbzjqTEGHid7n z`f6vH-R9pd8Sx(OFKwM9=40crFqhzreh5+JAk4RV(@Rq;>@2;P)=FifqTi-vUA97g zW=~SsLOFrVH_|dh&j6h5cc@+VR+;c~PHi;vw(AnJ063?3fzhnwlDV*=dd%aDxv-*o z%;Syj;)PIRpY}3RVWl+otRJB$pNP=tULT*Q-$QvQTa_4C2)s@5yyJ}Ig~y|YmRU%q zt1dFvJ>Q7W&nNL%4mrpzkwe{*a+vB;@Gi!MFO?FVzaQ!DIlo2fW7 zuhHF!MGK84RfiMOaj@qt#5?uDgH+X3r+U@NDx4czKPg+bK96)RT41102TY$l{Wznz zvmuGQ(0gSbk~j_GAb;_J4Q(bttsiV1dZR0qp7oc?$oC(|bJ0EZ*yN()A$+_D&+X|u z&gkhso|bZ`S5**xm|s<>1`*U4{Tm_T4)iLS?L)en=zw|?v`=79q5L1?vA*k0E;QyO z7g%!>|9?~#<8!LEm#!F(Sw!Z!JTL=~gBe(OgiNJ0VLWueHhw(Bjo@)GHu~{Kfs`ww z?P#5@d| z$}pbAIW&ylhshGr3+B`%JzZmids9n@_eQ3?;IO8B-Iy7pJgUYNxx+@qzcO~F*6~iU@7j}D` zyb@+gK!tVq7V=(KLfx%F8arK8$y^t-Hwk?TIS=)#R_f?Somb*~4in6gyo$}|e2RmQ zWYnX+Mbtrix)PcT<%Re>mr8Y*=Rug~kdvii^BU_*US-Ymc|DiIJip?21M_cEo74yq zId;JGPFw@A9=usq7l@qM@y?bAOuFH>iu`&oE%W!5!f0eF_Ai(zc|`b8+Y9m3E*wxB zIQc1aC75?w4h`e?VL-}tZH_7C9gdYtMG3_MiVmnnk-jxERv7?gRmAcqn zX*)naE(?B9)2Gb6_*SRJ=d(N1Rz~;VjJUda&gi#6*SR7!yF+zFA4%H< zK6AfqW;d$B&d8-I;~AOn!O51d%>v68boW807$sz_Uzb91>l8iM+j?u47Vl|2*mA6pG+dg^> zK5;)~v%7kgv_aaVsjdv#oa*;Sl!D2<<{tXKIZ91VI~n%twb*9hfO3FCKZ$Eco@9(x zJz4?8qro*=s~UV`V0$onm0ifp2;whs%PE;r!k>>aSO!^F5FuCxI!h zw)M|R`{^H%cC{_-DgPzyJ+`!|{r0;;b36`dsm(8-m$dIC=zCeGeUGzel#-}Bm7bWo z;Wtso`k~F`mp8)csTcS<)@xH;0qPUUN&)=bCYoZjg7Ut)lC<+*E_zj#%&qrlb9*HrSKF!fN4*i-^> z6&U7l8!i;oNfw`M^qQ-IUmqoq3AZkC(} zW2vp9-XoioYJ%}iN(CuVfMTkQVyg6PuIt8;NOnyD|1g)jn-@>`02dN0L;oCFt~q>29qy^+HggvnnZ62+1sJnS`)7a343rn!Y!hMLKAzX^zsk#HA}#?K zzMCcIE*5%-9AsrAF(gCE1{MnzJx7ff@MSEU2s>my(Vl#mXMnABXBgfI7w4N{P za#}v(UXDvr!*mCgv-=Z<%aZ`3GAoL?=+FLUw8N!%dTEXGtr}t09)kOhJP{@C0TZ2$ zNvVqR`4ktW&-_PO9pD{(J1uLm&r|y|JRaZd5Z#_&y?tp@pf~48au!5!J{qr|YW7_^GcY-#%7 z`wy@+L%=NmYu;L}qngIeekb(Ie<=6$A@tLATzePDG(XKn~xDPQu#QoG?eYMf$W@k{Wo2Pw@wkC^NKh)8F@bU1W<&sTSNwoEYA^T)jR-X(GnJ#Ii z6YUx17jxOrsfj9yp^!_nr-2dFqpwQE(I3TFUI4g+>3s#@L4EuI9umVtqwfk( zR^3@J##kD&c5dBM{@lEJI!n?l+%GUq4J9^EeHv;>r~rB3=zIB6y6jlse_D3)e=S?|TPh&v>p4Tx*K-4c zex8H&EwbqArB1j-UoHCtf!ZPcGTs;X@8jKXKGl^u-d;YFck({bbzP}P8ROD?;2iJp zH>p1kdisi_JNzhtj1ms`iyC|NNk8c~U+oH~bsIjA;?W;-N%UR#dz+oTbGfW>@lK;u zyhjCd*&6KEUc}Q6<&o7i&NA9l=QzU%{G+RsM8Du^9el7T?|@u(zm+cUIqU-&Pf)U> zT+LRlkQCiF*suMm3+=)TRfo8XIx)AF>z$m-^-hj+^_u>2)H^xXz}U3CowKd9zvgKd zLfR2D?XL}tO{cxoO8Xn0_5?^fo~Hecfw2XaPmvpQ+53c;v-tjjvdcLH=d0lgP&pNP z8~JsCoWB3t0{O<+@)gf&R16`ls-Uzgv)nj?o;Qn>!W>T=UnV@|w$j~Lx{H@yJZpmD zqVFOuQs7ef4yNX@xhrfiFEx7P^Nh5Q&uE^Yc_+DgV_lR=2)Z^U@4vsZ3fb#}^Ei(u znTeBJ&1j)m^0XI0sY!XMk!)LP^qD>7aXR8(4kiJIWZQYRxQ}7wMn6c)5iEf6sNVu9 z8Cyz6LDG`(^NeOWhujZ!V=Uh#N%YHP-FXJzDW&LMv93?cW9OFiz7mlh9wGLTWHI2R zjiN7}r2>8mQGPEk`zQf+x&x87Ik+=9Koz=EjR4-|6r9rS6XhQ z_qREj+M2c!E^w6ajjexoqE;mZrbw+v4r%zb5JL(*2|l44F3@+v^&Q&;?7>M48r|6Na=K(2RS`JD~R%Z;H+{C|Pv4Gt{7wqbdL z4a*frrQ@$Re%=f@--wWZ+rk47zNj=EzR)I%vLUZ_NWX#iX2grV{-L~Dn=RS7w1T-(zAJtZ)NG3&g{^6dd-u|ojSAc<<)Y1*b~ZyKI}Q=PJP&aLz>ep zeb^QEKHWMaS-09q#Mc{rvHo(@r-S(x z=UdD@F}L-(ntW4;=kX$? z&y~`amgi7!d`t2E#~)u0y|j$#%{{o@Xk3AMb7w&ceA^trUsuXJt-O>3+|8~4X{I(> zQV{n0ntcJx`8;wY3uu^@w3W&oyp}7$_hafLx`T#^82= z!MZFA`psv6Crx93{CZg$gWqRhu*`Dh0MKCXpq`$!B0}tN1(`bXA z^Q4`|1(Ho~XNAVjXE^3Nj; z^)~(Ibxc>=%XPKq15PeQny#uY?28%nWVV}YLJudHp6Y8~fV$3@R&u1}I@>Q%9`-|~ z6>a5`)4AmAT&2+msfP52R73jiv>s$l0h4V(J;;=HMmf`i6xxod*y(hIM86UDHjt+79q*giiW&-Parlqs$WY zd=Aw~FC@F%D9P=XlJ~7Prn}hhVYzOpz=fj{;G?n~x%ZE#Ui$s(jpPICgkCy?8Y<_J z#C_`x{APOTZcp+anCEvh+Eqi6_d)vOTJXgVzo=gNl~-d;OfUV4t1&-Ptp+!KH6Cly zl*#+o89Tg^gcM-YaMZ61FT-5BJd%`rV70NsCrP_}J}L1RfJb)u{ZikNbzO^BVcwa9 zwFT22766R+_YS}i+ULP~cDUVAH~i|Z=*5VA#5#)Z+Qj5?`C-z?4|}u_5-f-)=^FM#H?ihY6wAXFl|teD>1A4nDsW@^|Q){aVj

    q!WN*c}n}hU2ny#p> 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

    uo41iejmeVptF6Y?5hms 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 YXDH{7uSbjoG#w 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 EA9*9R4cm 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

    WTdfy9hriH_RoY_zsJ>mR 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

    (amV7<#vqMq@zHW&$fh`-t0Pcv| zD;*UteUCq|X}EFapd_3@Z;{-Wh`sxPlh_p6V(vk0iL|U4GSQBNa`!b~T~e9v(vL(} zJ*CGuLFyc{=A`RMwJ$Ss(?tDzO$IWQAa7mL&}@@GABW@jl-E!-Yb`Kgh^J$`{kW%L zpDWzZ>xKIcm*)sZJ@^(!OX^kntOfy#4Noft(aRk3s@+ko4 zj?y=QKt6vZwLHQ1#8hHFeU^}*Oq3~VVXPu`H1Na!mXcQQVM%fMHc~W2uLUd&)FdJ~ z$vG@Rp+mhMkVgvPV>Hb6Ws1YYTRj4bs&Vl(z#O+NQKV}8Cv@*pHG*U{SnewgkIwhg za1Q&L9Ct^@V-?=Xc3n>mnL|AX*lF;7Uai z{8uswsJQ6MD`65k^6z19@=>b$unWa!p}~)?$gj*l@U|_BzTycoQ%a4U!x z-I3B?T%9j$U*RAu!l&6La^2AgJhmT5Gg#wY&oK@08Y2{%S} zwV10rqex1BS=h}fSb*9_?jXmNoA*#>DNCnQ$hNHPoh&Pb(v*&tV6fMzgmkY>(_6JH zo7mI+wkBmXM`(5d_lA2x>v#5z$iiyMz`T|U!d?(N(gaBJMbN-NHEd61%lt;*(a`@s z1O4$3zC{mV21-t=fH)H!=Fk94K(oK>LR`H4zYfP-4xuARx7(>LEPgq*|4mSrmjh|+9g-%i-My|fz=ayQ=SdwD|40@ET+A0J2GC%yeV7=Rl`#eE=0b_u8idn z8i9^dIm-s6lkOwJ+|#GL8%&~;y6V+hhLBm_Zvfa?>w=o!Tpt9A$Q!WDY>(7QX&#Yn zCOXBbpT%VQv|B^PNnaPdn?=n4DeEU=THuJy}@&98YIJRsUFtq<_tHj?Y%b?m_xF zxnmYLP<7d-NeHu*!{Hb*1CIuF<$4Axk{6k2GNcR5qDZIe&?(r?srWn_IcjFBIaC=b zQ;!{~fgFuwTIVME*pEhb0@op1hx?}2I1Z?B7$h7Rh_ASAny$^@Oey=;w53!Nw zXwR)(j5#f4uG+)ZsI-9k!V{RkiBjCsS!{Ia+C*nGE~v9I}NpL9w=?Q#^!= z;78+WdBzD$LwDc#OvWqgdnr$^-G4TTYgn_kI91Tt_p7@zclN4O(M6oXBj_?ORaIbk@vej0w@`RYL;dGxe5yY7xpV51F{`0WN@(ODa) zngK6`E9N~8rQX%v*+j zETAYUD*m(~<~;C>B)JJg3eQqaG-seX0qZ^?D%nt5*mB&Wfl;s-?evm7mVBbhx<<`6 zu_HWe`6j21=z?$jXgGuvnFkub%k$|u#@84#fGmSy$gIPnc_5gJ=5aBVw?Wi5)AiVy z#f}D9fv~LF&WMxu#pqF11w`QGthyYeu2zqV5v-fo-6*5(c*;Ebx1Cm(WTc?wZ)P1z zk8ELHF_Jpi>qf}l*p3P~BH*acXKn@5qKMVo$$-p#^csn>UM^(=K|WD=5Q!8Aoe!MZlx{Y)+e zs5>*6tm?rG{0jb)sU|KpY%bX)T1>bfg zvv9BMGd57yTC{f8TpK2Cr!|{Hfz;kCt}>~e*$k@u6UMY>Rn8VEYbim-rLO*V34C(6 zfx06IuzDt5NbdVCp}M+iGa;I$fJe zGs}J~OJC1oSQ=dTT0#|>Tfg6jS( zr>kL~kzf-ht4>koH>n-J)1Pb|khDd%x4H)luiF|e5s`|FtJ1-bk-Fun9^;)Sp}`~A zzw|DihS3xY$s@57n2yI0xpB#WH<5a)b+xGE_fmS!VsMb>*1zqY`C0sicjxE5iv8%E zOw*`KnYjaqY*NhPiEq_u)0a(P((g=|9{H^&;Iw;&U1L^OdSG^$MYe7!f$@GLC!YJlu)5DIbKU$%rV@Q?FQ&20x5p4l(O*(7T7xOd)% zQIneVZDfe;bJi5X>#28#wgalQ>lEaFHjjQ?$D9>bsY1n}`1x!wS$p{v`S4oHGtm9k zbAV>bHH6*pPL3Fx>Rx>g=H)4)wKpe=Ley_QlVSRE-iVs7oxKK`B4!TJwwFLpCgn+- zm#G%Ju;2V_=A>#frE44E2F6)>E#VfaBmoxc$Xbk$wMupuO8MTtr~>Bhm`dO_(`}{f zBmnIskSyX_o&F&&RO4tp?2fYqYddA2E5h2H#g4h zMlFlWQO6)(q4k*>j*JrjJl@zp|3W5ul+)hw-3qzv_#x}Krht^GRsf({oT zcQe%e*(XIWWKKu@-Y3=hCuy6kTOdB^kIn~Al4nq(VoCy`-D%CJa0RN@nwL*r8{J}^ zRPF$i7sK)8!}D{FeiDze^r;F2)Ivnuat$~)L)8cecoAC>^X+;s-_!Rbj+u>)=i7<%wi$YU(vkrjVg5+ zabk)|Pa1Bpuv9*wi>kJ#=w@ooDYwUDc6e7x6xd%@_fvs&g(Krh-Sy7F3>1~+V{(@< z+Zm8{2fGb4AKf|5{h=sdyxfxdR`b0T{Bn0?W7 z(pefeU3!r6wCl=O=8VHB?TlI~Wre$uth>k1OXy}Il5g3Vk`&%& zG%n)c;CTF!N~X*l+o}4~+{~^BW|Z*LOpWwtpnS!iXPP=_+_lY&NmaMx+9LYNw`ecA zf0p-Zg2iB{T-DPsuhI(}7_VdXIrnR7*ww8xQ+g!Sa#AH?HJ1Tu3$dER$}&IAZBup< zkm)&c8h=`|A<%-t5@5SV`gFh#o{zHd`L&r5&aLjwVn^kuuYDtQ$d;5Ubw+1O7!~7} zNyhZ~G_=0=j5_X{6J8JG#ut;XolYv&3<))2Jm$yl2(oI(h?kY*JlL_c>-3@(e(Vp= z%o~c?Ch-nyktL>w(~+UDQ@UVfnO2Q)p?u4SCp=?p^>iwuG`~X1Ru(R0hoC`8TikaH zs9uk9fkcZix%bsbk{{U)GM9buqNJF*NYXTQka$p@;i%_fab;1KC~aWQhhcG%csCsL zjIbR4o#oero6oybVf=bk$OrD&Rkk~EeN(dNYnF$4v29ug9O;Q7k~0NvTZSIN`Of3O zQR(cdu8b_SVp(LRHZp<}S7i`=rM~EXicXTbPh~gH16_psff{ZuFt=-&Jmm z*H|_Hs{vLMF9Sk_;D4z`i#@Xg*@TBIB zR54eoO@|onCBp)55OG~7rqVffgnOxR^R{b%CErRSt$}fxc9)3)&J^gY17C?@IZ^Iz z%A_xid~Gt^Z%8`~eV5U6qSDUT-4V;Q+(?s`*&tP6tL#y6S`Jkljg*k}e~C+9@vHCw zZj*4()*~ZSGhtbY-jzubEFC4Z3^UP&Ce49k(3LfixvtK5jdjOI!+tuWO2{ytDx5)8 zoM+OCz;qYK4~3b3%@X02xaEM|C&`AWuMR=A>tG(L!=r6kY2!sZeQ6F9n}v4IPK;X$W7GAmCeMc5@x@#ljkWB8*i8w*bps<@NB@ea zp4wiGMDOC^jZxz(U0D`MRXPdKlTeL~T+dMst=~DqQ;$$5v3-7w056Ubpy#H+&DWbj zp-SYe@Qz&otCwRa39Ep`@B8fI4(tN2xEkG(d)l(BS`g(;g774SYorhu)GAg?rnaNi zCDyjSy8+a7@U_ivdfv>E;&*8&g*A9Hl1WmVW4>yBJBvM~Js`RJ?wBjXoD0y9eVqsE zHnn78>X2`CRwGCK?FH!^Y`WmZFxn$CYD!P5S$#BgW!nKUe882RL+)7OfrTWnF}rJU zQk6}zsOK_2oZsZS&TL^lgXKq{a}PdH#)8g6PH8b4O1-aWHWX@^7}##uux504j^8$* zu9vV`NBK@$bu1k-Wgr?M?nP8}3lqI=SSY_}XDrC!zJPvfNNwCNXQ+9F$y z<=u7JLEHHzYwJJc)FC`noSPU^W5*TM;P;cmv5eu0u2Bz*i~IHxxjFWlBW{fyPf1?` z6m}ttB;c{o60r`fBw&~bIt9xJw@35~)bFYho~duFQr_*9ZkSUV>ejTA(7C^p5l< z<3mhE?}=_dv+96y;X$gPaK*_Z8>u9+69m0rFeLl;EeY2;o1<8_QM-Ul@opW8S+;&D zn;9J}Ke&DH$^;t(@{vy`JCY(H?H1R$XQ5t zl0`Igfc{MbXqxcwb*3f8sg7eI&U)kHOUhO2kVTi(iizqtvq-OX+j zv9Z@O+%!crDc2z4qkD$vM1}_M!g$q9*tVx?c6BR`GV%rq$V=0#BHOsDVF;m?6$vq? zq?23+-vpDK4yD+4xN8ND&2D4v zqm7hywz`v`&^+-|T^tY<7gmBE(5|PnZ6H4Aeo|Mn+hebJoH7| zNR^~Jr7OgeQI(~NftNPu^>yjpB8eC;!j*b#!kr9!G3`$Zm`;zgYkU0&B%|fIAwBzg z!>*ovbe^sK-TAo6-45qxhLK)nU&61T)TRD(EvThf&r};Vnatg}wtoMaj6WWpbuSQZ zDa%1GIQ+f0Q6s}X0Ci^v7v4BnRtqywG_on{-AGyCO(`G^bQWY{Na)=5ypU1k?+J#mGqj=eTx8E5}4(f%asiGD+>4W4V$$0oCl;Ckf@}$J5Kp z+;oNQF|1Czy7ni}-Wieih0P3qnkgGc6y1kEOp( zy65Ue!169ajF$t+o+C$plKqEW+6+agwPK$hTU9QxQ+nmfi|X~wUR=!s?YiU*Zmmx1 zYNbAAALrIc=5{ts4zGHnUU!m?&6N&oLAWuwskf0|`^0J(u3POh8if@wnSgWJkUVJnW`3SNA@{h6p{Tsso~N2(Yc_fz?_)+m z7}2kWNvp`^os4JmkCymF^(EI{YTLyY{l_RfrA3m=ffFHxdF4)8+8ObtM!mHQKf=#I zqL*x}P9Esf&oRY?ZFmv-czWC&uWab}ApV8952-1eOG$ zGk(>W_i-{szOz_z9O(9>~ob!D8( z35Ss1DceOo+4715&=?azhl+!CKL@iz^^Jg=?GP&Yck1+0Iv>B%XsGF0T@{yuev_r& za>A&`VK5CDKA+ABLaXO)K(_Zxu5PO=lSj~y=oIlWQeo7^cNbp9fosE=2KVDnk8f&# zI_hiyrhJq`(M)%;j7)OI$)J`1wOuD) z=9&kCtCqAgoNtv(k<*$QWb-cDvF{edvSfG{C+DFD_K!V|&n3VsIqtO?F~SvPMs|L^`!6 zLbnng0hZsjkD4XpU#<@DfiL5`dFzDtTKq$^z)I z6g^+xiDXT^fnNZc)28XEbJwDxy8I)NG?GAJ1Z`M4^E&SrCvhJrHqb^!JRc6<%NEtI zR&m6VQF?Z8f)LfcrXYwfCp_PT5t_B?6P>cEaHF+ZN8`Xf!_t9!2A=xb4=-j<&CBwt z0~!Z$$4O2{aa?Ivjct##bmgYd+n%b~XZYolq`^y)1{-mUPW$#!aSbguT28&uzJVl9 zdYpB1#7#Z6GAuZ|?F>w1Tjg!5!W1hX{s6uD@SN)okVxXtRh4Oy=-O%uCVV%NbyLxA z=HnqU+Q{>h;r z0h*Hlo*%)ZMs~kmx)!wQ=i3D`i7P9V=w!gIG?i7lwp<7D@55q{-IOG^xP*z`c~CE`7_wm2}M^Qp%O>hw;`sHN0|FANKg^$d&MdWHbY-G#%(BZ^rvg zFa$mKQqCODho8;myq}fY@CY|IhxZ($oTll)UdpQL0%i9!bsMsK>Srt8q>Q;T^1CVD zf~RDTxH!KdG8m7{cAa`sop(pQ*h_6V-sl{F{Gya)S5MBbYv=3=`CQDAuI}JhBN?Yh zN*Wudj7(>&fWFR^)hA4y^_|A_R7mD( zCxA!SJuI?1-ZlfS8}=#|=N;{UjxH*z^w`e)tL%oF36nyv;7qQfvn>v13rdGww%)y$ zfwfIvc6DN!)3eo2&vMW@Tfiz*g${qvMP-qonW-`|eDFJ~Vk1sFTjhVI@ z;c!0R?(8(d=FDw*)#nSqkms#VX^$#%=h*Q4lq+DU58-1!Pr zzO&~ci9##)2wGP-IlZ2iXEmppL^8bv(s|De5U-h^xGLy#X$=YceJ0bbsp%|mdKjuNZuxyMFkdwGDSxMM zj$yCjQjwG5j3Sj?y==yJ?!Mx49OtfR4rg6`r{SpK|AQ?ugke$EjaCC3xyfxJEiM?p zaftQUqp)YGIglVy?{$vwOScp$O#07lv&QgowTwDssv8G+hB@g`*TCG(XIbXUD>a#Z zt#m;+Hj*E^lE{WJ$FsMXzPxa2h~T5KDKJKIe%XEP%v3QgLPGZpYn`aXT{f*dwhOf z_0&J1Px6}zj&mO{+lHO=CYkShztW}2g`K5pn=O0FIy%#tH`vxcc}ygL28YML0Rgvu6z_BP<5x`VDWotA?8y<+_o{ z(afeHP4B-AOeTBw)xUf;%VLrAE)KhgALI(xi9ReC3Gd>&!?(lfVL7cPlz<*q6PePH zh3F*~-7keRVeCH?^Bn`E{Ed(NcwL-dr@$%KGL$7Nb2!_!ved}=j!~JttF(*u-yO?4 zx~LtCI^3|6*>{+RCb`P`mgVTDw%)R4V2wScz+YyX<1;E%q>qJHO|b@mM1PIyvRA2D znNJGa4M>YvPpF*(X%~rswO1o`ndDK!nrCPb*~}I4ni}BQ?oibV5KOP zazEbuq6XEtD8tNoW+x$>zxET|c**6+883V#X+7M26T${8G;hj2^HdG&ZR7#_uZ1tJ zE~TmH_&~YdFR%LG=leG!U$4Ko8cIP!^Bplf9VV^p#jD{Z1Zi^D2uBsdNL(o6ArBkV zbDVbDEmE@9{nQ)7Wtts-*R<+at}<2n#jEh=stNPui#R7T+7ycr!mTSrJEYmttt(nx z-MZo|w#uJyCf`vK8*>f$NZNIBYkA zGh)-S>{9OuRD`Cx8rzQh%d0WCY*}}!+}qUv@MntlTr zEA`ej#3c($VL!C!-*PF0MvK>Ge0A%ZF4LD~>mRa0NuwZ(`U~>3J90Cawd-#G^5JkC zF5$KTJPP~#%8vbsx@d=QxJqa`w)>Vqf_0EONb1=_3qLw%Gmkeh?`O@^`+hCSd12PF z31Rn|UN~q!`7{f4+*aJgc`c>zp;tBO@Aw-d(N$@bXQCx7Mtwr9={2f+hTzxx3Lxgf zjc*K9ea)&9XQ_6kxo}X!W%h{UPOp&5nT&irqGKt44~ufYsMLkS7kZJwB4;pAGgXyYaC zjau=k?y~K)dseZTpTIj7pZ{b)vGzsgJxO*g$S@yT+57TN_30p~r#(F%MuXF55eM9F zKv_t3vwV0sl-*l0bkG`T*vz)4R5w~EVeS=1;&dnl^YS0Dq%ifYM^Tcb)Dw;+z_?O~ z23ikxSD9o?XlxlkX7dtCpk*!I2W$q`eMPl?qo`n}k z24pN1TV52D8$dBE%h*O+^^%A5NDR}xo1_P|FNo5em#x@8j_U#?14rGzOnccuV}~HW z0bddWt8Q_E_i+mnc8|=A?iF8|=bw_n9+0bFz&BEkLtBKT}b7WFQdFd#@%j8(?y{*}3+Zm?P-t6%^51LS?XoDI;J45bAq6 z9O)#8PL~8~W463XvU(mdVAG-gl-3AP>%&)jJ@_bmUk{^K#Yia24%pT5DCmlLf5KR| z)3_z25%mu#W3jd0ttG_l=n}v^y-KK9WZL1dAZ;{n%uYf$pM52?PE*%BO1X_xkL7>p zWs8WKn6Cm&9?sT4z8>_4vS+x!7U%YLPc@SC*BPv~l6GRde4YG$S&ljVS_Gxsn!5gy zhMx5SCJ#{~68%k%mE|+4_98e#c_&w8+|X1WF=zQYc@A6Ev~!AWBWY~rMXHYgyNk=l zW=ezq&5?A?5!c59Q^HixlU~URWW!zD?4Pg;Mu@o+3jt==Npm z5#-&-X6ttsu4Br3bXRjN>khg*BVo6kx&&U&m)8YWzQP@rNy=>MWY&e}w2C)!Rt9f*Ny9$&}r)lvZ6D@Y-3k*M7h(1oUjXD?EAR~R zKRV(PD4U@y6>hI2Po{j>AbRR8%9xI2E|UKbpm{2jxFo^hgH4NL)I}VRBgVv+*HvF` zs`}sa{}1wiQeyKb|J8@I6zl>->!mo;j#lp@7zAU=Eg)d~?*(=VaKUdfEM)vNk zFJtW85C3){i?U?kW9Qh4V0~u`H!|X#xjq+YkQww>`ORMym;#oI33(ujqCU-kV& z==n%5v#-ar%@0hgHJ!YS>W%6Bs?)H9B!>WVaUexVH^Q0e=`sNdZx+BU~D10;NH8C98 zC2WgW@~Eo=ouC_Pl5h`)SwV2Il(21LDvE6uPaWg@2#$??ztt zQdr?qetFI#J&3=}2)X!H%+RPhb|@t6S4c53O6A`~`a~(afm`^GC*#K>tm1gNMMT2{ zGih(FIJZ%nRJNN*Q-vy$lg=-Tvcz>IghRr>eO1t7C;k`b1r+c3{oP&X!a?y_&z({f zTA@Tgkj+*xc-WhKl(ot|&$^eUl_I(K#AS6~pUcG{I5D|J&!!}CRQ&|=qhj#y(~6d8 z7d_K3Y88VQQ|{ZO+4Y=$QGY8GUw0eYE(U6VW#4m9Q}VBHr|C-;Y7XEYk&A(>XJ(-* zwE+BqHlkM7CBt~9rc8~%NmjsmoI$xqt#qG%rNPbJ7_H^8+4mxOJnD_RN%KJ-cY(INprs{#Cy?SJEat+U8tILz)x1@x zbsT@xW5{BmJ}XfdCbSPM8wGj5ilwPo?3d{_P%7(->uMws!+|#``Fh0C-1JEvNT*OT zy=bDL=e1#Q?t0mv;J6)#Rcgfm-R2j`YwS|tE~un+VS!XIHY87~Tbf3LqCiNK9}I5v z{o93$mqFcg%0q?KHt~LQ0C?z7ee@z_)9EdwWlvoUWX&leCY;nuKEo#d+h)}DWm~{B z(k`=IPGZNhE5LlytOVj8K(^roH4jPHC^+q&(Q`4uABB;Udml@0q4CiHz@vG+2k%k1 zlfO<%9~Of{bhu)2Jf_lo=*vRo2-|ApMJc>f8&6$jlUCh&BvsP!4U&z5jxJvg5tN~V z2$K0Yk7g_FgVa46hgQ;--Y(R~ud_(;sfi*0vO2VJKqeZqI5EURfH>vnbbAKqX=t`( zU$Trh+Fp{PkLr}B^u{-++YMZm>9-oF`cq4w>P|{uvTi?!*ci(sG?3IP)6pS!lr&$* zujun_d}FtpsINsrO?8U_J$7=AS|TB7&*M5HKsb0 z^yIpCsQ#_28i)!atSFdwBjr=u_2>=#yO$3dgnEaTBX zSOs{PZ4z8q5p z;UYhQYmurLQz4QSR-?&~U$y4hyHnKNdcP_34CwHxJ36e)h0b?}FQ6}V);s+1!B6j= zJ$U)}`O(WC-@QD3`Q&gou7fX*|McYD(dm;HC+{9UIsN&`lb7#KetPio1Rp|69%gR5 zw&#G~%|-u+525JDhROb}omgOJ;;a=T#Pgzy+!?EmT)8f`iAWtcF6P>AOR{3=&z5ZqXc+~QNu-aDx z-6ZVSvozEIn|rgFBi|$|`1HD{RX&f~vXWr(hjhk4uWp!5Kgi~peNTRA&1`mS%L;Ms zS=97}Cm_ifLXuHQ;njn)t}rnJXc~Z!3CnuaZc*0+aPedlH$4=oTi{Sk5N^@5YP0rVY_l&%^hn$O3dR?Rj&V#;m z9kzffDKODT;ai0&D&PQun)o=*z^nA>xd|_ZMhb(`%^-#YJ7Sd4DA;gtQx2yUqtNIr zq4XdGdx?h*l&@1gm^|;nvpZYe(l1_ppJg5MS(AzSP#(IsX~CwGA;iP}LADh#mN10a zh8ECKp@gQIi8Ot?sL(_x^kKK^0h20Up)&yLL8s`Ed=8z3q-qa^7sa8kaNm(Wvb7o? zw1>lHc_S5UoLu*~!LPUip-~==Wd!TlL{U8g`=NW>Wv8^cHJu2nz!r!RHV-^AWNb$~ zO_g!zwu3i>T35>mDQGQ{X3M%*R2GZD67C!XEk!^*X=!VIZJ5k@c?d+$M*WNNIh58| zgK)IIOkzYUQ9Q9ftT;B9;78HagTV!2SfXihf7sct7P-QT% zpV_J5elx@UO|X9INfk3-RZ}$gm)mmuG&`jDje~#UE-sIVS@|^^dd(CA#~r=^V$6Bn z;#WxrYKKHs(9>qPvC$e1s%c3cq>7^zPKw$-=>&As$WN2>3DzwvV)|Nl1sV6cab{n0 z-H#F{-a0yr7SFgoipFsHq^X7q1t62psU0kexr_gyQNu&KU^ zK+I^46nQ$`$!mo58Q$pEQ_o*I8)~3j+4oM^qGm;o?)I3HJl-6E=@v;q#TALF%X1)} zXpv?>Ta`amZr1_P@NJMfcTnPj=kh2%4m{!<%X84PF@lt$+lZMnx476uFF|R?-%-G0 zk@{VGfGxmi|6}(i+__4nu{ZPZnadyx6$Z+CGn^$pZ8lj_m#;~?J~A%-By(J!efG(x z^ZvBLSKZEtH0|JNzKpFhO^+$ElST)n+LazDz$YBr|7rI=ACpe!@?5rVXC_}&qKBXfKzbNYYv#$c1G zA8T5(LQ~n58^Ob((l~1`yBKEaEI&SN%dg;U`>Z>@_}F#nlV#g1DdWUefO||ekMXn4 zfn0c>>z-@pdge#&%*&?aHPBbrCo&rhsYbaAV9uHIs^Yb03?lj^Y54*-=fm<0stu@N z3KXW^HM-G#r3WEE7``FI9Q9+F6$SO&rVXOPdO1lD>voV@JyF7&gdz*R++ttj+FO`aknm5ta@(q&rN*JDg2bzsOxn!&1?{@Z2p zsumyV1-1C`+~?im;&{r{<+*%oItfr;2LNh8Z`^YsdV^-kDEn)V9JJE4zPIA&tJCKg zS-#NGJY44xgC?Aqf-s#ltemc;YT8!vIiFK`hvGm~!#*uXuP}v>I2~n?or9}eM&8vG z2MJzvC^LC1(Yp$8&Bd_x_S#gO3Io~5cs~62s$1%6XLK51QfWQ$e%0%9PQV;tyfLIn zi~(hloxIG0BGo@Ks{S62b-9$P$-cp6@jViuYd;+OUPyZM@c=PKA%Zo%Rg_2`U`Kz+ z?#e&}>uc*5w(Di_R~tNZ= z^B^JkN+`uNRawOjv$ciIDPHhDV=oX;` z+azwzbqD)0rw%WAc7ocwI6T9q`0!us`g5Iq0nB zYS(*YI}jUZzS=BX(z891bUD zJ$06tuZ?<+?Y|pPCOGhE7;|b}Y?#+$R1C7&!OY6|MjF4X2$l2>laro_k=XbX73vrI zKv0*{J~}?q1&6r$470A~s_R=!mc`_OWM)gEf;x+4a>0gcCS3yY6xFAdlxf(@BdA9A zntcOqMR-)j%JVojKfJ{WflgJn9tWRdE#!_U|&GKXp# zb>P&eQQzdq*|*_2Fxq6JsFKeHJ?2@ooBksR4>s?Yhh_8mCS^Q{SJ`aem>hU$UvgSd#^f|(I_0hwA;F3 zjJd7$sCE^$Z#UUSTeXsvd)`%&u@}18Wh;uS$ZkssRq?NqxEUZ=G`Mw{x(CY^aEik< zspYLj@^pwc!&m+Jx|sATx-pS1ss&Nw{n)t{>40y@|1Er3RGi>>P_^&{)vC}%Z{h!; zv^;*!AvS__zQW(@&kxcL2q0Uxg}Xb8rGVsnDU)8cbXJ^Apg@?IiIZ0)e z952keqI@qaga@yINj z-}S;V+MFUQ?5E%LxJ_pHA6!4?_y5hsaUn->rSDOheGtETb!1(?Vxwb581u{f`QnnM zrL}+c=Y_>T56{?*?)-Tw>yJ&dr$ZMBQ^DwNo>w(8ZzJ<`xUi|ewY+Z?%L0$&90W|g z-!Ck_cgy_u!d1QR^+qOa?jS9#cB@``I73YI0PMT_y;F~F7D zmyMPtSXj3-dm3$pmJF#DzLFIF%SKSp!UAaBdQax#tM^cv{#AeBE8#uA=l>u0{|*1Y zUAWcPz|s8iqoKY=jb3P30ucuKDyIP>w9q!fOw{}4u47@fpE>Sep|aMPgZ5TGf=@3q zX^N*z$23Fg9ksqU`BF8~-2n&Z)<@NCM^!{jSAS-t2pL z>l6}ll~|av@UF+Qk#930otVA`Sh6X`F5CujG*Ix!v~f3-sOiZnq&lCh1tms=85J9o zJ%}VLBt@<;xt-%BW>I^waHp@au_>QWvsy+HgHrr5@@#ml^%)|2h%daQ_8GFeyh*e-1NANK{-VO0)Pr{~^*wTTTkQ%w0*F%F2D{0lLdhkpUu2P`IOwEW9?AQ5 zU&905Rq4VpRP%ls7ZAdyfsKp6vizI=9#T#Bu(}>j`xm~3{PXvRU7Rh*2Kc(b7cx&o zf5hj~Y~c84g3=c-(aG9xoq+dMEK3q%*iX4ImH2 z8yCY1Ky^G|)2XyJ@}il(R)8Vjdlv;~>C8*Ts%HDl*H+R-<+4%Wi>yhK=pP+`an3LN z?JW2}zaA0Y=+IoYC%W?9W{uQ++eQsjhw=S9W{#Da0%#dMqwm>wp6uvxPF#2iarU|$ zw0w@_!ADW^@)^V=K5!URTc&bB)^6%OPSd{s@z;OX)ef{>BmFbjSA2KYyA}XSvId;n z@jMrrUpK%xu>!4O-dzkYuGENJP4xW%p)9^0fa{i8#ozg=X&=fMD%~L+)UcYvi!Wqc zE%x1ZSmwV6uYP)pU+fKwV(;2j*=u^{n@v9n)8J>zxEB}QB>Ou1Z&wgJ?8{tPcc5)S0Y5DKQ;9rAy zbPX%@w3ka}guK=@fLltS_Pa=$|9}Tlfr-V0;3bSWi;C-l>xSl_ExpmFJGQ~}C)J3B zm6}5uF%BjiON8h?7Afaf)<{6OX6i}X4M6YSBkD5Yqu3P6iaS3;H|d|tWsr$Exp^qj zuRoWoE6KKH>l?e6lW$4hpDDE#K?9RE3zYXAdL-k0?W z6P&0$%LAvRHG5O`5f7chhTDDBXkXS})uZg^?%pdI;pPRzGC~~vrR@LYlMGY9;1&s5 zMr%@?X)*c6e&5<}&n|(>T^S)vf*-)*Lpc>8o|`W9-2!&aQ@+q5>%EO5OTjy8+X?pF zRi|DVTW+N7tyDS~ssYkZWM2LfLte_f3T{X6t05kEHN?k7T{PvN85ev+>G@G?3#3_D zA*sye5mi&5ZE* zc0I$idTSY?eo!)?itG@s{kAD{3Kc4$rsK`pA;OOUvP~H+2M{Fx2BO-y_-b)^z?iivm(Rn-(jJsc*;^aE= zbN77@>{w-Qs0+qItBlRvUL=Lfkij>0ZsOOU$;c-1JNYGY1tlCm4Q1ZA@wY^H3o>KjrcjsVFntb| zc`?U*Aj`bS1A2gt7=AmTjG2IO=5Wl4td(_@^M%_c!e7+i`&w*~Ld?r&y7+(z4M&-B zHF!4+lf=V0yC&EbytG`G%YqYJHhOP>9KSS$f$cOC1o%apLG8Ab_)h!jqhH)5A zyCbu4*^Hco$>-Kh<)$T63ZOEMmSIO+tTYK8X4{C+>e7H+hPoK5tXuX(5o*TB}5uKENAPvJRXY_qG ziUII;&eQSb6ett@&eOh(RG3g4v{Bwk2-|Nn(J^IY*XX%LnGNYyIy_sCB$dJu4>OP` ztQ`;p-OFVP=_-#NjZ_sr7QVX)b1P)7^Q`+`$~@`y-lvS+l%YqeCKcFEc+g);51K2FLN`{|YF4O9` zlG67vI2q}MzrxV1>o3%6ZA0F6MBOwg^^Ou?wA zc&iMJqD~~uJS5+^$gpVmg-!CYEK6Grq_cNzB`qqOG)Tk|TQ8f|Iqfnt&S62BQO*v@ zm+o;bFMl#LZJ(h2!f5Gxq#yy-D$ACoSHKhc*PqF-u=motVEz;90|g84h&dns<00yb z9KUe6Og<@=%e2lMq;zv}Zl^4n@ixkthi4FU6{!rEA7pQpxhkpk`t=;tuumBx1MbsJ z4Y9~QIU+kkzQ<+*q)el%2P>10R0nLhZk2O_nrZFLQ}m(`WB4mYbB(PdBVCylW+$cf zm{(~xap4|yg_sSQbrMG~nfEO$5p_(>q>d1UDgRn8o3>qdnur;7LU4Tf`8;T>J*UJ= zm#M=Mc+l!_GPL*s8qENa1qQ#L9Ad+FD2y`luX>ZiLM}bCvcFsS&;Ntx$cyqJ13O;u zpb5y6YtP6;e#g$FMY1exqVVoixyz!RO{NQM%2 zJ0R?8HxmVZT|Huz!Z6s^RGIWzhVYVA0MFxOaJ@$IOce-q?W7wP(Muo5z(%zB3Y|>d zQz1cl&Z;G1U#Xx`;i`HjbLBQLp*xM@pMwp z*su)v&oI7!yUYv)vsEoq|5+?uo7WPqn7>~>WYCo{;$lI0gDs4MCR&(;$ zzFS#Vl(jPllw!7Xr)*2(6?Hx1bfE#wiaO4x`P~t3DhJe3qzu>K8h1=h-8PgkH5)EL zTMAv&*5y?LZA5jPBI-%(*@e~MrHat)bxnV4xlG*nN=n~n z>luMB)`REqg&*dCekN=>Mc*C5_C|(~EDO}I+nsX{YPDDzngL={0vO~UIh*6#W>!5eXj=S-^k6T*E}ul!H@*&4d6Zzbw$KZUcG0h zPuA6}yobwZ=nl#&XUpV9ITHeP&7csPI1q7rR^7tNG{lWm$;h5k8iM$;xSEb*+ZJwo zb~GuwNVt~|j&3>AX*+J`K>4yHL89OC;IYze$e0QI4VmbyPAO0(p{Yj(+#!w6 zZfv2xDY^@NF6a`47N^sNOvr|*ZU#)Q#^+>W$!TY}Rz5#L;dJe;8}J^kSh$kX_q7Zq zpb?ZPjZ;#FV|7p2sT3P=Gr+X=1eS-(2rP{W(!QHmZvb8|8|$e6+f+p^2h3JZg%($U zkWk(&^KE^@S=?qVQ>W>}S*+nVu2a?}1sTm2TP>6MdQqnOkcEy+ouVT%CZV9R-Lat- zwW$p2Fi#m9se~QhnI(*gV6))s+ZmC#%T9(y7h^C|P;96OvS}eI1RFxnneJIjJ&&=; zWz$HVadeg0XkhXxw@a5KHavxFI3Rqw$#1@K$n8EGYWbVZd{}Wf*0{FqINJ&j`+zOs z)9yuVrqxl&%&vdQGH|3|srz_&O=|FfH6ICVQQ=d`%*&O`p5~s}k~QsuY&CPP za<^>6_Ark3?tJ`+9>?!^=9~i8Jr7PC9v3_vGemv1sGI9D{FY|zvKlDuk2_A9KG1ri zKRu`2$KN@Ug<}7OcT87t$=-0BD)N+7MZIbkT5+MB5|66{C5H9yawzn^pLwVnbN#&K zSLNX$SVQhCz@n+aF`bwyuH3*KCEyuLy+37|HTNP9q~%AKN5|ngHV&l{g?E%$JB9a) zWC}b8*=hLb zg3F^xacJ5}7o&@se&dO^3kPLH=TnuFi`c!Q*wj7Na!REr$-Nfdg~yC4fohduWQ;=K zKnRw%m1d|jYpH>1-^y1lF4PxC?u7%Lthk`-yv%PNMqF`WQWQ)&wOeFLgXZ;eW@UN1 zRC%U+qJk#H>U#j1{6wHQapXR5S$YFYUSRg-Wimu)X*pakPW`Nf-@c#F3cq7f{9onVeg1!SI$k-k&vw9AikiU2BzQG=2Nj;$bwsMtP9 zlR)!J$ap#$ynwJeg+E_n`bu9!W{1YU8LuoT%))8k%~QvnSqz_y4}^}-WD1ptY>UPR ze$)b6WlTa_k<_Ciin%)hntRnc4J|l)t{me+Yrqpb*xd*OYPW>aMPV8f2(@u}Rl=;% zYIV{^OC<^S#w(Ts@yf_XBWzvUhUhB0ol{{SvsZq`)!wRQ*wlHi{6$xLo~r>Z%3N$| zk8m=ZH?>CUbqix(@0I~R*Zqj;B;7rD#|nf8<-7JHJ(ok%s1yPMX=&)Qp2&9 za4x5D%SwHkumZ2TC0iTW9;aowOe0E~4~C&Jl`JdGVl2(JKQMmQmEg6fkixJ8^JlPLnjGk5Plg*TZEu$v&KD(S&YX=J zP>K`j`@dxgHT_MQU>is*4+qVhW;I5S6NfVO@iG~=&3NwZ=dDoO%KlRR4{)z4*1bxZ+CbMM_Eci->>4+G!8c7-j z6!t-RbwRNMda5L|R@-X;(P&?nDk}($=DGv1-~3{>PUTzWocPOM&jB;PqHB>I+7Aw> zWTQ^M&2BI^OdAPsCUYmCqd^|}I)iD*T-L-R=`P)g+1TD}z!)9d4NSK#%_}h%>?W*c zPmoH;j~F%@sLYQu&`nm++WA6yeA=yT*DzmuHfkv6pj2jPc|eOVyV6B3ypj?YS5)U- zo{h0y&pPAnQX_M>%gj|QhA*gjGSgMfqAY{D+aymg?IUiSX$Psr zhYSPT&Hccn@&__fp3+FvOf}pe?ZX~E81`7JWz9$J*B*p;e&C*U&kp2PNuRdM`01-^ zgQoS1Xxi5Rq+d<@d}{6ice_;46!+|510oNTr}rVrebJqai%*VZ^2wFbHYj+PRvCVD zHzS#(f6HZZt=pFLI9A*3oWhqhbSK3)h3X-er~RI1Lj*-1Z6|7q9YTWfQd0mbZAwn{<*_nQL zV(vuJ&An<{H)F=7!%aB>E|wOvWCe+zWG{h2+8|CWEQ`E^P(KgH?zX23_KAMm5uv*sqQp+185$AsS8L!mxK-bk<_f#+&9Y?Tv@1pBG z>!#Ql%&wB2n{@9Q&8hpFlHzOXu+;s(X~@QP=I6(FJ47fz&!v*QP<^V%;6*g~4I*5F zk~m!;&Q5k9A*B28;%CC!Y77=$s`_<0goLE)mh1_40J?8f^@tiJeI}1D{afV0F{hnA z_bz<9kj){izzMBXk9d|OBz+K?C?F?UD&OX`fI8gx{izCw8;Ggc5w&^-rLL$+!HHn@ z6eoEF%X~ff*oCi988903W(DXQTTw{7^>CRWu6x>8A9~^Qq;6x)Jd=}p^1iSTNSi-V zml^Bgbc?Yf@F>PVG%b^7d35@=k$&o$MM~Tv(TGOBScaX)vlLSvC?!#nP&d9ymcWtw zvn+c1T2SUbvSWZx?|!*z?yZ9AWg@pZ9^8d(nS;JUOZ4bcjoErsrp@T?KBehC7Y`lP zNa4n%A=PGJu9x?AnLBx3Eo(mBH%Zn5dAEq!&iC0&gzJM@ENL`6Yec_ZbHu}6ONleV zs@I9-B64|^ki2kx<@AE4oCC+yu#sik7ni0%5Xjs70n_r#Lr2S(twn!cS6X)mwhJ+& zZhn2MG_yebd~d%$NRPuW^kcaIg9s_WBFVtfGT(!7O5_h9SIjpdqb4tBjtW~$n}i}9 z7Os|!dGE*~DYw#LrUrV$b z69wR5=n}$RTz1PVGs_9U+`Hh_FA+Yo$IN=z*p4H%&aXIqL33^=&}pDi(<(#0c}qQA zq9NwQ7+rN3-yG@=M$+4mheBC%RQt)BCV;~;1Hu(rcmwTt7E626px?5pq~G!zsO4mC zuC%O_o!dwHK8ev(y`8aGxjZ|GJZePKTvbFD#W!{GEylP-I<|zKmZ5gGEn1Bv4+~H& z-vZ%ga?4AWfR19EjbShK!5DLbMX6_>k3Y>IH*8AX-@930X3_3h4RfIS(3=9{JW<%lGR-H4*Y%ZjP(rxD68JozBEZ6Leq|K_#frLy9 zRK+}+7wfHM@CUmh43CFyOuYiwjXJk7A_AkyXVYM2Ye@9K;qcIk!z)D>TL)1K1h$qC zoi(-yGy;IJ5D)RS48npJNEgc@GNJf5>l^9L=BVNhTWt%E>ak0;vuvC1ngI6toA^5vx#}?5kJj=UEju%cIP7zBx`JX2BC~m#Px7s=uyv zh_;Fde3H&iF%jbn2pKu$b!#jeK7%S+*sJ0NPDcGgOLgz+mS%Z)Lfzdr3VA)y13tzg zlKIxpzp^ebQ?^A{`}@)8{ht>7~~OXS7(F&`3))AE4aJv<=aqlv-%=->enV zXg_65(6n97i@~E!I-}>N#U}BSmKENNZfhGLpJk5dxuOD; zR~YX>KG(n3T=&YD_z&}$8=q$p5RO~EMuMJk=eieamH**xZf_xpdeU90FO5gCbG`z@ zW8P%-*JidArF2%?D{W%2nL0#2%Vn}ZUD31_wjo3{(epzUWG?Iynl)1H5V!EJJPHJ@ z@66t{k$|7NH}q__nL*xEorIafFlY)a-{izwCtP_Vh_}+up3~QCVmej~A+bY(jp!zv7CBqH{=tr zFckM@K+Lq-?w9tWR_|33$vY>>S+TUPd z`~Igx1Sg|I{uKkrHD<(HYf5tRCPaGP@NwJ1qyQD{k&GK#Mm8;xyKh}D8}YJOcHN;$ zEo_$GpdRT_e#?-f3%)|lh3bj{c98SD=0J7V=;Lu+(P^u!Mcv|wd=wpe9c=^LL6uXz z5xWr82!(Uo=&!GMLESm>+`zj$rS?WBhL7qY!TzEziG+Qbd)*E zdfxOnNyL`=;lPAS%ZgsBdO$dpZbcXXt6Ju}aVvm~Iaw~#xscR7xm9eJ$u~9j45nhg zWC?hCsv8=54)pRZm3WIf09PuEwZo^#uN`ZxDHZNQP`hwoXqTE#lEu=3^{g|IyCA$( za?8W(!vW!HP~N?3E(jCt;=<=}F4*FaMqVvrdk@BhQiqL%xjYMP82$tC(BUXH5nstp z|6D%93+Yq3Gmb93nSn`uo-lR#k>8rBUigczdn$@uE0qyBRB%xt-IPzCL zrLK;5oUFISy2F9&m!FHow_P&Go;H7Yz4`S#lvZ#E6{hhS=3QcY{B_N%nI$z4%Dk2o zJp$Xpl%1}h3hRm)h8X01`%F%guc^@Mx>fQZWSc+c>LKITfjW6Y=9mchb?)uW6h+sf zRvDHl>z1_b_b@WC>)4HCo$*h2UGTabICwgw6F;t1h)=C#3fD%`w6)xKFq>YJvvt@n z>&#H@HYksoc)L_{CK*?~@s%Al;d`ilQQK2C!5dZaUECu9;7Ruao11nd)ggz*gJJ0r z7^V&3;-j7(m7;}pioj$}V}uPL^`5+3rZ@__B{$ihp4a@Nbn`Ie}koQ2~brmACEoRlm z96Ag@lQN+=P}DHwlXeu4!GdlSBVa{gRkzzRdmUyb^vBj zSPKmLsaNqS3CeUk*J>FQpv>E4*ulVl`ME8~%x$^*!`)`488_XVkB48pMy`c8^EU9K zQCvrlG>rz_tmCKZdG@8wNveuYQ+`37yZ>)e(Ql=v;ieXUs4uk~$@?1L(WjvnR}n|cMe3E3NxyUvr=QRHavmTpR!9E~0O>D1r< zLMA1qHVuFK3)lVB8=q_4&0ur0JnoxK&xP(Vu>u_T)qbh%DdPg2G8Y{})_Nx|cpkA? zcz4!Wg-UU1Kv6@E-D|Hr9=OYAY|Ua=+(QPX=-HuNWcN)fp>8@{vWAZx&K+ZVhgls-HpVy!$baM{7j@nEic z&>hL}0NOW==GZRP8FQ0`QB+2s3dw5qnJbR;g6dwKcjlp3yN(C{(YwhMn4-(>MRLYd zvSdIIWhWlB%FgEoe=RwgdE~rm<7VyJ)}w1xpK}Oi&LKHmUGq$gc?W*P@gkisg}KDBJ08jqL3I(pTk zr8~8H5k`8hZq!a28>2(>B=sCmB^|Q^2LutVcP><1rlKbWL|N zqio$h0CojM+T1S`XVZI;<(gJc1`#m=Gmzy{QE?;4d`ugZ=F7dn8eVP>)R*8q|MR=0 zDUgO`l{?miLc;}Y)r|3|(HTS9Q0QL`fI^i{km{aZv++UADAoK~+bQLS(KktHZ?g`W z`vAj2x!>qemN42}iW;RxG)CZ4sCuI2k5%rq<3uk%i9#(tQm~bAhwailrICw1$f?tz z&(tp{La6Uf_UiP@p}X4K@Qf3TWer;6kgkY{aGjSN69$L6Wn1Ok({1Gdf_DZP#^E5y z9bFE`CHrmzNo(hAW_f{Q7isR)$ly%$>WaTO&bnKslku5=2V0s+v%AdE0>O$^*4R)F zZ}{{SC`vk_lcDElQMQ=q4eSz0xN0!pItT7+p~>AsA~~K{jHDQ1#|VAgk(sOo>{4t~ zHS$|+Q||LabRK*)}1JBZIHny!yiD+gl|a$F%w5&YfGN%=Pb2U8>HvEukDXuHfkxdqc1HKKA#C zfTjq>TmZsr28S6#5%??l%h+{$HQ#Ib7ibhBx~O=+D;AI zI3e_gBTBY^D$Y$E|EJ=^aPr0zZ}C<7-3g|?n4FdY-MG>3Ph3!ho4F=4)l{X|hh>N8 zenEaeXxol>I1<$xHmc$&z%4z)Z}G==JF=Q4lg70gdH=U8ZWP9P>!4H&qYZ(%n5%I| ze=~J-rNbe9{p@H@>Dg(!r5PvOQfd-gZs?DCAp~C0q>wZnu=2(@HpCxo4s6$l^R> z0^Y4a`6YGO>7|u@1a$!WUs{n5>Jp;GG<(jsrRk)&iV9}RT$_cTCG)tFbb+=bCzPtF z$m*yYq@$9QALUz#UjwYo=&*~d@=Mx!N$fL7h0SNb82#KGQ^yLgQ)py`4c}$Qy24x& zUv5S+Ka_T?W~9icD=uAtpK17KQy6Gx#C;44*}se?S-=$q?5H8LK+NJ#`P_peNrYoD z#aYrhHw)TNfF*l+CVS35NncSDQ0{Hz(zY=TbPc`?WQrXEf88+SKV>gD(Y?c3 z2`kuc|HrZXs2eE&ZUwbbx($8is29-dQFd(gN~65Iq6(w>RME5wCRdEIl|TuNAh#vd z$EJ%1JoIDzP_hFkqZi9p=jV9RVfm_e0yWPmW6Moug2Tv%hl}SrW3WezJ9e{ph?qE% z(dSkOFDhy5&&|PPhd^Jx$^XyUn|8NxY+0f#Yv7E5lc>?OeaBjT2fMr8tM+?d>q(Yn zv)d9?B6Tg*7cGzgDU<*tE)tN$`|Drqz0Zk=On~xT{ei?eJ0de9BV#;qhGIPCUO65z zHX|7qOSR}4YZ1T%EmI7Efxsqei}d^6Bs=}s0Y;B~xoO*tp`s8DjRfwi4;*1A|>5yU=6`h$yNi?uy1ca|+EcDYpnUMnN|9HJJ$3r;{( zkPT#LIkt6yKJjI>6QKUF9pJG8rOGHJk0xZPwBf8N+eDX8oPjYk?j$U;&io>w&oQR* z9K3|2C+JtErMaL^cA~h%MdK? zZVq+ShRQ3k)Ce;TUlI(Lb=iW+<9zst-i(Ny7_SXof2(AhF`DWE_)=&ZR7-WzL<>HZ zJ4~n6wq0o@)Le0TzUm%>Z$KY>-Ncx^pBP!IipEIVG&+uHD+Go%(2@F%xiEW1JBd~e z_>Qj%#I>2$jQ7@R^mlCO#`rYHbPRYX9n&kp;UYwFkVQKU5Y54DwG_UgX(YYys8+W2 zC+}KsYhr&;G!D|#dkcdr3fkt+_Z+j#PekYr{qcBUj#rz;ML|Qj5aa0DFok9iEg_s} z1+rTvP3>I}c1R6UX;XQRCm}6GC$&}xB?)`Z$EL&^M*Z1nVbu5?q|EiN)nTUkl=S1> zgRE~(LV?~x@hjwc?~0(u9o&nGzS~2#Ht*5iX6HeCXQFxV<@I6KRxLgB>P+lPC>pDW z@>Kz7z$p}1Q@?qHI0Et{viMg{ybdEHiEgfb z(Q*vuHE`+1^7iQWjK7qkW?BdaKkxJ>IlLyAO{+be(_O$#p~SVP-`t%i2g9cDwB%hA z@KcXLr$}34hgop=OF9$+jWAhHSs>x6fvaDv<6O-TAtR#$&Ad zJu&@v>O%2tO_w<400n41E$OxtaDxKQz;mEfr6ts^U2(zlGoxr~hI znuef;D4%Heoe;%`=i-VXlt)@iVu64^{CVyf&^2>h=oBeKW z|F{}YA6Zh7`u6*gubXJznom*FY^DU6q3l+GOnx(WthY4>m07lYFf)k5%&R)^niVVn zy7BFt^H=~;f0~Jf=QEMh5oF+ZzPQp)$ zv7`QRG$0ts{R+!{Zp{MkNV_DgQMC73CS=WxBb=FHW!y2%Esn#wt$)^&<03AncB|Mg zVOT?F_#X@5UyC%<_N$_nXnJPm4gKqR?APwR?w4S}wdss>lUIhOG0IOsD)S&<2w!&H zIo##?5Owl7{`;;k_s{5~#XV$*?!#gP99ya4iD5l5=wN>CsHIrkHgDc>Q+9#F%?q20ra~yS`Lw z4BdgC`|`;h3T_T7-oQLjrP;~3_z*9Ki6#<*Lbozr>n6XYdwI$@70}-VRU1v{{N-IY zDBhSJ83%Ge8<25Yg6VY+>SL||4!cW3V&%`RX3H-FkLu-pkhr`ri^^7<*>0000R!p&1nPg5bNt#Pt(7(K; z`H^YuJ+bgJn-1uZOi$1KwCYBqN0(2z@(FZlZmv<)v-5K;roH$fJED?J6=Xd(w9WK* zZwyU$jn4kfgH&kp@A~5u&1i?b)I6g*WXttTP9$mi!V~xCE{B}t;SDh;mpP>&&+bMd z#o7o3!a{zXKQ@mAW*DX~*+Yg`8HUeiuB=ZxarA9g5~zEW1DV})c>JjIj&7jfmRy^3 zP;$Pzp6Kt4G26BVnUmodu7|WTVn=o9L@2y$Ipgu6(OO_MhqZ&3^rTp>3H6{#0)Cu@ zHp091)P?X#-1`oys2CrPl553PBJtZ5W1W|*4AbF5^rHt5Hho-Gho*WaV_E4!-x}tz zSxU-~C^kaD5PR37h~|-aoufrGzYRDvz3)354I=-)3R=4ec-o)B8z3I*chDNkIrSN4 zpHVTvPa1ze2VG%19|nNw?37L6Qq?p&r5^%(L?bDRS(E(aoXGml^Zr^N@pP@ygwZW?HHrALAGz7okr(bQ9QZ75JvNBRZ?I=(WoG$ z3OVI0-i~BcNZ5>!se9*aB`#H-;Er{3%p&qQWV&8Sv9%tWZYN87;qJ~cctx~y<+{*9 z=#{75TyTR!>mDu45K##l`@GDtIX z;$3*35LD8tc!f&{WF|G^qoZtrkM>0Xuc9?vXvBf6HSC6C7DI8@dD@R*6tgvr!Dc@g zxb$G|dT|VPV@OYwsQ3#q{Q(Ozb_3>RbMC}DfcTD;2r33O7pt(Z*pqj8LS#;%DD8mU zLwwAzXTV{%dSN@_5n78-$>NjdI?tbiP1;k2f)^iENR3S{dj;4b+xPNkX=?85jr+#o zbiZ1#?JOmN{y_O2Ws?xA&iHB$dClr2BI`UcuOjt2QYAk~iDjcg7;o@b{$sj^GE;Ae zB`1Eqw%>1%IsE#7v`)^xSc^=Gd&@QykQhU#Z#Ic7gK_Bo$QA@ZWKKdcm>zQouOfXm zU2rZuHOCNC8YsD+$51 zNPeBs-(>U?yOVrT@*>rU@65T6LyhRIPOxFZm{55u*A@`Xojh-KgWh=fVLpZ;tm+p| z7X^J|5dAQ2h90-;edpVeV}&{`x*gZZ$Vib;sif!|PPVeF6&I02h;*Nnr0V@q@;vO+V*Ft4_A zKoe^v4`$Ye0JjbD8$17#zs}SJv8!Sf$L6H6qO=0ClkOxs>vhe9x(xQDvWi@*gl9Y% zj#H#tFx_rCMdtJ3P)wTc^4LN#lAgoQ2&nRT0lzDObeAT|Zet`f`Gy3fw>ln4BBlL1~md!&r4CmIUAvy~#NIp8zWWWbP<_#g8qqh=mVbYd|<~GWR*I|!C zBC68+87ZC%Ay8%=LO$Bzx*4wJ%Lko`Q*Pt2uBH0f`Y;oiZ)VJQU!nRU>nEy>43ptN z-I{x2n4k08{jvIgl{2sX?${1xDvt@X*vOby91C+(rWJD%X7Fgt6uyH_<&!JkEr(#g zj5F8^6|PTP79G<#XR~`F0ve3McbSa`)Tul9fYUfAH0lOs`xw3Wc)R|iB=830$Iq>nEMUSa6Bu=8jt)QVO9+@z<)^%ZpHaEy~Mx$Xe)e~8~zP#OL~u7 z^(YwChJH=3*%*?D0==CoZ%eo3p=ECltI-f}Hv+DIUhTz_-lj`P~Iz=1j^H zZK=2w0nPkBQn==rVj+Z%>p(^4<;Kut&F&qUniUG=vprN;c4&)W7ArL>MG&f+&c?_R zI(&3DwN3FUF60IQ8p=}`otu|}wj;@XGMJN18Nc=fq#Q$k5j6^9VfP+HF$EBfA(f}P z?{Pi#xkX)!bR4}N2%8jR=(ktDG#bvz&^>1BYE#y-WmPN3xcF-4h*m|rIfSzbd24Ux zu*`7jKr|m)SCdasWye??9f&)ib*w&X$uiN~aVBBRdQUTBXbQDGTp*O(bG<7a*kyho zDki`i!+Z}GUKHnXVNEB698((J5NyYt+c}p6oCJUAomQ?4Wu-T;yg>*sHEPcgjV88g zfMoH)SdG_*e;aqgU<_jr#x<*jfDLc>OQ%f1X#WV-Z6M*1tzz}~sCQoA@SJASO=Q(} z`pIBMy_jFjM8+iqYr|jo@s4N1P?BHX7U8S8Tr3m7H!?<>OgURptP8WMZ5vThgEok> zR;D9gGk*7cH9!432J=WEGt(2ACRXuoSncJ=+E^%~hv5Mhh3A?M}+i=IQaE~YI?ICp!uuTpml*OTD z&>7^qs7O%Y`v|rHdSJDVg^C0;=v-K0G19(?XSOXuwi`0{V;vmMD5il56}@K%`e|NO z`;NHmG;?x|6q$oC+>-&6Q}CRTg@Gk3o-7T!JwPxxqpC%EgZsj@n|#urmJ(U3Ih9H_ zr^#_+7sGt30-?ul=cOngC3!nYFa_N7uzNx)%CISw*Wl`(JF_t2J?e#C+f@~FwZpPd zXfO(mYwqUDNDfONyefK$Ym9pQhS0r*+hL@2rE7Bf*%?2}LfLf2CS~i`0p1!Yeg^Cg z<(yz+nD6dahjCxuh@^zKmN7cVCilGmQN9DR-G3`%bgA7{GWO2oouUY>fz-H%b~1Sv z-FoLy5q6P6$H$zM%$OS0GkKS${!&X$xFL}UHvH#-9i1Dm4;2G^AlYgsov&-vR$;kVA{3_Y|+ znCQq~DQt}4G*p$k7E!D*>K;w^>PU2_6>tQCw_t;4*B{+)LG*#T0rGw5SzJbk5`Dz> zjxoPC!O%Ufg~ti3%d~2KQ*jqKSS(+boN)q&{YJc1(-9YGHXN`U;1xYB)YV5t=jHFu zUY0B%8_Hr=;;q~{TjwKuwexA_3fcqR1psTrRT7kf5W}rkj3}8JH^qSrle31CS2g}M zD=Hem-y~DAz~R@#WTf2%Tw+q}1UydWm8?H`Ay8yvaPpjh(!Gc;s;06^in>#4k$jcW zuUTK2+9O$bF-h-kr)VM${@?Eo{;DSg?g?L4Qtcyp6kv+&?m8bOKaU@tGHqK32d)@1 zyGBq{L*~~qI+;ZdT@wbNkFWUuHR~y?y#5hps_u_HcrEFVr@V)|p5?c#xU0v2xS+cr68=i*pp4!Uz z+VB)Rozvu%HWcA>5>wAkLxFppFvAtY4u?N8;oLAnJMsOT)1Yq6;%=Vex^sSvbgP<( z2zfXYh9oje2#aO*#?TWpl^S3=Ak2!eXK(&dZb60J) zU3=S;V+66V&=Z7tI_wr^9eUt#pWsS+HiJtqNiDKvk29uvAjUV{vEV3kMe@|B#nDm`UQnBbPQjgcIFOl@tO zOhwSh{yDj**ofV!BZpxt@b?+x8SdB9qQ{p8Q^F3<%(=p=>HKol2sI&+&pX|yI};Hd zIz^Uec`HNry=*DbM?m<#(+<+7j8cuK(AVV@!8@JQ@-ZI6A|M&%x76wIOo$>H;afTU ztVjub65Tzo4>NDiH;2;4+0pMoF>)CIihrwyhOe)L{rLo&O?PW4G0fy57~+UAme6-% zGN;JOrMI)RqH^Mo<{3RyhwlYdz%tAqeYE3#HybQh0_**v-^Gdn!V8K{Lw$r_AN&Az zDGcRrREZ)dFDKUnbBTyNT!T4K^Njal4nNrR015THI#Y%R)egMxN>&%&R4 z-wDeH>qx%U+i;3yLxE0cY)a?fd{TU?@NGt~`2RKk_xQihy2Jt~egy|I2j6fFUJY6j@mn9~-gWyB>Ej2DcK{QN z!Ppf=Zw%>H{Q404>lOSD`w8rR3&aSQw*Q(KZoyZFvCD57S*rbQ1(r^uC}?pl*rJ@8 zR2MBX1Z)ZZG4l?H3126hP3H~6gG!Oh<%<-)Fpi;Af__pVhVtDZI`;)`J9iF^?^Zkn- z9-jR0_}c^38xt2{FMc?F`Lu=|pFDhVGKU>Ke@<+3SdmuU06Wo7sSo1O=R)@i+_YF! zs+J|qBdJ7=%*~sqKDSMxG2+t8 zeOLwXmn-*<8{&U9d>{VM6)vM5*o`5)4TbA2x%yevFIr7V`I%Y@mk77Q`nr7H=M_j^ z9$tD-m&=ztXS>Xf_5WqGbbZ8d=lJi=MZ-d*!cy`LM8~B|H%7D)TN!mm1y3ojjXIO1 z9g>WOK@=05X zkI^x*Jc`Ag_&427`Id3nmUc6gE9p0V-0*G&zhx-wH)m1dwwWgu;r;hBV3c`PFPAxXKF3CuqJCx?a*&UY;2DN<4d^$oD@8E;{+Gz)CYw zlW=e=hfGM=7**pI7!Ol!ZW?Zp=P382(;v*@l-FcJ9uR>*bVfuj7FM@?(esV2N(V!e zr`{>n2}$O-baTXIP-t`Ya0WFbtWfqwiz8Mpk9yM&p)zr25*%`Gj9@s3i#}8ii_EC! zK^=FE77H2m)m7e!w6%gBU zt$?PoQ>d2@k1hy28X#I!sI_z^CB|11U=%*pd_xil`!<~)Z-cd^Ts(cpjirOIN@{f8 zzhF^fa8Jvh#=YbDofa9rWItnp)s2zGE0SaI!9UZ1KLugr>fH zyPrZSrY7dY+u70kZX_#ZMNQfn04W7L6se`0a7qrj4pX^iA+gQY>1p_zL=OcjJD;+DD&}-D@=}r`^g?>jg&SyxHg@;AiImKBWdR( z_`dZ30(-=wv-pUkkz;kmpQ+w}ezwqLlRA`r3Ovdkg0Q}C5>REQL-&k%s^Z8S;xxR; zDc8`XgRR z4=^rS*RNLW%VhckKHin?3DOm*5i+0vBPXb&7|6UqayC4*2lG<66XMgLy{TXO*uNt; zJ9`^un1RU@7Y%&84fdEAzFv-C7uU^R&Gf{aQi)krEhEzD-%TR=2-zt(UhNkgvtq2n zJx$acs8{^|8vj4C0xbf}2B>uOG0H>0pfDdzj<^}g$9-spkK`<0S+rqTk0f+WG6pjR zX2%L}*tHAb-Q`)Sf;=hvaTNGyhk`32&#`PGrKsklF$j=im%T}9tg=3hQni+|dGi)x z;(M@1W8H~iRC$TCX{A1)0;%;m=@lfU1l9-|$EFc}qB5$6#n~P$h>F8Evt`2W$kdNH zOh?~G5k4GIOT%2+vIKTq2J)54cx`l!(#65%#^@cw?tV5JhNL3wKt=@*12nEBwHML$+jNFxgvgC-WD3lI+f^)puh_5jjLYkyspUTN# zbl8gI(1TMaH|ILmzP~63wgPY9K5%g|)-s<;E{3P&6cu`_lAM*RSxva8 zz1``>8|Z)ESpdGVZ*+H2+E{*s!`xU)w2K}r#^ZIh^!~-0v#`b+^xl}#!xxqGGwshT z@eTDr!u~DK!ivn^`_6*Y3w@BQ&isNv(Y<>5RTfK9wWvx+mdl+efL^ z_yl#8HQ=unq$0FR<-Pv3lBtCFvi|8j|I%--%8SRn>6H31wU;hur>WC?UP%fA;28Ty zHaEUsSV4R`!<#cIXZ?CURn*d-{<(a9+k?f~m5QrsO)=)M_I%Y1n0&$Q(-)t}fsPz* zazz$~jkkKbyEuyyzx+hvuT3_Ce->f zcZoMg3Prc7--m+%WS( zSaEgp1$EX-KS9c?LCx?oe4|kqlok!&SV4UVONsLRPeoXrT!$02u)>+a1UxRquZ?Ed zkj{p#z_e=gd#tDe3FEP_446efm8Ec6HR3{#ISntTqrS6v^C*pnF zI8C&^FYa>Ovl8K<6;EAy%E{ZX3&!0WV6r1)R2TMBq9n0JNlqyMazKs0X5jD9dAOht z0os4|CWY=79d<3FXJDiCFU8Vl#n<8Qo28pYM`m)x=_&sGS3smVu%=&bni`2#z((;u z{C$RKD$C+ZhfCs1D@6>(RGi`iF5T7doK#H#ku5RpxHp8jeZDv-%JfWgE?l)ghsq;E zydR~aFIYT7B#mL7O(AXs+!Xt)a0lTASa(hrnBD!-o>=Z_x>?EXNi>I&WUe8^jfj?Z z#n;VOZXzD#)8XDL&fSzk+h&t9g^cG<%TVI;bD4kp*?$BS zAwIHFHrt3i4=4+BPFmzK1DDpF#m0C$V;+`>go}YQ10P+=K}{>ev@y*uJt-{sS|bC| zb%GJS`q*A3$JZ_(1)Y0Io3AJO>FJn zCSSAE6xyZAKY`oT2_mU@^>~U6Vo#)djOG7T>6jd^zFGrdX!ezKt0@11In3LAHIKWC z{iLP-uUBXKxzq0+&8A0_XC_&)^5K(*ZdIg4U?1OFx=G!{oIHwD;Z;wwURSSK7WT@C z*MWH3Dc^>H;2O;9*TTOjs|U?fZBiT?m>$MS>hT2HZo6H${cC2)g}m@FkHM%RIvGrh zFF8OfE-mAGheAUkwt&lw8W6jW+qSagsj=#zd0aBx?%OEr1p6zhxp&Su=tKc1E5C!BAWs z2oLH95~Ajt1%ptsLhJHj)Sm>xpiGrFQ1UOnM#_Z5k$%lvOE3$90v9AlAuebvnMqJ2 z3jz}S@M{uOr<7glE=F+nMpn~)bSkNOE?p1UEB=4Y|8Mz!!2eVJ{}3KAdU)CiqtGba zERdmzorc+bboDxPJC}b^lMl;x2T{RK`lEjNHqQ#w-QIoSpr5# zVBPNIP<$vF3P%a1Lj|bnqh#Aq&2DxAhKp!f#{!ay?hAJufvr;EHhTLBJt-`JnIdpj zQYw*gw(=Ca53pIcUt}?fBZl!UZ*{Zj+fX3eCH+86s=YdlgLbQ%3XaJ>tO;u9@htQt z&ib2(JahKW0*0Xoj}*S|?41|kX24)O)zWV^J2VPgEqf5cD$kE%4X0JqX~}C-dN)Vv&$*u^E_l{fmh79n?F=ik@x~Xf z+-Mq-hgT27xBQ2Q2r2lWBzy#2H=dK2C%QMqRr&f010GtbbiFM$n-yZuj~Pt;&2e5y zcj-&NiR1y5xJr3LKllL8j|cAKvl(-xc3uIbezqP_HRa@!-7eeBvE)pl6?KEEC7;F+ zw?0D6<8s8gYq-wLVq^j|PL1|kPGtd}Yna?xM=Y6-I%H3XAH!mT(Zlj?e06d(iKG z_t%f9j;h0sS<~uW!Wf3dr$q_FH*%M3EK2rGE4cTcRp4}afFc-~eWslV=5@0fQCT+^ z9%b#0Q|h>tIii+UnI(3rX=!kY>tB{sf;xPMy3B4pLK+m@Zz@$j5ulilFi3G!TX}=_MgL%Uf%;_?WN?(tr~tX z$$=;1VSB9EOFX@F^Zmru%LDVhP-PHAT6x)>*97rAe^WFy4fH6@3D(F$HAGFFILhA8 zDrgr!F;wS~S@WSdgc)+R>(M!veGXrCt>PV?v`%YRH-SQvJzENB7>mmbDS7}#w6+P< zfl=-!HcLOcJme6h`4Bf0WgbK^I0%62y<*atTv`*}Lc+9ayB$g^Gl!-T`4W^saw}Sl z@?}kLA$n52v01e^}KLT^1R@x3r0+|jOES zDd+2_Veb)Es!K<;3x;8VdH_ci2VG7VfB54;xJ4PmT?PJ>+Vlq#k7db+jKcsJ#^3K^ zF}(s?RX)8)tgS8ahodYK!J1(h51u6Y|G0Q~)y=}9dRmxNu%ioAzcFg9WIj9%ongYI z_0!I{cK*0p#7M;dcO<_(c!~#yx*i=&KNJUNsMCY@*xeq4t7(EAJ7-uI4LfY@Pm}qyuU((kZLFIWEcBlJWC)@G&Lw~79Mu#F|8$GYq*%`pkV4i8 z3msF>ZHdQz!&>%+5L@Wp5;rfEgp+^I~=imG>6$1YgeP3MK*jxchiO-gdblTs{x%196{1^$kx- z3H-lR`Gam4gwX!kbxTA;I70}41BQ1U#^8v4o2-&K{HGFjQhSZ%77!G+Z= z_Hbc=h@b^(?>vp1OlKVnXc?2Uvmf|`3V5GEJr147TTN(&SV-XW;1~PCr|z5}LAE;C zObGl2?2FA8jn?A#Qc9(M?Ur-}8&@c%uOE8*JuosqTCh6XOQ{4x1#nG!e;&^(W;Z2c ziRM?`n}hRTnc(13skZp1uNc@Yd|m}{5Z*zYx1*7?Kp_9M3=ng{t<<9J$K9BVw>=!Clk{@w zASPZJXns)+tJzdSSQakm^?X6h5i2Bcc*;+}0PNL$JHIFHdQ1}val@W!A5>Bg`yC*v z5>b-*tR^XsW?2WG@5&r}%m*CMpjgv^sq6H6xxi&!#t<&EPaw+XRSO#tSJyeuwbg=2 zYt2zjsWv+N=+yu5V)O6lYZU(LM!s=uJ76D9J-SX-&?g+ z5_I%@8!+N=qODdV%Kt7Vy)8b>^<+Bw7(VI~l)wT@bukv9z;$rHSB(9cTMOLO zpd53d+S-M$xR0})LoLo)wnWz?EHxNj8-tMf&MQH>BfnaTJO*(L>RoGz1==Ea79_e% z_Et=*ogO}j2}x*{uYR^;dRo13C_-E^HZ#~-rb-T6wwKx@5GzROFGtmMblN9!2oTt~ zgkc9haZAB$eNtJk93YtYCnHTPBS)B?S=Ka9KX7iLr6!l(OpnrimL7;X$mV3i=G{4? zj!0_irby7tF~&W~0qs;O*QGf)w+cjuyJJuuA|aEHEEUtIn!sE<%Sdk zL;BeeVxn=l>l*&+FgA38NM|ls;32P_QrwBu3Lr!+4<$BA?ll|E9?hoUo8XzGz^4N8 zVV1YTMlx(-j2bA{i_V9*uxi(UCtY309U3om$#aqi9d>meAF1fQ0YIsE;V7%AyiheX z)E|^{$55~zPY)l5W-_KSIa{#84CIJ~831H%OKtlOJB@XRG5ReR7XGtkghZs+&;G@c z&{7~XIu(v)ve?{d#V+_dQs3xdfuf;s__PSGSMVh85Bxdk7Cm`|G~37M9r6ruX^Y9_ zpTpgdQ?f*y)xsjUnDnEx>Uv)&6z5`g!@-uV=DDSlCl+>IX&YBrV(|LCp zvh4syUOVs%m2Y5j#u4wUL&kVt(;SSv=@7Rf?^EQiBURVw8xG5XZsgd;;$2O__C`TB zjNAO7W7zOg<{)&B;N$*8P9sq*9LQRZM`VQvy$O&)R}19;sroK0fzDr)Tjx}u=$dL- zue(s!xg))D&8GYNqczQ74w>v1#5B@vO5oU5d z9(6-!^s}$WADyeTPwB`!N91P^1&RmPxKuvkmgzI}Ol7pa>6ekbx-jjKrzYRQO&J!R zPj~-xviE12%;%jd`9k>swFy2&Ou{v;(LM7>oB+*fL!e$={)6=vey=VnK2>iLBW9Ab zFWVp!-J|kB_5o2bbcwMW2-pwDudSF+*J-hGosQeKiYQKhbZI_icM_JF>@*T;8g`M7 z<~uilz0%L?P|>i27!0y4)y^Cw*{gXvI12M-;ToTt1uMPB${&99Loz?^W1mg@)8}X>FY16t5f2*?Gelvtk?P z;fwtuM*K;%M^m{zhCa;={Qp`%-z=@-=P^z1HbI8xj>kkOUUr1UJIeKsQ(q_2%3^*u$NUidDe;3)T=)qC_H`KSg5e^HKiN6+ z*4Q;fG5^WqPZhIKg&02}x>)BU3NGr=C9V)n@9<`EI+p4rezE^s)2}pKL@UH>qECt# zc-C^r|9Yb7|7$DpPu(N&dcyQbics_$^`^I~yth|i*1nAUUc;VUAAK-xMLzjDza?yb z{j;4XxLe3p4r)OpBrHt->eN5I?rX;@q8IQrgP?J=;WVek$nj9s^2yfIXg3Mm6z|>J zvT|kaG{-^F3KVBF*D<1xqU|ACT|ziK3DCmcuH|fN39)N%fn;4^LU*fUhjn%-dTyE7 z%y0ts_GWS%dc!0vZ8rJys266(KB8HR<%)(HoUGsq!jUFGGP+$M4ZGV_QqZ6%@M`YyH(u9&RbQO!E^WKF>S{kPt%ujB$@wLp5@JyDbasSH!C7u zXUdSFVE{w068vZPUjt>U_jS;&iNY-2sj~=!ZE$bmLwlFKrQgm$ZxHe3O*x(P-}T;1 z--glg;_cFdE3&ys>Ah-t?dmXzAwbCp%?;A64gR?Hoj8v>e{(EF)Nl=hS>k0Zs^yLG zDb5D3jn7W;ZyMTA_dGKwTo3Hy;%vqx_4RSD_ikw)|8<&YYi;k$n@FMXRspEVx>x8m za@zZo_K+%|*`jwqRb()apxzGD;(LIE(kT{O%VTrayJ>{${Tu61>5SEJ!p(87fR5bq z*!FmL#;&|D@4@qntJ7SYa&w&PK7=M-Q-v_)qdLr^{=E#%6_Pg$m$bU+oNE}hBS4)m zJoavc7MRuCNr`ioC|-Qi9oVn16`PMrioz3&U9Uq{5?fVXTIdnu!NIz-q20tZQ;=#I zD@XqLu3nixbsz(I((85UK=hWuhp^b7|8A>%ze7AKj-^i8SSeFf#PY|~lohuf&b0!Y z8OZP7ihygh-8bYabtp?-q&Ku*P0N&rya7o8$CWuZB8maP8-e+-e%w0`Lwip)o=abP z;wN-&ZhM}2#SE{=OfO+GLKLKX+2@axJ)<1}dlk;Th1pg|j+1db&SUd3nh{4J%W5V} z617GGP73&iOMJ;MQ-;wJNDP~legOJi{2K+d|Gt>M z3e~~i%YUS(JW6^U-WI+N;-Giaf(2b0zq<&7&bte`!*0N_5#G`SI@b}IGQ3Sq)2T78 z>N%~CGcBhU7zOLl#I5U(vG8_3vSV%}J!%KJw4vP_FIJM;bUZ9=IA_?D^4WM8N`O=I zLm8zt$z(p_H^w?s*SAj11S#I(t+j(sgh)$O` z#Cq%-axxfq5qu9;}X=v^mZ2U)F*u`n)}*6{^PJf%Dw9YHF< z&l~`bY z=%;?y1pwPji}v+1MtRsGI1Nn+`y;9!;1dF)V|`R-Sh|M}&i!6Nbt@SH;>=ljd4^jm z8I3XwA&h^{epzZW*bo&xxZkewN16KoW{s9U1#7HwY=nkYPV-ClYJit`mG~sQY#7_A zpRCf~{#{L4uEO2zGJcZ$9`2Tu5s zVOadBgN@z9Sd6>u;C#G>TJy`R(dpjU{B}JYb(NgO&kTzmORZ~qYRqQx zvGzUB=5uBxwdJWVdKY0>oM5{Wkp4#%ppT#hsC=sFHjRjD(}n?vbv+5wTfWSJ(`^?I~D}SY&pA_~h0) z!`J!GFz`-#?|JL@8dvN*g@ED$fsC%aQH}2v%)eZKd2L!gs|137eobyA@KKXB1tjGfnkrEhH` z>|QKtR!gtukk_gp3(^Y`I)U9Nt==@qJ_n0KRk?Miz8`i~>txKIL`!mv6eA$-CtB7hKreEle9oA;1%>*X+%~%KoL}bd~Eqgsazn_31piQ7u!Su7+(pUktAiebVm@IC2D<0Yfl&psn|lOsYwa+W`1C z?AfJ%qlffm(gO$tJ?2_~G==@q2z#VWieYvRV_5QT#0jYBS*bTmnWli~q=9>QVXg|G z<=8DlZP)HAcC5ENftyz9BN&va)`fD*qJfVj6;?j!KpmGu%XV2|1uvV;UgEr0#jR9GINx2&2)S@ zIhCZG74Jr`TYNWCKXpns`2hB@A7-`ecre^+HtK2n`Fqkoe5B~^eJ^eL%^hIe_ir-e zkxpnaD$Gs?{joAMV%D16r z!v7S6RWr#BKm<#M6ei4+Y8BVUl-kaw@JbwRG=+;LuEJ*CFV;YYeQ~cd5-eSbbvShK zZC`UtBi%`i>A6z_5?qXcU#v@$ueM}__DnC+Qu@9v%J2a_2 zYE|lD^n@14RCxNnyEcB0bAtD8wb1@-{9)Ya2Yn&UjU0B-XPj(Qe)3qkyY!iP=z@+GO&k(v&wm)Gvu+9WKGZI7Jm|>oGh85m$ z&R%Yn{7)QXNt%p&H)Bj1jqZ479(HFpOWRqRnL9XW>M~)-ILCOahw_|EB&!ouF;k-H z#ET5=qcoBs+}8dc?WR!7{@FYGri{_S?;37ZK)mz!4;VVa75wFS(Z5WVRwm!iPWxx! zlPptdiNsSyKU@xjFu&Ff#8e7LtRiD2zZ zYm?|?Z0Y)h5~zuqW<$SmRK8W^5vTf$E{?aW35@uOM*xKS$+}40<;FxhN0ZKnXlDl| z4qeNEq1fT(Mr*zKL9Lhxa%-=g4}UdZ%mn??Q9Zqwb{WcP0GUATl;l&?dRq zLwTu zbu@U!!&(f-NEuK}7Cu?81L^eoq!(V~Ov1u;#+Yu=-3)pjWnX5;7v4%k2=45INqE7t zu)v1h96!u0@?qGsZF>~&-kj)dey88K212_(q}tn=`!v$=pYoYxY~4A$*tQsK>!SrA z%M?Ip6WB=xpKt*Q~th*N3Cy$=M@l8x#IU@HYuwndFzS9EmI)K8&{>Sl9ZP$3neFEJFrX=CXf%G` zxW>6v1CHFs*}5fg$ak~nqCT#G@bK5m6`oq6-`2I;M1X<~v!0f`BFo&c4A z%wOY|5x3R!&;4`ng8sDl9b1mtK{OZX$ki)(1i?cIS$bTuYbyb}?G#QAH-uD=VebYJ3j;+Xg@bS=q zW!t`CgtlG{<2*t_(|8y%a;n)gpgw%uavXu+ib=8&-n4{n?8gY+#BD|-Z8P1703?fi ziNtf=Bh!DCJGioct4RF0DS3xhR@dzmT@6l#v$HZ70!$Uhh>Bi?`JWil65XholNeC5@9 zg=?#?JelqTlTOaz2o7$ng#Hbvr|a)4xznC;FEP+V&+G*oZT!|YTUkwe&HMP_ysv-# zs?xRxX66jEKbf1XRt)c|MnUPek=3Sb$Jpv!8;;tHcx}?7ybjupp>vcRBATW<;#y$L z(Br8kz8M$aVF*`3TO-ss6(osg$CR@3au0ApwaduItI#!G# zbVs$$JBfDdB<_Ey1T&we8t8Yi38bI1HT{PD{+N|f4Bn^cA=?fxoRBG6wH>64nxFM< z1+sm$dwXbkqT8Y1dlRwY>v=pGHeB&8bQ;kx%Qm#3Gp;D`7w zVGplW5~0wWq4DDn@dB!QJnm2IwA=3hjU0{5{Gxy?3jB_<;r_$f(1vs`ht#M16<+kt z%lOW;W3zku+<6(QSDO*q;kiXaXgF>??q1~STdG#FmZiq8$YF>s8YjQvEn!0$Twg*Q z*9=Be+PyCN38$`AF;J_st34Q?IIcz;qN6y}(xgu(I-cf%!LkeTs^y8Pj2K?p5h-72 zs4g`dy3o?**_&z=C>aCON)TqG3Bq;-)IZZ^4ws%wQ%A~WcT2#RHQ?KWcfH=Y+CVo% zn)!;Ajqw`;`E~+DUp#%%@4?$Bl(cr74Ko=RBShDLTA;*rxp`F8HN-?C{_uzyc)&nD;L zxfiG5-`g^9{V*r8T$}tsEW*Kz@>{UfLJma+{kVUAZn+Roh7D+)tZ5VK5;g56X+`W( z@W_eOKfBYnafk)Npx92sPsY-9dD4M8o6ceSVSye-g8}?aIHR;3u{A}#-8w4Gyla!e zIK1#Ml&u)_DrUY|d|-U5xw*SOL1>Ou{Qnb;Yu7;9_(S+7#;U#vk`o1fF*lQ6IY$g#lRbn3?$LUy+cIWn(W``P4usL}U7utwik^qyBH@3pH5kA1IQ?`IR7mVN;7kEMSJ^N6j=zlRg^ zrIvBf)z+x77L^b8o}KCI1ckro~a zZEr5a$Hjo3DrC+z2eALJQLThNxIET063q!>r>r__)fIOap-*~r;I?$roZqy*^{p0_}>n=Bu^5*v3J>J~^R4#m(PbKqvZj>^8w6JF4 zsxKX~a1d9a_j9h&!`3Z@_gyO$YU6l12?<7Dj?O~DkDc)^#RSK$?efQ->yTPY*q?*E zMsAleR8-t%*+mCeCi%tpkOMKAv0_J+xN8+&-$Lp!XE;Odlre~u?u-47rG0gETG+Tk zrxUYN>2_f45>m@bYq+63&PHibmSm__=Zjm2fh%irkJ-_WOBE-l1;1G?Z^X3OLey!_>A z9L`z)63m1RZ~8&0<&hcdnHoU3m{P9YDqp!*rDPeKG9AhJ ztsK{Fmq)paFI~Cq=jZvQA3Xup-#(kQX4{vkA&8Tp&!pM(pxFW$H*J8TD)5+TBHjwB& z(7gERX4^>m89Q3pzH)7PTj1hR=lEAfogL($P%X5{&LEC0$DbHmj(>e@X_v4@t<5i) zErFZBgts4snIdei9oa4^2CcTGmGY!>%J1DQp?jURzO@pnGuoQnE-7Y(n>KA@WvlPTS)7+ z?HZunefjb*=~0v~CxfR7r3%H8@ICdx(#o59*<50;m7R0mk4^o2zI|sQe9YR%lKy;}x+(5)51-}|UjwX~!{f1M_86+h6=$9?di%2^jC4C9Iq}dBhm`(>(r=$gwXDsI z2@hNr`^t&eti1kEy?ak|^bg@$VH?DcVBihuIXUxhr&l?d^e-?UZb+=9JwGdm9y9g( za46qG#*OUgdd*y>Lj82bXv{c9#S^=AA+nRVn^Z~|c+FRSOB!hHlr=ZDgUd&3!`yRb zGNEmQT*HiR7TPuN<=7vE#u9F1oSTP>Gr`Pi>4qO(-Z*U9%Sg>^BV%4wxYwT199Wz0 zSoWXr@D=wZ%g;9sT=>g^GCZ(S_$^iN8&>PGn9I zn&6;sv)e&&-jV&-pFi}wp%wi3I9+>p!L_4e^e6fFN{KRa+Ys>Pv;!6KwaCTdy*brs ze#_W1_)vRuIz_J#((Cr8Z{*<1uem6g!=CnL*tw95-7g7~%k0gRN1tAR@jz``oFDG^ z9m>fWZQesiHbBP-Z=`GEg?o?a8GN+8iHyt=ow*n*8M_K!55J~~F6ME8S=z`CBd6Je zHbuK*&)<|D0_#&A0Dk*xxpX`*mu;~ZfZzRUHr;Mn`AQNt;E0gt&9c{f7p*35mKLKc z{EnzB!Rw^svSLITdQjNg1bpyt61JKFm-P!SXXu}{esfpZtAe1yc2{I5F%%5m^ur(& z3mxX2O5z}NI|QU%`m%}-;h*a4Ex&ZU_N!{1lJTYLnf8^bV}77A+u$#+N_j+Gx&fW= zq~Jeg3|xjrlUSY)Z8*yzwvls)w^`P;Qe%ELuWjeJdvv!%5%ex2R?1G!X{xu{&Mpfi zKUQKDv7j`sTVBQ@x_)%tCFK6ZV!|?p0W>V+*6`mJIHYYUcO60J@G%#vLw&v&e>pmn z>>Z^H)$Uf>XiphSS?4++_hQl_!}xxw^rP+%umN}N*u6Sp4!dsE@#qSR2?`Rf5$@ldWDXMqFusdQcm zq(QI?em=<2&5|yH^%A`ab!e7FmwZih6;8(?2YP#0rcaQA#`NgmBo5Ae0?^!;`R+!` zV;)mtY?U61(5H-bL!?z^4C59U{d`h<#PVKT)Kn-{VHkhpadYm`YnEa+Gnbq1puCxL z^A|SrWL$lX;liOh=cnj`3gFMI+vH(&pWNOFssPguB4*K>0(^87L6T?0q zm_*;ba{WIC{fkjSO@Xa=7lwh8o)#@*R1@#ap4wwqE5*jIuCIaIQ8%8wKRa{qI~O0GguU?-x(FU0tbd}zU-oq#lN@$cUr8;rl~ia)7Y{##2DFna z)y5@A1&t0a+Bq6`3jvz;9}fDRQnw$EwfErQ&GgB|Olw6pnaQO1@Hk9tBWY7d3|3vH z4z}r-9D-~|_HF0fRmNDDs=*E~n@tM~TDWB_1`3~rb`3MP^A0y1?!#R_x19n!{xgf< zhniv3kvF=sm#h^`SEbD3$g&8D)iAI-kHPnA6;59L%Y}hyt1uk+%e%rH%vpbf@Wg7a zDemNL|Lom}j!OuXJu9w!?S(ITG2&U}9A<}}@qKB|!U=ettc7IY-C~d&tw&agNn;SC zd066YxUyz^f<|QH64rx!+>K<4k|{GY7=*^e%>#x_`AO%3?dVZh8$o=Kd=L=q)2N6=)ta$g z&V?S{j}R4?B_O0cD`k$2p$f4f0Me-unw>lqm03mYW=xrk^qYi7M~LS~hse5*#VD64 zj4nmT(=*Mwrx9VDf^9~gFLXPyz3!0(B~@rDE12y!SOT6LypYGBc2xe4)5+aW*#q46 zLZ#ZfPOvY(L;`E`vp|RND-6Ma64X<4+{o=5=|D&^qhyje_ z)hF0>WhDx{nFT#?J}D&e(0p4DzTuUTTlSt)oscdWCVohnbV^eT2V z>NS5V)W^M8Ji!NA{Q7xO{(lv^<%9=igwFL$PrQ?(=>F$+DfBT>6(5AWEO0)-DNr*;P zG^H|!^X*x7y*ukj2nF7|Ro;6+o(&D_e$JP0%+y7-__pZFS~Ab=kRdGztjnc5W!(PG zrNj@|%2QY)2X$oO8ZhRdR+xV+s(j%{%oE6p6+33}T3Xsb$r@3F9X(&_fHaY1@PoEx{R zyhew;I%pH#R>HZ%M$2fHHASN=(@E#_(IpmHt%ON#qyb_!DT|2)RFYx-pwBo}0%Jfh zjiSS({(UQgwTO>hhie$JN!59WFCF{7?Ao`Ue6$jmV8R7j*ZnYEJg#-)Go(j6Fy4e}+YARK!0> z84(m=(7F7n81^29dWnI{vK*7n#pAw>?sZM$-z6;d{{_X}UzCrd(sq^-wUxhK04B*O z9U^o_2Q!H_4u-g7FI@u7v4>?;_f0qgKk!v{5|}A;e3{UfqqEK|Ja|q^bv@-N?fXH6 z+J>y#1fb^8GLCpv?R6u z3iZuOGvTtm;P;ypV;r|W9DL|pmM+k{pQS7im@H0?lj~NN?8}e48I}}6ti-poMAvP| z#Lh7(ykmUGPAx%()2$3O-~EP!>K&Q=&fN@he>M5B-}LcpJm^v1TVEuw_`E#}NRHO# zmCDBByW<;RKI-R^-vO>O+%i4CggDj}V*1l4+5rTAYC!hGo*Dvop4P zGT&$PNx{$X!|=2RQLZ_4;dX+DZ@M8USw=hO$86KQlZUk-Hvu-XM)iHBoM8FYAf2o) z?mJ&`ju$)hmM3S!GK=8a%*s*KZRRJBSiBcsi4j1XPUS70Kz1l8ptb|#v!nXBIA8g( z0zP)m^5C_lyv8u)Y%rsn)7_j)QjJ?V%#eMVh=U=y&f*dR?BWV*TWVHcUlYQKMs#d# z?i{XMP5k~>E{Pp{J!T9A{XApRVM>|ayq#spL;w!SVuqdEp<4Ct)RMHY-K(KKlx){< zZvS_45MyK7094@U?4X`twygIS<0cusy*L#*j&~O)N#F5`>oEH~s3+Cx=Juj=z1;p> zk_#a!Rg}vs2;xxS$wc9lI8}S-UU={@we$5vf5U$Cr1P%#s2FtPaPg!+7+Cxm<5a43 zsD0wRh28HGn8^X&?2%fNL9VW*4I|7iNM4Wm7@a+?lW!j6+6x+%$7 z6U36OM1L)9r_w0abSNKM2^`Oc2#%6~d=2r_FH&F+>lj}L9iFSve1T-Hwx3Zl@GvUL zL~+qt%%WEHQ>WxMijzZNvdK-0^q*kM_t8AIYzTPTA3wG8#lSraYpMLIw%|M-q21_M zib*!@1VBS?^j3jSBPWUc_^k?iXv=d$a`CbtE#KNz9#`!rs2FS1iTahE5|0@Z%NW~4 zWYZ5ao!#Gec9eu6#bA(sOC-N=r(){{$h4Y_7cCGEho`89uv51Ptn5rosjpWbc*6Ul z-^~u>!a4@-7$_e{dPV;8b7uy{q%v-J?^rI|g}CK3m-G!wtG>&K#pj1{Abtcd?A&8^ zEJ3}?15e*}^lfey!|=_!mQ)+DTN$h&k>6RaY@c>MvUOro{qISo%N5gdTu4-Dw9V>5-e;Q{wv_2`;Hp8>*cm`1=SQ1{ z*r4AuHlCxc830c@8%85AvQCpD_vq3#PQYD0853`;w^am)F*l!-aa(lh3WJBf8i zUcNZw&_V{iD%z)HSiFp{H1trWcHds+8vGuSD~_D>pm^>tk@G&WEL2f^ixo@xsKR)A zh`W}r7NPX!R@G>9bJ(t_t(XZ?R8pbF$K90R0r$9YW#UdsJkAY$fYQygQ!@37XXC`; znt)PaHOW_X;5A1wJAqplX`zVaM$GQ#6Z@(;7mFoVM|ZV^k5_?umvwbx=CyVw<5$2pGttX$5@TKM!+RF79k$hm+(dB>@qAwdz~TQign+6 zkAOI!kX>tdm?o-tf#^u%v{A}oxGTl&7?01WO%CF?-7z$iPp9|;mUbMqwD;$y4HbnK?CA`J)mh%Ma^an}OQSCqejM=Ad5@gKzi+T!^e2mp({w zVT~^k`Km&RrlAKSomJtMX*=79oOZC=rJPPwCW>`|vM041dAu^UZ7g}rEUCi2W+A{* z_^A*#Lh#+~%*&o3VO~=VTp2)uro##YVnhXI%49X%Y8ZeMO!jB%#Q6%!vUH>391l?D z(2B0)os>iJnoQoh$F!)Q9-XaiIi3RPasA_QY@1G-&bPh{0hj%e!&+&X3}QGNksAHF zA@NMlT&0g0%F$D~muN>O#Wf)$shRScBK+-)k&n?zyNA;XHXCig0~^1~x_EubmYB?4 zv96w`)CB zrM;rsNgz?~^onh)|g`l;JgPaC3(jtc0mKOZMLYYPhpEf__s#kR*r+ z3f_u+aj89J48@aN(%2Y{;on*K?5aLCwwUuCW{bjGkNpxD^|w&* zrInqOBIA>iOZ*#w$ri4g#p0>YLX_Z4dT1$2Gw>_zQt-De(<8V8$@n=+$I$pc5VgST z^zBY2 zyu0nT>`|t1zRC>c;egomojQ){juACf9JcxX9@s?-xtsW!SDb8$$mD7b1J?o_IcUC1 zU-pCmrEI#mPZ19HNnDnxgeplRbVv4()1A@Z#L#0onEz6lfLr8zVDMuP)t&{3t-S&f zff-mg%)IVLuLstee42H2x=pa7X90TV>8_Kzrzobh?K01lpPDXL2UgN5i=!b}kF1S0 z#Yg(G5EP} zcy2xzK*MhgiC;tZ8qutlJ=;V419=8~mk8eRMmCp!Oc5Xpk{+-#5EZ#chCKI@VhYd7Lsv1KXk*_i+oKPUNULFBNPLp~@TBdb$HQagN{f zsfX|sY1f%!Bfc14?llz|lYeIE!}l)<{R%hZwUn*=RdJ`j9l@VxL4V;H9Y^t@cAACu z#gd%HazxB%E`nn~%-!XClOAEVEf!?kQ?|@KEbxq#xgeIEO&LWP`q>tjsb@p1Qgus9 zAb6zdODNuhF>A_?4J>& z#g`C%%aUzj2a0Pg`TBR5${a=a!_Bytb6(H!2~>sV%9mETGxuyE5L;KAN%1R2rAigT&H@&fyq>{d{P-V+`L*9xn5A)+=9t<)y-MV?D+<D_faP2X2SofDWhjgW*x>C;vqe4g*oj-`~+Lu+L17FMdz_c?`&wV zD+2t&Ti~DW$a5={j{{R=J2iHrs{)juH zjf+@gU!FHa?yi;xsVdb@rzXX@sWCch2yo9E*W;B{Y%TnhB2$(wL44pUr*1Qg*5w8q zbH{6*#dTC1WCStBdbKvw`t1;%LbCHaO>r`Loi%f>+56&VjI8?}Yz>jUIr0X(`-%Pj z0gg|MXu$Q4Z)h!W@@{L=Z8rO;B_)r+kK=l`3VC2{eF-+(g0&rO*Xrt#>3(cXdo ztm6~h=GCQ#9%nRz9{?lMv67=WqMm_nJ0A6uRY6I_b@Webd66j)Q1nR~-g?&kdL0(f+0?;-oN2omu(nSC>YmtgY!Q>3}Rk~^}>>u(V3kG!{#4e@#4 zqw0E@Qr=QA3wR$;6}710@t?I(c9$zxEDUp@+gVVx@9WJfhWHU`lt0Z*7pOj?H8q)8 z?V@($l3I5=3`=((2ia(#my#Ik$v`dDKbiHRUsL?gQhYJ^*SGLG|NSYVyA|F`4U$iE z>RM3e!?N*w84^NaaZht07UBc+N>kjHfy#hjeedm@*t;WwmH-busp*kYk%8@9!Tz$d z=L%N%Hp)1##NP=;cew(#Cc_c^ojb+K3fli>XcCc_O{bc{E-7a^PvZnGQHWB-R$@hf z*hzvs2cw+~Q><<;Avs*xMB@ip5a&N@{kKbAW-)c}ko@exAI?%sTQ!fSUyOnOihNsT zs`CfrbCS_zOWr^m0>Ck@j}}aKQRr3vdju@PE*1p>H^1&>JrEERGv-f_`5C7D(WgVY z;IqUtnIs3lRp@hw#RoA`oXHXRiwzDZXKm17No&X9}1CM$6YEz z$JRe&j0UvavCNJ*Jd(2-aH*YqUDK&Yz$G4Bt#-yw*=suU7!-j{Wh<58u^tyaV7F%! zToYS0k3M+yxcl~6BsKKwk0xGQu2V@XD`fa3Yi^6n5TkPQ(C3i7(YkgeE~juS&y__s zF6xRbPPJw(&@+75(*b&f!<;=(JD%i{${iWPvC}1WzZ>g0>4-DJph?$XkEB0C(-e(1 zvL1@-(jefsp2N%AQ~sDsq%ucPHVNydx6xwf{#Sek*4Y}pQ%C!ydqYz|)mIDV#`BZ* zBqG4uJ?U%$+s^^t<@tgN*OL8c&zhPoFj)n?8de}+st~_Q$3E>jac;Cu%%S2*#RZnY zwjntoT>-S%PvTiJHcSNmqkWN<=X(1HB(de9|x z(-pQbT>W-f+=Kt~^bG+;wD&4`INcu>=(B`Vd|_a!^LZW?m9{r*!NMnOthVF)$$9b{ zsd9JBvJ`3lBcYiJ0+4YT{Z+;sS(+GF!vBEXOf@X>7&38+f)Sq@sTFo@d|zK|z-Ols zE3Ffb7d2OC+?$UiYt99l?LRl2Vh@lts;U|B08kwaCNi>gM^Ip+i(k;nMAER$v$r-o z873*fFpyA5yf))ykT*QB{>V%8nlHvQhuEc@LV zpeH{lkfE`frA7Y6W>&KwNUOv<4q#|v)?GBw16eCcCE_uee1(4wjlJe+;JnpO`K2|N zAggQBj{PyJ(x85dvfGWCI`b*}@vrsm>_G+d?f89;|Lgi}APgG3bbX^^D;N-Hn}-0c zi@}Kxi`jC>ocs$ZoZOOY+OfKypHpSH4*WrwA9TZ4bf{HBq*?bSM5=wgV`BpV@Ljj9 zYY5z*_m8fz!vDYT#D4fnQIMU>w0E_@0A~ z@N&q%t*i3L!KB)Y>9jw*QC}x8SnoQJonaUO}daJtnU{;u9vvZ*= zX`S`%W${y1nnauWww4rDPeAcvBJuDqt6}Oxs#E7%;60c8x+q7OAPgsg>K@!i?}%P#vFe z&EUMD={r#?eRg$lx_Di+FyRfT8ju2(MWaNKQ+cpKHmh_WTF^_&HVE_buU^w-0R!vv zwmAaqa{9o}9mfSxQ12+0Ba+&K;eBT0XV z3wqdkw$D4R<`21ji4(GvFE(6{5vw=Ob&8Bzi(gK>cL1lY?QS0S%|$P#td8DMl^JB#Sc;hLXo z)R=`vHbXF?&NpjKL|-!NVUK=ZYDp({z#Q2Nw?4zllwVsgBqU@?#erxg)F@C47R#M| z9`v!>ozWUIT|uWc%4ynB6L)^Lo@idjadO10bP8T3qdtVu|x33$=tP96H^fh%c zKn1J=@r?KZ6jdX=$bcR%N4};aRhceL>KyEM^Ig`(oNkaX)QfeY(>Xo+BPCz!vkKGF zRn?)I-FX9sd}CYSGtXI4bhXmHi`EnMghfFQ0h67}Jcp=@;nDHYdAlI39iJj5PCAod zws)aj`LRk{L6#FkvMNf|ieP;H59tFv$Z{Aufg@iSci)Rx^k{DdZ?vNEd_&i<@XIpE zU-kwtkk#9^Ac1B7`YUe4$E!9b?Oj+i(PXBm5dS3Y&}Vt57{yTwogKZ9@5tGuQ&t3s zb>Vyp9`C}VZ4iR^UM;mFP>MOGt`)6Au?1^`&1>KlJuB2N%n2!aL(tEcSMX;j_1ibo zicCxEdlAx8(wGc^58zrDRXJ=j#C%pH=1$GjFh^b!$B<^Nq~8SPDcMnN4{}<*yjr! zn$>Qn)9QziELS|e2kFj`IQ%|}K$W#at_wbm6NL+MrbRzY)e@;Y)3lL)@~D|Q!lxNp zynC5LHeRPU1>0HyuxTnR%J{&`TmD&& z+)S-sYJ_C170Eh#wIblMm_esz;#akn*KfLfSt1lW6 z@9-f*-*r`ToECRFiVg1R>l7xemTWV7o1?s7hR18l^uFled{$dv+=VB3JlYEV$QvQ9 zgm^AmOOVa@yV@<#NlRx@dNw17A(9~!eD*WiYL;|aKEk$#-PVs;Mw*#9?y!Xn1^aF? zaZ3kWb*OAIhYBt?E@I4d#1sqP_7@)5Z>rK4vPbNf>V{WsFoek&ox?C{>3SCAHaV*V zVDS|%$o4(yRmG^(lLPkSgv^7NE{Kg1A?Xf|5_qnic_;z261L~8H)T}VtP`}0l`K>$ z#WA-A`0?Fdlch9JnLOXlmw)Cr2q;cA$UqJ5pa!TJkDh-~xN)Xu$9fG@??p(gwS#&K z_Bd7AMVu+5Op%H}>zhZ$BKBjix0~v?m4Y$lLu9Qkpz{|(n2yUG17{4b^el|x+dDN+RS04{wK+X16#9kJZbVm7iBF>AHmJs2xTV%umr=maX8E{k-am`` zw6FqBtlUSD!)I;Y1E;a0?dnIWztT#FmyWhI75$*D00JrqC@XFIm#OGMd1|-Ci z?CN4(>`Mx$FG=Eg8ixSY06qHqj0H~V!mtLfnNWXCu{;>C<@7_HI-@F+gBs&FF5Q>M zk=aKtPAGH-D}%0RG@x?WF~``fK--kvuuW#O#mLv>&r{$e8*&(OW9vl68|^p|cN_Gz zV0gR2A14(9By-~?Y#8O*80{ntU3A#+{9V*%HN8jdZ7_#TRFZG~j=_@?U{!jK^ZQdM zGbA4D)23wN$(UN}6BamhH)5}0{KMMUiyk1X@1%+IBq@-tr)Lr^u5#0=1-U=bz&yJA zq8=|GfrtZVg2+;eR{VlU9E+#PR10Q z#-+()&|w0{C*)-kI=0)5#;&_e2y!dAN^F|{AOx#>Fz{pqm6J*gyBSHXs~tuwjKZ*3 zd;`!Mg?oObxq873G}>f%#iyg3rwrGvgiF+CPfhaoEXP-zT}Te1ivr(`1+ws7dSCC% z8eA6y6&Mi-gzXw%YMjc^Z*Kh;qc53G%3unq@!Rh;fp33i?XdPAmqd-nC@xmCXL*!}nSt6J){H zSXnN@9UueFPb1oMJc}h{p^fW5QbhXO$^4U@=4|*PO^nhX)7a=+ zoupm)K0*m28){ZelP2+Ry;!z)HSuh2O=O~A+u*<01(_)Lj$Eo(F+`M|7Q~x^A)13| zrDsaR54R}zm9ixCO|=cHe^$bcgJN0oOdonK**2~R!%_<8p>at%kce%0@SW2lcCrvI z`-rgF|FHQQaEC}K?} z8Om>u9*(|C%kmd66E;eaY6akpHjBcqkzTgu*?s<%^mY>xPIF9-f3){x?>-jEUQG&P zCQZszQnndh{DRB3A}}2VRr3eO_+c=mM2&hY3<~`#T~Zg|4B{z@Sss=4tJPrC6#T#KG>=@|4O3OY=tDfW5#tdI)q=bW`C z=CkU1vFekEE>Z#<_xM)O@=JK23Sj*Zr-A&nMYB z|07WR0($h(+ETo(ath#hjs2HFJ#KY;vc;$QM_6UI|pGRgO^`ltR1`+%;w z+s5h_BNNZlApmNL;}%hiN#;Ozp}>b|`bEzjfhEqPzhpuz&{AbbGVgN3#bceZ!)Z~7 zbcLerR5*p+nf>AOZvZO1y01j4H4qAT-=+PFUpOVk;q9pNvl1ly{%NKnBZE(M+GhS= zV2TIgL+!17;+9g{j9ngV&BHvc66utP0AkHd?)P_af0d-kkAvrhUWzdX-jeV=>d2z! z*MH_aJsg;p)Kd|dR?3P!i$%GJ#f7S+q$yiLnK}FqqvgpXJMlXU8TU8JWy$3#Fu|iG zR`_vV8P%baB4#`Q(T)`db>t^nbXH9dj;6dtyCLLFT3ybF5uFMfaE?co6vQe`i&GZ4%G%g?* zMR{vPg*vG59NgUm1}z%=P}A`+UfBK?Kzt6-aRszx$?~z0-b>4t;bAFl@G?4O6)$kv z9sIfBa2LnyPL$k4@!F3$1{wM+;AWX#Vl|GfAF_IhJ$t23EP<|}0z*rhBwQ$wAKQGS z(FhrH1%7FoLTqrdOZ1t=J@-U=dwO(7A6{P3EENp#>~{uhm3!p@8-$OT6BfN39Q2d) z)w5hj=|roPgmR*~X6Z`uvJ^qhd0nvusovT;*El;z>2KQBSjnKp;Jxu@g(giN)AkV0 zO2s{y3X&66Vg8T@-5cJc41C&qumrmE5}f=Z;GJEKQ-G6`vh;h3C1Kj~;TxhN;EmrC z=4KT(HCLo&$jLvU>?^SjJuiP^-y&X^)lE5{)tbcc<-T)yR90Ne84@@rQApYpaTnXH zy0cLr=V7^37QNG*Uqv*}xk%`~`8L51)YG$$rd~L(0@nPZK);+sr^plTVsyklh3WUe z$g%a}lCCMLMnaZ(@8~-7=G?bvoZYPj=b5&`Z97Ug&_(jIs$b6SU>_{HxRmT}1LcTfx&yWy1|V0f|f8Y`{=suSk%F+gA$N+!OZn{6N{5$ zOTG)dVdDHPv|Mvz^Zieph$M~)^Q_0BXz8rWBA2|?c#9h1)I1p7J@NC~aMOm86f=~> z)2x2cBi>kzd{|~TlOS6&l^}CB#b@|Ig)Y@`U}zXbkoPNI;Nt;!a$)g4fy&% zLBq&>>}^Whx8UBbhaoybe99i?Q44jPYs9szLCwbP>_WK08QgA`QIRlNC}{@P36 zLNyikeDFgCVFH|$hIxjgCUh7QBOrYC{0`@9b1>?@dL&qf$pH%c3HiTV33S=Rl_)w~ zY47cv^&Wr%^d@Z@WD3Z=A)JiGNF8`f>2$%C#cpi0#whb2Vd`F^$<;xfx zTShiO;P`0Jak{~ZdoNTXIj?jo%%PJXl%^aMj>0GtgV`1g`$pu<;vai4RcA3vHjm$k zy!)tS6$)56N9&BsYhZF(OrIt9_O~ZgH(H`zmb5mc9qDbB+#Q>UWr0VxJJ;JnSfcCSUg(^Ut0wEtqft%XK5s&1gf zE-^u|t@RtfRMXYd1FpI7_OdXg@YEekZz_BR9($u1TlSU`lDMMn;Z#JN=x>y8rJthB z@M)T`izVjKCr+*`x~Eg}UkOL&@}hov%j<5?kX)bFlp>eNG7(ql#rT959Kw}%SJtnJ zvsRzwLPvmyPp!|$csQ4j7IBw&`*Z!JccsHkk(6|WwlPduGJo4U3io4#aTnRF*@_cQ z5|+&fg$JO#nNY8v`e8eg$h{-JFv)dc4fqNml5f<@8M|B|VzLyy$WylA|N6q_TT)(b z)tr_ye}4YJd20?l;TCf3TgV%wnmX`S`)@knjVl#@<)MrC?-E)TOqX9kB}+7>nL@^N z7xsE!?zd#-6w|3h$~3^NI`m6jjG~_P=4xGSv4@zCG(-I~NX#ag<~?p^s0GC+HPi_P!@BdFhl!r>n~-{r6Pa4reZbB% zI|{o^tcRa|d3~3+zu(Nj4X?JYw`cpqaO)wa5gpKArjQTmYHo*R*gk{H_N^=X#Lj-8 zZh2g_g!@VB!k(;T5kM$)xLtT2hk%;(xS%=NkpZfRiLfh)?+GuFF{03Y6n9X3EWumb zyR9{PAC<=8Uykbmz1~01AJTLN_l=G~vs>U$4Y&)@X|>`IbWXpH$lSkL8VU77F(np> zx;t3az{etP8L|+2M7A@*OxmrVos;Q`dO`1D3^41A>w)JeHitDSqhnNmgGIUa^tQ6- z^r}xaz- zN7Kty55o0|U1d+g87Jx}S`6Yo z(KX_ze1ml6UCStK9y3Q-eF2u*4v>lff{*_kkOc{gXWhku7l?|^JG?>aQcutmt)kw; z#af#4i|Bj_r3q7l5hweKn{mq4Kg4h$I5s5kmmBFbG`r`uW0WkEOY}kkhOul8>}r1Xxg3^-LFsQKB66UWoW{z~1d+J(qcg1-}5GE6gSbFAec^^a>)tqF}LmSN>Jp*WT@KngVT0@QrmKDRvaA zN#32Zn)TD&zH6b7pqGao0(WZI1 zhD}oy7n(0T30LSupMejftzeH4?sL`&tA>i3uzmZF<%x{eX16*r0HhbpTM&@klWj@m z+f;xSZ(Uy_GmQkm7i`hxP3(ahctk zrLFOZarP2ZCd$ZsT`}ScMd@Afi{MJtPxpemv{BrPt?05ij$}0p5l`g4jo!>4X~FSs z!%Fi2qf2n@SRX#YtIu>HdbMYGr7~#2t48jDF~k!uHL0x_O#C;exe68jh|(2bZz~cV z{rrTB&nCr(qax!&N((L7RnNXX?kt`Jqr$#--E7bpLG4E_tOjmWb1rf=f@arb@A%*I z7aJ$srX%k3=7;R7!`OKNB_an9eOyMtJ?r6VMp+=S-Nlsk0d#p@Yq!e|>Qhdst zs!GElW_Vje*P}D{HmBc@^o~g3HA~`# zZOMpsUwu9*K(!&iVE~lSF?8|zen2uRH+MQ;jh?WO{x5K`3#JlZsJ5W$d--eo60d|a`|#==Jr6=q%tn~ZmaI+Z#Y=*`}N{99Ky@382S z9X5>`x@fu}C0aE=+XRjLZ@Qdfmu!)}0=dm_%u2}E|C5^hmIy;QTZZ1N&Pj6E_$P0a z1WkBIbP+6y4_-aQZ(wxNyuGvIko-{Zs<`;G-ggS0Ra@G|MZ*cWfmIOJ3dhyc&T-{N zo?Pq@L^0JaFiH845<2Mu)mbz z!k=jC>9v23cGj51worc)R!<@OkhB^P|83$2o8TV+uOYNglyEPbZo-q z!gsx)cQ(CydVu1P-iN`6qz;@sGKDXj%5DA63rMKF25AxeeER)>QP=-<^vLF|f5IAy zAxoq`Y=%9Urjy-djt}Xq&-?N&2)nV;^Vnvo4|93s-qA%RdS*kv+&6XZxaKHW60?8L z-W=WDBW1=mBD-gr;N5F5o0IJDt#^qc(144fS?2}vpFS$9qK5MO5R%X4r7AvOW-{pB zG)C^pbkPhJ{?bM9NVWL4uKDAwK(wEqsczyNQG^)P{YbPiW{nB32xX- z2eYS`EH-oKKM9ckBAv4DE3O(-v!^E&RcM0B{gcLp%X^ZScQkXxn8T*8Yo3SU8?+!* zhRSONs^E1_pie^nevR!Telb3+u@FV@wmvlFV{1}Zm5E%<0k*HwjEATx2D;9eEep-c z+FtK;8Z{jO+nXneP|``I?Mhj9;$|j37-Y088^470`;2IfDB5F65f9@wl) zbzSv*HiO8MD~ET<1qKZQdle|?=~XbWfYVySSnMZ9Cwj|#_z-KKu5_3`qVLzojE&kW z`zn67p^iSdIp)eB?jD_;eo$n^miF;UmqLNThKYUze*7g-z*P(=pQD_H3@EjS9nC~; zH}9w@+caXNH_3T@1zDir-3>zVr$<9p9QMPtcN|-nU{@%#{i?=UPk^WXGmfDpVsmR6 zLG@V$mgJO>`ij6_r=Pz*){%Sa8Fl~W@_B|Uk-M&93}5c8VNAiXqg}}&Z=r0kPf?ix zK!nO_V)33MVXJ>FB(8(PYB&UO2zO{6>W?l=Q0{1?acjQPEym(;GZ-n2Z$;^$lb@qg z;}^KhluV!dYaDL}25y}Z&bY)Nqh~GV`;5b*efQbrZ+!ze?UkD(8%`c$HFa5xR(p@r z4^3p=AGhM73V=3bUr!6r9*nZXT#W;qvTGo@=G7gD9f&8Y5gij1M+Sm79D1K&t(n^{ zdFnNtwP}j&9^m|Is3WPcR#{5pc_`ZT4N^psVd~LKMxv`M22LwT<-gnq%*vacWry}q z5k7k>;JMy(A1^rqeSZZeW#pPo;ZPCiY=$DT4hSa>gkDs+ceYpT^pi2<_vJiv7tC87 zkD!>ApD{^d5o%y<>g5AlbLoy2A3!dBuCI@1A{Yrb3=&I=eb-f#ugOO%{frH~#|2RnJSYT1_v{YJ4rB!>64tqW05PjtCP*#@w?1nh@s|X+@z!#bnrA03 z=3Q-|o>%=wxT|tfBon+m7H~bfdIAsv7FpL>)U5sb3Qc~!@YL-9O0a@i-s*Nny#|Cn zNqaKJxjhE^H{?9H3Yi{mbMp`wr%D?B!O5y(x@QtL7yO4Z;?a@lM41>XfIYw4CAB$= z;<(Pxo&Ik>!0*zA!VX22<-w+62_h8E z?g&ZbJ~rOYC`4O|Q*1sRKkVy6xf|FItt(~&^e54%X12?OO0?F8OON@Q`UKoG!L5JL z)jGB7qOM;OrW8&D4i3vy2w1jC`lurThta9#yW4#oFLtDzSb)j+v#wTA^fI*G z^&Q4rIq|9dXM|%fC%61-4{^aBR2bDCG*&QOW&)r(Nc2W+@A+G)38(Ufxi&)_Cb8n? zGdXvHO8}5QhX>3Tw<+0d4PpKPJm<<}4T0dM?yP%rXSI99M|gcRR1I3tEe^^2D8uGE z+pC&3qUerLAKtMe>GDEbZh8zO>C}6TZ%YC5t%K2PG3gjVO;{U~Di-?HRzbSS3qhKO zPfyQS(Di02fV|(M8;c7AeCdbK)}$Rw<#aVkQxM}F85rMRSMusd038N^2&l-K|N0jP zwDLvzjmA!PjS4ks{vXFxNx%{%dB=O}PWT z$TvB_sh;Mee_&f$Z?ndbxx z8T2i=cXm;t1kg9#I%&=;mVNw2xFY^4!^#lN0=4K$`Gl0$-^6J{(!QWnt=O~8)6w%O zH?eUUsK|G@7T_*8l^#kYU%A91Uw9F)(Jn=^S-tl-of1#3ivB6#RE1PFM{UZJ2ERD? zq;=2_4#E$rjjsR&0@f+<&8Y~x{%z?2hZ*OGGk(s4y$EMyRx0>d_9LzT?1A*ntLpF3 zR=l=$nWP^z>CRx5^EP#9MjXhWC5a}O?qIZbVmS}Nja$#df?vOo6+h~E#}js~LlVD@GpZk<`-zm~dN9b@ z*8(Lqk;p;VT7dW_FcZ}Bq9jz^I)^^=1VtRaq(G$}?h8uiB1r}Pd)e)xnPZ&mC6rke3m zSF8w~Rv(GF0rUM}7f1;MG zDQQ!0;zr{}72^D`qO$6XRG&`K7Ib#t_8}ed3kwKb{7K=m!WHwx zYxvUF=7MD@BjjN+LU+oUxoD;oU|rFqRc6$(AJr*OX%u~CFyz$8)N&tr`qMG1?xzMD z=OjThbfJufo@>y{X(Vi9FW9FAOsno`}AqejLFGfOfi8n&pJ4bmDXBmcG-=tp1!}bA;XQbr|VWLYk55ky_o1%)+Vje&Ak;T5vZJF3yOh@Zv!dxaw1B3z z*84U?wTP(k5JjoWvuU4xkLDW$_VdSSS?S*4J;%I;h-qjM;@vG(2rC3hhz|)mZ}l%5 zmf6~2n_Awjmtr0zEsLDlY2KT$9Ix8#e#Bth$!+f;m+7>ZACb!at5`qZjD?R&SeLfx zyIgr6GvXkYoai9a>AP__^UKe%%ew@Kc`llXM`D)tl z1TI4v6jZL*s+OBj$S<_V3od|z&)-|z`Ml32MOs|GWC9t(XvKkqR&mM}I-(ye^N;6$ zU)XYy3jTdB&4H|O7OLhc{e|dQ2f9H%{ADmrT&{0$eSsTi3r@Yc(+* zM}$}g`c;XIXiO`>M@9jmaI1{>2n7u^%%J8|0vLCF8V>}0vTj(*8V--c`*bEQuC>L& zj`AW@j_kcYrao)izmhJ5@Fp6E&f4W*k9Srheuq=!&2l<}0$0;KN)6B&{b)S;-*B@Y zr4)hgugBWEsI_{K^d8H9m#_r|NlR5Vj$mkvf;ll15IADKFsx+wt)|_Yeo3i!qTsAC zRWLyRt%NON4(qM;j)q)m-#b>JXnu&Ma#t5)HP&05fM}rR#SP8Wmh%X>e-g!y&s!VA zUDt*9`}Ju@5xDV~K%9v22k-{zF5m4CVqjMjg5kNE3z=c99^rui_II+oEUGK6thQE# zuD_aG0-_s9RZ=p}6=8CV*=E7PQQdYOLIfqega#X#$*g{9bB}Q1wK0-0#goBb=Vb($ z0ut*F3w3@}s^>eq9wAZskz=l==fjEUB35&~sjYv4?%#hDI=mV+JhT1kJcDnl9*pxQ zN@^V6QH6JUkENE@%9&kVA66Mlkwv{~KlQHnIc#M|N=sblchY+;YKA@yJ1{TkHA%v# z=u{-h1>incpj9(I2vZlNEEy--JTCz)mul29@}4pfCbCy~z`(EFDc{({F% z)GirIu<~gO?(^vUwi>5+L3S@dFI(A%1Cktt1rt_~`PKu}h%mDLu(vQKMl*B}+ONJ& z!6rFkZ9CLv{qEY!WO7IamX4@M5Q#MCA~~h#VeJhv8;gN1bQTsO*Q#!t7x;eY^&bYl zb0H%(+1Q3n(*}xttSTtTnbzJ{TI;S&@9#v3O`d|lvg+AGQM;H8^IoGCc+3ahqyAba3BL%AZ z7n{-1uggwVYV6m^2@#`(4}$v0f7pFd0%RJRa>+WVyX|P&Q4`7Ne{iQ}X8$HD&x%Ej zLsGBF^P0G->3tE>I@Lxf75cPdz(xO8a8{2f@0?%FdmZ|@l^rUmSHr?pu{rczy)n#{ z6{kF33|vcKK6HVV$x^dcx7w^(*{i8BPpi1yB3;E;t}IWJzwJiOyCAT*0M1=Jd$Gkc zDZK&|F6LiYtZHd{WCF@yvD>VrRQ!2*gCgPqd&ICeUNH?&|V<_XR zVBbs2X@LTmsDn_k#a#BM1HKL4ntv_ntgbFXqAiSG6N)qt5hOGlLjH~Rl4&|mu0Phy zICG=Mtb-lH_Zh3WJJbGl^zwwP6pqoS8zd03j^!tai%w9lH+Xb4hat|}EO3+>^APWo zoiV67K5wfTs)nytCgc_37d@;iION{!vI!f;VCd@`yAN(a~*j#RJ4?7y6f&niT z{f|S;=0aQ6puLWs@eFoo41S>JpG*Sn0YXrR&b7M*(7R#|^tBVGBYgONg{_Xyht9fk zSO8iTIK+%w(>JxhxN^wVyw%#ZLalWcZ7KsLM4^P=PO)eE)CN#<3qA?J2Dw|=ELRiwaPS{M%xOXL2EpFmCH zRE*CLLS%szViI^mN-z^DUKxejma&8<&}Oj1X+_p{t6mKLAngI=6vR3*{}dD_Q}1s{1?uQWrKzLm{s(#y zto7ATG-^6%q__{#({;EKLX?=cV&Go3oj+4CJp5cF*3;VdQXPRFJS z4H11~b^d{s3>~~1vmDq*v{nh`zJ@%=>6V*qQO)Hv8#-YR(nc}V7aI71V?GeH*jAnn zWYO|3f~&W_+(u9{qt&4ZbV@l{H9oz8Qh}PGy}$Zm-h3TAu!_t0T1cIw8%@OU^>7r% zsPAwsjE5LmzZd|xF>iZLEi}883^cQ^rPh{(b&Cxr&%vEl&(JoforL{eV+xcpTS69a zqWb(R9+XKfRD7<+AGo!b4Iu%AkH}X%tAu=BQbhkh08K!$zbS=IvO@;^8B522_Jkhd z9?_%oKzje?{{H@YXKh4WCV9Y$Lce(s`cNl3FO*y!*qts{@{Qd($aSMc|L0GL{z_l; z!S6tb%vrL7#?uc&|$W@kwnDzb3HMz zy)L54W{E3vSq{XngRm7*V`hm9a#;?n`%3uOHPlK5u8fFla<#O#5<-oeCAQ^i`EEJj z6K9DXF5U$A(X+$@q+ofPo_FQSKb?u={NuUuKbH`{b&)IUT_U|n^a|W8VpW0J(;baZ#RPy8}R3#Hd8>Uh&4`-YdKm!x5? zK}jquOG<_p+d?I4pgmX{=5Ji^{iT$|=Ms-szC0Y8B%Z@gfSQW^Cx-y!#RbMW~$a_^<* zujqLLJzvhn%p%7?rQl#mZL^{=;Oo)*NqYGfd^V_}8W^sD!8ktw?2BY!bNyaq%Ki_l zLu{iITuLwA7GQn_o>QZ`2%9!XQ&fue;yW~0YI>T8F#B2~6ngayz@oy}GI|0#OCDUS z`szSx(K4t#Ftj;(p=G_<^LXWUEAa6KX(zWw(@#g!D%q&=>tt2MGMwFDq>~cHy6{f5 ztPb9^r%nr6bAy5K;_wnxx*CH(+p?oji@VcTM}V^xTP&Yo`4bg@sbHw{FIUJ{uRv`X z2sH!hAYt=F@mP??keIk7=rUisg7W<{Q8;`cC@(|)Kn#R(NE&S34|&d~GR{9_ zoWJ%G_cu39S9xiAJwU8Z6d24s3pYxqDO_(0@n{b4`8Z}=lS5-yw6-4PX?Z)U9zUKS z9uFvRg8W<;4KJw$sdkch*q68TX5g3iK?cD`3DGBHG z;vcrW8Q80;`iLcNxffW1eNFqCkV!#}(Qj~2OUu%d@!}0zzK(2|xT%;~)tjvMCm=I- zM==d+S+plhsr6HhsLE}BpwWW7=*DyR()*S|ETffDS%`z&v-JL@_bz>4>1ctzSB9T@wF!e= zDn|?PaCrbiym75OH$GZI4se@+QGc|T|6G2^+JCJy>&v5rxT?(J42%}@d!JNMmmDUE zcmMuj_<8CODRH%jtO4xd3eBg~sIS+3`MBecJN|f8P;-uWw1Rns8Z|vb1}0%Gb1D57 z4y610qmR}%G>O+LXrii7TfglK8txTuxgLXlk1zL%zquY)`8|&96?@01$5ue9@3^NDdXa=Am>?|Gt`JzS@HrC?|;VeEN(ub*?SIT#j*uf=saOmgv&$OfB zO)o}OdXtJ*jfku^x;6%*)$*|TZ>4-{CJud%(R$66F&355eqceOABzJ>1Oaj97%aTU zK;DU+K5nR9d{9BFGxW;&WAOPPxrfG3!T+(+E$iqJ6Vl?l6k@{|Qc(W8l79ZlKmC>R zr7m!U#r2i)Rpikc7Q^URJ5>yfkgxy_(Idu1Yas})Xinl0?{@3lD)`!9DhbTAB?N10kQxa7>N5GyitkMg zgdW-^w^pW)4dmQ0EVox)b1ZP26{~^Ca|Y_u0rAtN=o$8@`f1&#=R};d>&1_y|4R`5 zp%jM)mY^QQ#{E+F2l}XDUr16+oD3-?-$o`(!o*b zB)%hA@x^IyQySDM&E(;P>9&Z8uVf|2i$}x`L2s3#lp1h@0i_Er^Fb^7gJ~=URUcHU zZ_~*z?Ox%F3F>!oW+g<@i@%sA;=Zf|Z0}=-%u~7=CeXgBpn$B2dwn^8gddF!;S1`6 zCI14ZKul&wO@k~eX{&9x7di>9;w*iqVxuj{^~VYsvPHF+jqfd%Tbki#0soxFsv~gC zr`58ESVX@~(YK?EQQl-(Vs0BRzk8YFiKwx!NotjYhP1LuLDmnUX5b)G>r#~={djH;q)1dudd-~N@*m0aw zP6T1>9?4AUvyGR@XjF8QJPWj%{@I_e7W>Gx7+gcdfImpj3-IYgc0+3M`{f3jP$bG@J?5!7l$A_v6t%-7TNMn$|aPqvR**FuYZHOa#@YSL~| zT+QeM#WDn(&(d+C9N!#g{juTNzPEuZlL21B7Gp9b1-vw{zv4gAUE%y#>)o0h@g-fh zU!nDgqNSf7{5**6YS+>`&wwgRhQ)3v(J79@u_&qXKN62i_58K+#* zlK3nZMM^xQgFml-Uz9vD!HBGqIK=K=YDcHUUW|$RASqSRXzdV35{A||4m$rTb>|rv zcf?sT@o;C2_?wi^V+4_O!^8hG-YM-lmi;pPY!6%NygOlLsI0L9SAiqySi!gFd@m4-I$JlW##v;F5lmY- z=UyT01{ffND9@=$NOzGV5EHw6%MRST=)TucCMavhqpd@qElkn(S@vq32$DzDZi4UyyqXhKcrzr}KF= zA0^7LxP+Fj8nUdPc5ReUj1bWa727RH=?fLOIB??Bq@{M8{dgrKVOrRJxE!XiADnLY zuZf0np(~I+5oAl!HrckCR|Rdyng|bj;?Y4FS$b4ZMO5Xih`53p#tj8D1lA9VTMFdE zadQ2$kZfscB35w2jq+!eF-u*zxC39#y&ZlAtPq+Z)mnik&$inhw+f*N z+KV0d!rRx$CdbN$q6suu!H+gThDu641H;TmivrMr|GmiWx6}vloMaVTayK+PSyGX< z>{pY&EgO`T#YfmMCMB2XQV7~PcD`KzWnmXWZz@#9HNjvoCzubTf%pI`slgJDbwWoE zH^e4E2l{sbR$NpJ6v*%01gTE3lB<6E+-MX2Q*Bic>YW04+fJ=e{RrNe6}BuOyoO`r zgN+ZAqwUm_jgOXxkr$Hn^_M28$p{i@-g`|ZG> zv-vywNIx*6N*!Jk6wz31SRG!MzDjJPiSIh4hshh2r|;aMTzzMaYQR-PmEWiedsX44 zsZ*1C*w`pKvwnAY-}dd>cicQ+S-0+#i?0TVLRL2<@!6(a83RRhRtw&Y>C(jeYggi@s()rwz+9}1SZ+FYW*g0ZLT{?RKai> zI2T9sm!Y<9#}OP_-NlgXwU&J9GHJhUscWF^^;_1>@N=QotXZ^P(p442aa2q?npLks zTU!1AM~GWP3Nk_+JJO^lH+T7Xs<^yFT^u_PngUGy>bX1RwlR=lT*RA1L89Tw(Qqv* zCsU|?*;o+~*XyD=po@m&f>cmMqDhs)_Om&c1IQe<9E0y%bTH|%gGo=IPBZExlRp$U zmXJx3{6{C5Bq`>UG4(hnQ)S7rVw{yzjX`UMZLu|vxC7s7nk?Q#y(i4Qi^Nb4=RQrd z_3KtF9BGP(moybx$X!@j?u75~1hBGxGA*rN6tvE}S6(&m{CKFUA)1P=Z-`BXGD*c2 zC!3(U-<-8SfATa$ueC*3t*;7;t3y1Qxl#a4E0DL}hCsLt6%9t_j*H-G5iaSbo5cMV zm%^afZ+R6pD1JkE1mr)r(C8bfhraj=3PF@X@c=i+hR&jcoC-vWE8XV`Rlm2ICtds1`Iu2m(yK@kiLfAI*_ z^m|pcOZ10GjSm(1)+}2$ovBDwxy;ps&^gvvAjSSR|3f@SV#qBcm;D*qJV= zda6`WmAg(7eq_A(bB>Nuyq<#}eQ6KGS!;<~8zHK2M2+oLYpWna7-{VAjwRu#;d&T$ z1JH-ttBwMp;bV*K@|Ga$@orGPIqQiiFd}`m&{~&7#Pd1i4Wjub%i;m&zkBF&S6KlM z|Lq=DuMS=hsVu(I6`Ec>F3IOu#9l*}r)c~G~d{SYP{4lioM_t#EKgY3_?DL)9P-Ert$Rng(t`aw%vb%(sZC~3)S?vNWR znxfRQV=+fOh`nnVSg0My_C4|l3^{#Hx=;KxU;T3KBanwGv;evr+5+;$>!B%$19_;{ zui4k+OaqoA9U=i%JqlBWI^qJg0$+G%-bOiPZa>uFrE;U3U2BV(ZF6JdBYLw+zqvJ! z6jDD9s@Lx!760gKei2%9`^pTo<=Y)c5eky`BPD-{ivk1D^|jDtF9uGocK2@h@-s{A z&5Kp(P0GNkR;yW6QwKIjV@=`hO-|GqoU6vwMbw-| zHLhxHI*gQg4KZ=Rk{?3*3xkZ5=b7HCNw`u8UpcT8@>lQ7?yp@nlOFRT;yj!V26)bj zMpMJX7eQ%5CyIufaF$|``zDxhW~semmO81*iSA1$lc`(x?}@FCrgnpT_SiR`t8^Nk z9ol!=5?k!+o9zUJ^R(EYGK1`FkS8~`@&OIVwQM{ zddovJ(fym23V%oLhe=Y{P0xF1vHw~Mc@>S==hJ%OCK}bRBU$4K3VDCt$fdnBG#u1? zG=a#lBWVMJ4nmdf3@)6WUNp5y51ZHJ_}1Ni7t+=^GmZhq;iq@Ve_F|ycs7)6@I>_J z8gU`kT?3Tt1{g6NXL=vRsd}Li18Z*UWu@U{G_~eCPV|ggV5+KFhm{Ji+F*-UKr#-> z|By%@o)R4ZA#Ap|H%RY6Qf{&3xYt^c%pwu4$=9!HDVXVAZuk8V2D}Kr?FB)kQm*vp6!s1PfBd>+F_w3RaDx$CS zslqz!#p-Ox&DwN5E|c*JUVpTq9yub8@O((x_FVb17)SnYj!U09UYwuHk{HmR&*jpn z-La*pxes`E8FKE_zJm{i(yKA#h8w0j=vG`?B{vZ{qfr@w<7vo}s|Cf%`t3*{Y zx@Y)zz;sR$TP(>YwAWgS%)e`(mY(Pa7OS)vsvNrQFo^zu?*@PPiS`ZM_lR?nwmY(* zx1lN_XaT#a(&^}>ju?wAiFD&tBnYydDU578njf!>ga^c#;CG_vlIO)qMSiI^W`k*F zJgVjXj8jkew()GX5+jWsjnf%*-Vf>d7(G!v2V*xab;eK;c0tQsye_%J=l(WXb;Lw3 z#dWNn1&$}|%dV2`1l~pv6VqHu1FML{srq+@{{1TJ1b=rAj2`R9QGr=c?rzXz@C1N=QSwTFEhJ~+O`(_=vk!j#m6Fi zgpp|*h={q`U>{AZPxQGn)rgx&#OKtuQ&E{BzKB**SK-!Cp7+|BD! z$uM$x7=Eg)>c@)-dZMoO=INuneI^ly@+)f9&G*V3Em#1x;tRAE4dF5yyDHF}rDzj~ zimGDMId`j5FHl8tOpz*-6;Ok6V$r1nRc&InZXsvlf;i-3p8h?7S_O_}s-Rb#OjI$I zf4*bum(JCT+cD8^Ti|;2UioLnH`t1CM0UI3_u8a4k0t}^=3%+D@{K7`UMukU#i_V0 zZz~M>`l)P;fTNm4T^9Lkk^dXx_CHI9?+6 zEi|=kqvue7lOt{qkit1Bp3o+-&`4jW+3GFcPDh(BEb*Tu*9Ou_@q)$gWhj5J6j1Kj zl|>AC7H$!7t5Sd2Em^<`hs9k=Zn%_8n)Znol>Olrc~Rr#*U0^6K6E$9@nd$x?TA%z zUt=I*Ro;)!lD8MZv-BN&mhET^OtZ>wZVad|)`5V0*hNV@sqU6_>L=f-QH$#A!=|Cq z?bh&-;cEPw5j@Osru^YRxOP%B%D)F3r}h9U%$?d{_bIDN9miP%za>$C+KE=+imfs* z(Xzh}KXPnIxK>t{K@g`FOFSG5gh7NKTjH#NUPEsnSymQP5cuU-f`N$?EL{6^IDGKC zK#WEw)0p0=C>Z(yCv*fX3qtUR6&r)TxA_QvFx2jZ)oL>ZdeO~_-`E=tmjo9-a zT>8+`hj$?>JwPIQWr=mvfy;4gSoPMktf*D??m~DT_oLe-{1m;7NbUWA?6bz6dzSTx zHSWB#te92s$Q%n=UM?vTtRt_(H>W&6@07f=5CT{1T?)@J`<7YG0G_n*sY+n)uDC`jEoMcAPn#xwp{(aGlfS-bkAlP{6_t7sO?3v=|l5jm!Cx~Q>kx)NK@e~?{TGtrW_ zUI}yOny_U(whfi4;x8aj&<@6@Dx>0b`5#>6591O~d(}kCf;a6+(C3%hG54EJ6a;K2 zG8nI-Rsa(7RArwXm>8aDtKrRJ8pTi)vlL{v7q=H)CjV4fJKa_&BPm)6{da{tybNT? zcDBF_f97x~l~)%2$=&f5`M!8hS}Z_9!a|S`xuwybXsLg!09FRN?5j5dR|U!YC2&R# z^yFXn017ku6^#mn7Ti}B2&?5N-UlXDM<-4TPo8+9YOR?DybDRKHL{`@H?B3;Omi&z zDa`ytQfW=Jf>+#$S+;IlX2&3V+vIftkh?@-=OCnlGygq^9S_&1wCJ)=U?ghK0V*b3&4cAVIEAG6f;{TgPd@GzI@>- zZ7ltheEA#KeS3ap%fqwz^7l7r_aE}*A6)mF`Eu`W?fy@`+~>M4!j*)tOcz51@|A^T z->fFpMWbnPRRMNBoNz5@#vfLAiTL221`h?!_6F<%Lt_q~eFCipTX=``gBgTMP7{2ZGd7B>TRMHoIzF z-FLA8MCHyUfywI@>%k6QWVw z_wA~|1}hhb!jv=o2+S(GTDAw?8ng;vXbWt%pzjBq%}=MT;LWMP#EFq;dVdpCL(neR z9d!l=2cVuFZ|)wBU5P9t;e{XHDZ8VKql;t1kZkK$%>hR(+64nnA&f7O2j`r+tcT9%aHUo_evF3xey_=lWH;`{ij99IU; zb2A?OQ^hMGYs37fnz!>Jo&YAH+Y$Fr0^STsOjY``s;?@VTr-UNb5e(s@2(up>0VE( z7SVJxBK{k4qjr*(_`$Gr95ER3_}`uM`rY)r2A?rxY;O$=i5o*4nMb%Kja2uK*| zOJl&yu@GM*F8l=f@;1)hT0 z>77%fI_p$vU05_^KCPD2siSaHm{{y4Q_ZeZUjh=^xbUG7?V0eR55;53WsJAq^rxcF zL!ZJ8S63sRjxH9LQexiaO+1{Eu=uO%U`-1?j+Fm83#Hws6b4<`Cw{5)Dh2KO5`RG!=^x-U_AoogxZ;YI~@Gk}ukU`$+(zmdLZz`FH%;1k|FDjg8Rjaw_|8Nv{bv%28d@_)pU0)v&U&qY%2@!T)|#*s-iT@jG~?gPLGl=^!u|(rwT;WojTIzL&{CG=@#(l|Uo~ ziN82Q-yTqz;*nH5b8H!&17E)K8ps0h7@L*a*78$S=|Rm5_5CLAt)s$g&`j=1ta^|7 zccen&+tz|4r2`%h!%CDFjENJuW{kVUd%ie>lMohr{mlrXbF=CeO+@@SlPwq-ltl@0 zgX>RaLcgl4EB*259?uND}af)`f6YROB;cg$cb6Gkg4~e)lCbB zlVMfd+rV)IgQ#|fmz(M3`2*lPpvpIetpMf@~*SkCi&cBaqG=R zV`lk1=ZY(S=nDNw%Gica58z$;lMIK zh)JFVo%PH&0_kLO{Wvlz6+5JFU>EoQKjz*%KB^*X7_Q~s+gTuc99cR6+%-3VI-@h` zfT%MJ+#m$Sn2rdDj&^WnWKlXW2)aSn=3(iv?uR1}=79@8t)BHxu>gCV{r`q_9lnuQwz?-JYR@B5C znefvC&_J1W0od`{eA`h4UY1%bbMa2txX4q?1lvjwjZ6JJJvAu)T59I<%nU0xq~F-m zJO5>rn9NF*S4_a;_((hR3cJ6VW_r!sfNTo0Yg|?&B%9$Zb>w9*uP<7;Wx<|i0-ZB8 zHJh2aW~+#7F%0;3zXHAaC4hmM{)Ab0W;WCb z?~|wYGJTGf#xqkdQih-yLWSIErU4l~8{QUCC9$`6!0R+K*D-SRybOn|+;S_y5n1yh z(gPE!wJkGu4urmP5QOI2rvoyqhFP8IvoZr0<>j--;!J@_mbE}m|?HvD|*$UW)R-%!Y6rMA&FWFHfi~|m?01;gQd}kaInb2NM zVw}N|h?Jk!0Q}eAZp!M2CGm;-Se&Op>>h`}cwmni9z{)Pmjp(?Hb6HBx0vj9 zQ{WI;zlNl&LOcOMHFkE?t-(l+R$%Q`I8SJSD<}{(;olg~zcfM-*hIeUj*7R5pNz*o z1Fm;GuFRk`^+at%z1P}?RV3xuAYNf4d^{e={D3rOp?ZZA5XoLT4ok4NiBeK1Md4;M z=^p4`kCkX8iB@@*SxlXzUj=wk%RKFNo2L4 zd1g~!pp4BWO9y=MG9O0P*@6Xk0?`lz=3|+li_HRCvJE9@$Br)>us2&7)~U_(`*A1Z zbct6~QRxpBvJW_l(iMbYF;SLRY`_ImIDX3TQ=dOniF;y)Ks%F%*?F$5CXFFY^Iz0s z=z2~%Zx^D`y)CM2TOjz3rgEUCV14wNBdsuX%}lzI^GsDRz+s`m5s zCABCfEH}rsT?-JA{7_pGCkWzMIdlc!rTLh^Zczo~&@DNTF?BbZtO+771Ll*kSPS-$ zzM6f4IQJ4wv;v>4({EF^z%UIQm+}0Q8|dDU0liO=(00paz@q%z`;6gZ51A^*YRvQo zW_yx7c4=Dq6Tpwt*~iuV<7!pe4Vv9=!|TT(gKR-#VrMjD-ZAjBsPG0tfl8R5WLs47 z33q!^{s=P{Z`6YYY>ec~`*^$n&5_~@S$@DEd_^A<`dcJ-7K0z{*Y9tSncNR#3|k}l z^L>eX6oc{#=|+A~0sB;tpgW>2dVa6tuj%Iw_q~2Tj~MDj(u>MfM+%gDwR&8y9{K8V zqk51)LreJVI36OalZY1TRV&TUqo@J&gBA(6UY(&RM#hH*TqIlYfK@HUnZ8DSzTY3| z*^E6RUR%$%X?}(UHUBeEKmVzpf78!yF3+U&)*K&u(GUzuz$>JRg78ypk%0>{&)?1& zULpB-U{7GNjO%L#loiT@0cVKMhY}QOT}^dwu1OxkCIfUz6T-*(@%ql5(n6k*CUS7s zeZ<=m*5`}?8#3Dh4?`T_u9!mIOFn%pU;AyPyA2ZX>|Bst`?yTbY`X+K{{(i5``;E*UcE=p3-xiJcx zDjm4y{$%B>FuGE zzijq|+`fd5TgO9lan=k4=$>6hhiS;Zig9E3!tDKR4Y_{_Uy^;aEl#rl%GRx#2`_e0 zye}!niakqWS@D%&>|LVsl(GB&i#*t4qD=uH69f(L()VNdO;JVIt7sg3>?ZxZUetHS zd_mSa8oEWlYfAQoDZ=h?8#=H-Lo1>U{p){h=%bf3^uhn45oP~Ho~I$t2Ni~NGa38c zcZ*afv@QVj{%f6J%lgjyr}Bezd~Fx{SV6Syw?#w0gU}vA87)Y@$gJ=D=`_By&-?57 zzOL9kt#mh$1?KB?B*&=lJYf)&Jdw;jvMUpGe0!f4`o7rr`973hsL;?g{8$kzsv>o4 z+l*rDF8+CE>glUsqx!Mep590j-C$NNUU>3%x-2_(Bg~PAN>j5=ScDLIzI6-Xge(8>CpCQ<3rEi zX0m|&4DLKg00DLlpt(%iiKeLr5v8DjTg)%%pkIQvndGUyld8+uTB*Bi52e2+Ri^=x z(u3SGZY;0)wXw8+F(xDk=W}}>53Zp&6!#3VJ7^~XQf1;Y-bJL20KOG=gHM7T+th~w z&PsK>&kBH8KRt<`so^gXz0qD$eAjfP+pJIn5f@iB%o&pGnXb**b#eK1QVac6sir$f z;_;uC)H9C9R}|2nyg}r{Os;r$WvzRrQi+-GTI<&F8QSEuGSp3f5%@0 z>K>qS%bk%qQcjwt=-qRZ@M%hEU<%qp1|Z%tfsQq_jbqD*G>AD3VxppRyBlH8j{O0< zhmbtL=k_HMaaZv!v~P~ZL%pv71b)9X+*+UveB}oQpTlMw0M0=9 zK1aQE8piO?X9H;|8k2G_#%&FU4{ebxDjSJV#Qs7W2a99HV}pc+e6$~;|Cp0rYg_Xm9s0NRr?rm zw5j?HOw9dVKgh6(yzEA;f%@y~=ZA{f1*en*HG29ovo0PuMq z)9YhG4LEen8vJSq+KBb!iPcXP+>X{?cCb8=nI{edeY={w##pf#qQt2qB~c@CxRhLs?_n%SLf#-Axebo$65TUbdyu~ z%ee4oS%B?ydGTeGo2*I}J|dWw2}s^e=&vEygTJB@z7OyKX$QCeI;zt73^g~{xk z*P(kbo||UZvbFl_ZTk7HejcLIHc}lenxhE$aDofIV%v#}J=-|;?qdzhvoyjjn?-`` zj0>jLn_#b+0s^1o=*}VVKB3>w=y#l(>je^o*hCTqbEux5Y0Em3471B;|MHK0kwyyd zL6N$d9W|9D)#F;u~>|zM3RA4y-C6VAwGf7HjR;2b?l31NC7t zZKdNH(PO2>5BEo-eu+SsjOwOaFg=lkpTOodQow%Ph`&=sB2DW3 zl4SnOlc+T3rf*HaUI7ySg~#zSUFDjZ%nuP+@ih#eHy`oj0q1_UO}$-{gh%1JA<^zV zK)pX9UB#U;pU($#EFJY-(sdU?cv=R+<#qa_)Xj_RV%jCy*|+I#kHKaTTFQ53JE5FH z2e49ltpA{(3mG{7%WRuI^RcfpSi@Rh#A!>hY{vm);xA;Mr0cW2x6-MXF!-VdC^SGp z^lFCc7$;N+Eq(e^6C_%XF8LntQ8?Fb$E_aJ|3WGi@ z{zIwzI#{Sn8<)y=6`=vZMQ-3!rYbnVmKcOcol2W6ZcMCUfNgE8?!JR;jhpmRiknnt z@gGQcwDx{BI*Y&lG8OZ=6iWx9nXeSv=H85Es930U$|~nKW1m|5bLwpS;{EK+Oup+b zPs(G>*`7?XV=Ui^E9#}DK8MZ9RC=zW@uNW7hj^3pK#|RsN2{*2`2JZ$%6=Y&aDVje z$!O?8rm8!@-ZR9xzSL`gcP?0b9ZZ4xK$#7M-$x0Gj&#aV7kI-PCs$QT!^#$cz%^Gik+Umazi;{Zk!lS1}+v)M4jn?cDwoWn0<`C$AVKWa?+ z*-Ltq9oAD5FunO%R1Xu$rG-F=2Zs7ZaD=|YN>*e$Gx&z?pPE~8X}@n1A7_tp8i*RU zlhZ6(F4VdVvTuaK7H_B*J46&~jTV&hyn1XQX#3`K0s0?3%W) z@n6w|B*iK$5g{ftU@-NL6)^I@06$MttwB7>uNuRZ1`=DOs-4NvLhO;T)SB@WVTO5h zELY_pKnV`0?_9;Hq{UZ}G8+M-&MX&lr9S`pSboaX12c`@Z3;$V1)L4H}ti1Ly@@8K8>b6V^FHX*N39XXQH7xXI!wt=9MmnqXdo_u!{M;8i*$^x4S(v@LtvWCM9loaX)%8SQylyCxcfFw` zYYa{D>i9a!G*7u2S)lUzfTv^2=tZ^R61#pso2q$0Rp3;`63%g1L>-^P)qxM>$%73) z3@lGP59BO9UsA50ZKt-)3?lnY}I zyAG)Opsp@79R6alZlYF@&8{g3o6FMSQtz?eywh#G#vFzyrQO5@R5K8SF zY#}7Qhe>;d0H~HfM2y$ivHT~~vHLlJp}vu1AfUr zsTiH*yx^DO^BTS|%jcT{q|C6sm05vGWZk&5m>pc8Pw$TlUcHjX+tbrlLdaN#`GP6X zew63{S;uM^m8J3f1BE{J1(%ywa<;Fl;n~tdwQs&75$^L@Wq6PBlX+JN?{Jqt^t0)2 zPdBh+D7o-1$(NL#&&rVkU%7^)qO}`Td!+US5zG^f3heT~n+ELpzB0Bz5ZS?MM7*zv zUCa1+GpLTV8mdm8Hv?>=ZX`<6VRd#pm>Fg4Q_dFzaaC@hG2MjiTa60RJ|9}1+KHzh z5Fb~fQfyz(U^z+Mii?2kE~@!U_kRKQh45%^dL%tcTpDb}FR$Y$8g)M&M)(c((@Ki^ zhd@tMurY=e{bW2YpDn=pTr`s7T=QWCh!bF?O&)kC>ExAmc*uNb%6!SH25!i-dji=} zPfR-96rp`Xu_2*=T@_<$uQF8dllAQ$PIrv2I{uNZU&E_G|@cpHH+%rRs5 zoa}LJ@y<^BIU^(F8!{ueqQc8Lk2$Xf4{zAMCpSE4q`gtYpU?ctCL0Uq`T~0@6ULR8 zt}t9kdZyoN=E&sjuaK%x;}6%-GpS|)JsZ7^adCA)NG66$hFSRm+sStVx7(7#Fr74y z`i7Xi5)xa_7ptD`tOOI##FN?hcFSWWS;d)<=kuPv_TnS_6m+@)6jK)W1Kp%bA#z;B# z@*U>nG&_)DX0dr0;N!3~$@k zNSLsULQxlT(lc%ushlQi)l*~Iba|2(OU0!vW#3xn=z%*Y1HA0T!A6pv0>GvfNx5qYzi8Qh!_YItPuDL9ysv>l zz~B=AYs|t@Pcph>Jb)%$wDT)r8cm~aw>~o^+qVR^EhAZXA6r0?QLmH9k|PcO(B7xy3z1xQ0zk6hc<;&Us^z!P+uyMKS!D<3uB|em?;Jq zkVXe}mP5Vi5ouo1)<}#vmTA98k}sB-$d*N6Op3x7@`;vS(Z_2`2_1IWgpPTCGIiHb zTbhR_bAr#(@I||dz;joT1}{N@cMD3xss6Fd1jn)fBq5TOF`R@5OpUK`N+|PI05*Hx zV*pWpt}pv^EH_LTEG40tWAJCy5V;ER(2>JtV-8G$Z4HD#^&KbBlDOR0CpATkT3mY-V23!HZowaA)=q*$DdQbk;~CNq53X!%~A4 z$bnk#G#izRNAjRuNg|^ZdN|2y)am|C{mn*q*+8qy#NCsT{gcVmZ)JX&5bFI@rSy#K z4M6vX$(%e3Tbu*K#4Qi2GkyVmwhR4lT<9;4gFX?VFOo?Fy(6{)>~A~`z$YW{BV`5w zzraY-zz4dT8PcT0axpLuW+&ByN{V_ zrc3kPKBu$9Q2v_~GewsJa0A`N&GUW7mHgZnK{uL4=MwCYBvc;ZNv6n$L2sQW?tx{R zj$j957J(g*83=8;%%(d1hDSHhZ&9q4zIKY|2Lz(-Zp}Z+ibc;dRL_>MGg0d+=8B!1x zDS%>-ax)74uRs}UWhRy_Z~=t88fb^7rx)JuWA7%&a0we%V({2zqh*i_*W$aZc2=Te`C4ifL?t8x1*nx(jW-?lU zV~BU=2b>DY2|t&cyoo)MjluPyKX+O+wL5hIA_RfI57yd3kBL(h+NkP7jaHg9{qws^ zPT9oYynv2VOSxfj;PT|&-urtq!%)3}erM8(Iu%0gRVB5VqwpBQA~VwNoHxdfQHVNz zi&pywZP8x{TrZ;s;((s-#r8tk$-4KA#;R+LRJStmn{U}x3ui6lgF%FuZCH9?c)S5> zyWXSNj>&*k3T-mZBnEqJHq|58E9-caj6gSZmy!*?XLnoY`|8aUHm6^1r{aoLfLY6o zL_NHkbaVh!(w-WT2JWbKj}DKa1Y@9DTA!j-Ku3CNQD6`T97v9ShN(LUEl~k2VT)ja zNG@Q{D5`E4S7#dRW3J4Hf9odvO9y;Gfcd?+sk5ma`_9dD)(zCVfe&B`YJ!eDRO+uB zl-tW})E*D?>E&ceg6%{N#N<*9>Kve~X;;ABnlSKu7Vf3|4syo1UdBkty;9ftmK&&Z z1Mj+l*Hyslp#E9~@N?8^pfc%oZ7y4BD0pg&{~ex?0_T7BtVr)Km+zIm~5sF zeu-G$?>o3u5xZ7_n}h20=Q3!UE@FQt^NZ(DM>Pt0lrC&RI17+e6t^wO{uDE0r5fyF zuf^FPwT<+H{vIY3fEJ(xB@q*V-dbIQQ>qX<+imIp1RsoV702`GP;WE^%g$GzoMd(? z+7(h7WD&NJ^NkgFr6AH&W!*9u+Z+_}-P>CQ0OddcXgWYC=Q13>11edAC)^fvaJXf^_tCrV?YT#}2c5#g(0M~|KBr02WI zT;X%*T7X}p@FkYRz)ZpX+7cj zAZ*Zc?r?dS4QQ3|KlcDcK)b&}$_RER4jxe|o`bRGqBGea`s&nkICJ6hyi(}$MmN0ZRoGidYo&3lzuD3lYtQw;Ii zL5b$G3ZR7}(Kzpau$%fb~T+pzf6%2$b>;NWekl3 z{jO7@u~&)u&Xm)~T0&6ev$aTj3lu*0hNalJo=>*`-c|Q(1YV{LouQEL(n36v4?~D9%5cvJaB^ z%WISm)W&4`t+B5D97Si6eeV+#K0?218!4HBXXwq_ls19FFVOF+^t+0F&nEG3H!Qm< znZH8LS)OUk_jbj=jzm1|!rPRZL>jmNdnb_qwb^rt%KCW#4M&hGtN>fln6F3iTQ<)P zyx|6BK;dY&#HmDYZu*KyH<6u76cYxWQsykbNam9t$Hddg{MZv1n5Yf1v%N`jZ`Z0Y z|9KooFI`TZWK-}S@c^3RYl_+yIqbP)64bZZl0^RgIJ)3Emc&m?qE;MF;-@B2KfVDy zI-TCWktmOj;;&8TiwBZpGB%~LGMit=@MXuOl#+9 zHCr}110A_QK?}3jwk3ZhpBBHLjW#2G8znY?gr1+lj}@a?B%Yokp72J1bOl(JT9NY5 zBVEz%C?cJYvU1qu3@8AvpM);c6%h=C^e6T$KpnFS>B>^XvEn`4sR(L<_as@a`+J^kaKd$g(#3ZY*?NIXkA4x2ACFQyj2rQo)18 zEc&Cyg8N@3VSjP1c>z0Zi6h0(8~Z!Y%s$fwdzfA5G}kJEtrnQ1BgHiMHqaG`XR7!z z%Wue~tDud0+WHOSM-1(Qkhy-IPP0BKMXBR5!}BQwR<R_T<57>aV{f~kZFB>zXoGtKrYl)*I05sub541u z`BK0%%Lj^71g1znzVjY#cPjJ+VY@@2L12vU6%lIwHhaFb z_7wrAeIH((jE2_PC#i<`LV-Nqj(LHWGvK3xD2tDk{{gr~mmJ0_MI$e%BuPfq7{eML~>D*PY{4Q%z1 zA$xeW|Jn|w^gGgo1|GNUN#SsqO>%2m$K}dyGx}f`dc{?F;sI|!CcZfZipkN~!S=~U z3#uWIBa;uV;AD3`fm(aDeTDM00DR+tFwd)$@(4YWuqy)^tNb;;pBP#y9xc^#H3>a2 zSdD6(9P|hL9mjs3(T8*gogPX`9c^fe^a3`OC#>wYY7IYFLM*V6tXGTCNG}$nv0f`i zidrg0s#+=Ni%AMt3fF4v5g@yHh(E3goFw&N9%R=+J$H~D(>qCLTVxinE*4;b%_Zwf z)|Mbj?80Su03Ww&$PmaXBR zt>8a(`?1@3*bTyXEeb7bfd{*62{&U|evW(H5?*ePf60sl=)RfR&$h)(l;;ZIOW=!b3Fnd*7I#Hh3`T5Mx+=Cc&L4$XAFl}iSxds%VGw&o@1ev|r)&aMsm3Y~mY0EVG1 zaIM_lY;sZI!Zg%mzFTz1vXxR%ENrRNYkQ3RACS&^H~VTgP$?`L4x&S+cE;^5N264? zo9s?qYFJpnE`!ZG5mt=~*u&dF!!%wW%Nq=>BQ3y*dO#};PuxJ}TPC`4R=|ebz-%`# z!wtOZ1|n{NG{(FItiRaYog~`pC3|Bn9#1yA4FNah_4L} z?2H#sd>f$3*;%DMdrQR-JM6Dx!wluI%ee;d5)hRW26c=$x82H{rlR7TdgU+l;nUM3y|qDAUybKc=u)7i_#o5i{HKA zfMjppTM*#68C^_fnitVR1^~4NFjvSh-Wz>s((^+DT6h&N9Qvr4KDph+zi z1M@<;un_0={?H2LnkL`jlh?F2oU$q z#tCtFfclzE7m_kkG;mB?$_7s5dz#8Q`birf=>uGW&B%k{`uVQrQ2B+sx`w3n@l=@I z`O`vnE)K6$y;V9cTgr?oss_=E1^klEKM4y zBaqw7G}v``dU{U4VzPdk86^Go&83{th+(n1geA{C;FDyGe0ZQ0Adh+$@kj z>x5ss)>x6Ba`%?ute;lwxsqTXDqf$*l@fxQR&Lyf9^a3mjX1lmx;ltj@)vtE!*ixH z9?X$N`q8D+FN2PqQECRIsOtj}yTY%0iJ=hESNO%5&IB_cLx6Y5c#dC)E#t`_7@3dq zJ3g+QxD558d?QxLJ~jBfB6V!?oxvkT2;PQR+AcS3LM&~roA$Nj-!E7G*%p=V|h!DiPqO4`bCBD0wyOsOU9$4hl)VYByD?LoHO4GdQSr!dI2NxlKs`TPpB$4$W1SNMYLBJ3wCXtJ)B zij@ztS0$e~npkXQPYwMqkhna$?qmy8g#ApS_Aj9(LU)*_<&xt8TQEl*yv_L!>1!`Z zuhr>aQ)zYdyMun;pkET}50U1>`7HEKMwA{J8sJ@3X5(Wydcvi zk@Ii4*f^My{cH#4Z+2JjXYm4?Cz&iC=%VWQWPpCYBC%V_je|FJr-LKO{yn%V6S$O} z)A=0Ls`eJIzEJ4%p|^Ie?z(<}CKpJMO1vZr(5f3*Z;;8#ubs7{zv+lfubB!YzLi=h z6F-{6jrmYuYMGS^(|v3)TAdhOj24D6CZTBxKrd*~ z(Ux*{vFZ1*S9rW0a|k)|0i$5=@w`)71+*&zdgJ#CLj$01CSy@<%{>EhQzPmCL5Bb z52(2@oWxOG4Q&zC&_>IT@FJ?A&HhS)XWZ4R7OwKOj4EHVyZ-kqON7$T{zWFlf4@;O z-`e0G9(Z*Sxr13dltLcX=TO$fHYE7{9NLg&12tCtC!f{PlXB}&n~l_D#U%Zl!}+?g zuD7Ihnliw%bbCIkcW=|j;mSxyM}N89r8SJP%HS&m_Uc>C$1WoS#QevBrZT+J(e~Gv z$`E(AV7bXG!H!{1$>`xd&=1Q0*cknMmT=#*NW>v?FzB7^I{+o{%hKJg<{Lnd;^51) z3$WutQV=ESy`dK_N`YVSvwW`?x9`kpPo6h@bG%ebUtbxubRhST*jZf+b!d2{`v!0`mbaf zcDMFWLPF?;*s?v{PR~{SeEPnfSvVUd#}F)}@8=?_D2cQGZNmzHSPN8@v$%5lO4hzN zp zgU`KGqK{g-J>!;`8}-Dp1t+;k`*t#`rO-jx1;$zbzh+V^*JZG>6>o`olljRps)t~Q znsS+sO}{h|XeIP;2Jm)6N6?a=Sk9+;^1GMi07Xk{elKe5q9LLJw4@FR+p^hc)cc&! z4W}Ut<&%%57f_A+Tf<rMj5;{@aL{X6z z`bqRm^H}cR;$5@Bx2)n3Pq-!269N<&7iYKe@Vxj8e&EtJmyiqYS3Hwi0%N}V=>oj{ z6x&%|05=rMOz%(*f2oL1U^^SWXD3OUM<*EaQ0eKcF@>t_%EC?*jr->hH$@t z7cUrbdP;HM)J1CRBJ)Fa^Vv?J{L8zwk84mi>YBtyziJr$zG3ue!{}%kUo?BYVY81m zXtr~EGq%40D5%90ADzK!V2 z#f_X#*|$B|5Vk@#N;JrYx(@#qmkjG`@g?ExJoz#(O)y+PG78(NP0_{}# z)T!~WL5(l}hDNEB>iYmijy-^Cw|`-s#FUQk*|d%`v(GB!8FsUn)NyJ@6)sSkePr+p z|CAYv#|W{DM++*3h^)c3XuOK$>(ZwSy1o-Ti%(?ZJxt|qO*`NA`*ZZ^HOjZVR=m)I zXCKc8%@9v-e5)%x?;~Mr2}}4Pb*SXjIBWzL2WOC>dmoa+y%u>whTPw0X7-mPVJ#g? zmZ4Ocp`2q7GZZrT&%LlgbX@CLyi8Q!;ke0jnrjiOotzFT@OA>fa5@2E`T_;DfS))7 z?5-n?vvVNY#jqCKjVD%Nnebid&TRg>jCv!{ExmbKj*;>XN>H9{qx~lY0}O;7!Vq^nX2trVYV*4cHBOdhnA ziUofANP!aPCwD2Tlw>R?|F(SD=W)Am9vP9L7GDU6c-74!+bjO+bsdldB#g$N_4vhl+|u2E*A(W9@FwEB zu0udPQEHmMN2|yp126Q@4++ZP70?m&ZD`34CQX==%`{q}%RDb5Qd-YfWuI$HT5Qa) zbh;;{$l!DWbg@u00%lA+q4w|NSpj|gx+dER>0ots5JO_&O8#6nTSi)pFB;;^N?p?m z&m2O3Q!e}YPinRwm!wyDN}ZT$rgw$sL7>=Hiy_D{i-DPqt>)>{d0_Ez`$YE?XE zsB)`43kWx28=slRGk(LK)hn~c^D4X%_ZAcd#kGTB>4>a}>}I`k+~-cI&;8irr0iYc zu%Ub{nZwyB_}nTUS5$z#C^Z(v1OpwIOu6jYj&%DV*7lB7YZ%d20g=4FsL&|`CUc}1 zIsz^I#TTLb7fDN}DO&4~zC&G3AS< zUw^|s;tfjppy>R{J|7Qufdo>|q53)8eL|V8^#M7M(;N$TI*K{cQp-^DV8fYE+4zHK`xacCqBa!@sVb6 zuWS8U7K8a=#tiSaun!$VZ&}MLGecbfWpdaNuQFzJTsm-3AMI{xBYKNvH%OJ}CRK5} zh~4~)oF@CjucX~}$;T*#$U0q;_yHz%za(+eWsum62Kq*^VltnN7pH$~>etMc1AL?M z&-r&#HnC)|g)*k532?L?=7eBIAbMke<)ezpZWKKp6r+kSJdV>>b+Ag+_cRpF(K&n# za$FnL(ENt;HF(V^W#nD4@<%x(imMx*D0Af|1NZ;yip22}So|abL1@P$XA+nzobB0LPg}l%!YGHSFAsZ|)@5?|! zcx;`>sZF5N#C1C^h_jH@qfV-N!7# zUNIdM(ZczT0Rtwy)2R#gjmhpX*Yv6BbGqAi-SG6)hb|~SEt)apWPhCC>g0uuj7t;R zQTaunvVx0(p3?eA2|H>;uRC^Uqel5CgTH<+ivPZfaH6lQKqa|nVpoYJQ}~(X3eW0$ zGdD#Ybv9KNeRX19krc01nBwOBqSzadatpZ_v%Xo!jRzKpl)*XDJhp;-cxitXAKz^T zb8<}96%X#qS~-UC?F@cAY3fxcf~-vW(a;H`!&Yap2bu=e6|;-4M5DoIG%!T}RceD# z3#9n5=R)N`W2sawci)iO$nz|nutq;$Hq>*UG=J;~DF2%&$_*Y#7%MZ^tXAlc4+toE zv%0$aTF4)Jswt1ra{|7P_lO>06AZ}xJzn)ahY+17hg|HXxNsQ5&nd^#&nQ3~rSfu0 zgXdM3-4xDsizC+=cgDd>jrFnX+>)t~Le~0{_;20Xbi6>-SPry>w#JNcAGs@ztS%z1 ziB*oGXY9}JVER~*%6tz!I$$F#kv`b6&|LyXLYC#v2O_Ox3=c?S+j2gd=U*b2MQSOq z72m2IHM9P|?8dyff%UPrmyD~Ax{3O63--+IQrcvw0F2w*dtD%kBt-LXb*7jvhlz+`wQ77&gXR` z*F%d1{}4qPe6}yxz8QO2@U3^#i|vAci-#4-kHTi;3;e_W6H0^5>`5={IGrp&D9m{k z8GrH>qMXy4I8oRTj&DW}t~ zd|*D_y@!G}tKefsaUCAXV-8D((eKR-Z>{oO12Q)#AbXj|?;F|o%kIm&?|dBnF_JMP zN12Mj-$yl+eikIVKY!Iw`q=;lrL(e7dDmm}qb+(>sb)r7^orY}8POKac6C#;7z%V0Pn5E~Dg1RZjy;-e5e58@HDfbq^Lv$k=hE+DgP*<^&nCV# zDc722Y`DcgM4MU{Ol4bZT_Z`p8*$n+q63!Av6O8pB}I}X zx9jhgB#{xytJD4=TFw&>d3k0APftDh4<}f`FH3DD*^=J>;yfqS39^rp#C8SJCuok) z;WwxMLo}L);}n=2WRWE0=<$anbsh#|04VJFWd8a?fEvpAt?9W?F{%Qi(O8i`0t(a$ zB~3@Lcj#d2eW`3Iy(6if!%|yQ((!|o={2bhDn-~5DfaqFKFO|(;GuV=z4SoS)>)Ha1eQfaQEN$WWC;I&t{XS1~<7*0^ zreCu5>>g%USNqv^=^AnJ`?Yz^)t0z8U8#F4wj>3aAyr+t6{Mhxp%Ek^7qr==RQcID zeyDWm-Lx)9rqcHLY(M)l#n?54ukSu_GR|H~nn0JksdU!N( zy2-aIL8+65*oBuhV&^@&cYijpO$@4vOMJoPyU0-W6ch6+$pVxEWltHKOE%5}uxLEm z)keLCOi*)qx_WG;*|%K?=-5TLA!|XzMfAI$e&=$v(W??FOB@#$e%d{YOjrzcEbm_J)-i&s9_H>#iM_hKt@7xKKu2F;5?+#v6R=0*^XZP=y>(<_G$?8a#3LZF~^n6vh=U_mU{F&4Zf7VIXs7XvUmS11jBMylSd zhoDp!5L>r$ZNhSD72p8Gc^dsfesi!?x5SwF{AhwXqtv{U6jg#o*tS(#+VGu)7t_h$V(P zJXZ-0ZvA08sT%O`~;r&c&ck$w(ul6s+?$S4(m$HN!eottHvA{@HdsY{L}c+)iY zjOq5^Ff&$6ElJ$gCbVW_%($AyH_U<+*}Q31b2iU3w!3u00?br?X{O%*u0P7&h|9O> zSMy~wXZy_P2-U^qi8U?Ejzpn8rX@l#M;J)5IA~A(rwVo&3RRCWjl%;zuEw>tp*xD{ z@N{$|Xnai96@Y;-HN>yT5ZB?GXH1o?(Pp;Z)cYnSq>n(If_A28jP8_i-yBgz?nD(DTo9A-1jW6H!>v?YQ_5Rsh!SsvXEyG7DiYY&E%J8P$Tttv zb?V8}(j$SdMXyqn5+gFI9*C$fBwC!Gxh7UdILrcM-x3kcbp;jTV8URwDFNDk>R#1) zJQd=4(rewSiw0A3KlHfCnuN;Olte*WrDtOWZIxbIqKjJlsRIT-h4+k@y z_Esy>ls@2b2{9v<)nO+Ru!vLlQgx!qJcH@Cw%xukAcpd*Qo6IHiSon2r|zZeWRX&; z^SspxcNh^&NqqDq|AoakY3PRdMV4d?}@h(DHiIBncC^-g4OgFb} zAd=H1fTD&i*b$HNer8uXl|T~)V(8aq1AqwJGEdo|WJBb%9@Bf!RE6cSqxf(F`iG{y z8=HKdZ)t`nZ5o9#yMacy8sM)b>7(C?&GUHNMxBpw9Cg~; zujiZRMPJ>Buc%A(e#zAx${$&7w7A<9=L>D?MmXUfH1+box8%=+%drV6%KJ#EN3@M)htCJ6Zqt?i(OFuA_8UT0Ui@ZxQvdD zPgSmWE^3>_e6JsOh%cnJZBQq*^@5Kjf0qLDB!8=lbPv9le7_2id;PlxygMM=hf0Y$2tfB0b$-<99U*$5Ym}+QUnT_U z57srRG!;q-pX}uJcUSxD_6~pne3uBIyo9tx@(4@%{}#~l#$a68qUhfi) zi7CZnmHmA&zKR<`Y5uSdAN=k92H<_vA^?7QM}IRY4OEa|9}ttg(-LEYWUeH1g6C%V zSye2do)YFa%+YU6GuZqu`Do9j2{?Z`2dn?5zt#N8%XwOsm?(Z`M+91tz&`j?xJH_{ z8~o=glwH3XC7dO%MC{mQG%1K~ya7um$z%vesQ3@E%3%Vf%M8o}?=r0PTr=59YH22! z>6S-BO~X@9px+U1waAvcP=+IYA0Nojqed#xP?l|ufAB%05$Rdcxgf>N?0_5$Fpa}m*(nnX+n-x z3BFaWpeqH;34~6cEXQJk&RfmZ0AbFS!^TEH*r~?W=h$)lFm1trgi<2YdT#;pHfH4i)Zi!Gqm&1?Sd~N z)!v*D;xFi+5?-2tB9S#hG8!xK_W~0=xU@1^ry?Z;P7&k@#baKy)^rm6lzhSYEEMdi z4(765TpV1+4=hsx>miizN-p3z*+A?72OAboj<9p>tHs|QW$QUVv`X7{UyLx_dA+C@ zLEdKBYQ)^t`Rt@12Mw3!iGJRIQu-Ac^F;rGwFlRVzfIKp2wm6oxdlkI0`>y#9bMQN zb#RS0HTSc>BQw|{bpp^wQG@eJ_W2I(&I!b{v2gpi@GWuS)^Xv2xNxrOh#OQtuxs2t zzzaLo$Y!dIG~7P+2G>@-HgPdAIJY;ktZwLSE++=hlu&qAG&N6u(VB>vo9Oozo%RQQ z9ICHq&f4jO+qLKutgpGfU(Or~6DCL5!eO0tmM;9&zIb|8tmCLu17x3y`1$k7=fcCr z=91CfzFo_AqZWktQ-Mex{51S~>ZxaMLxO;}Obv&FfNSZJ!Us<>kM8&?l<9rP7YzE_ zu|ed>Ksj^v1uN(x#_PAsd~6<@>@ug2RqG%LXJcq2P2}(a zsFUr+B%c%X+xcV#&Bwmx)TkWknHV&0w}B*CGmcx;HRS&97BaZ6eY-8x{puAN1u!+c zbh!&Ae*ey_F52HMsYILaFClu49?F?rv8-9gr&aNFrP^9iPjaK^GGc52r%9WZ2ON}W zjQr&|&Oa}sx_LEu$(Y9JNC+k*m4er->(`-)+Cry{HIG?TCog^UtsmwXeXC}!$SQz* zE*#5H>gsv{MPO+PuXNYV++2cY6`+EJRlLBiz!fStmp}xP^K29d7>pYnbePSXWCTeq z*B3!^GpOhTTX^LR-VvxfM$DTbwLU+p!J{7kd!}d-7{V&K*juHffG58gIA7vXXJVCD?NB*STBXs!uW!yo2-wy9`Cc8(+ljF{lUott~T2(7= z8b0)hL3ZRmGt}Yz4ufAHmnm;*S2^qe9_jGWGXU<_@Lc(@p~!0X18~};0<89~HHMhm zo630BB;$PSSc=$DMb!bV@kNTLoyE7zQeGAzeL-Tkrgoh$th`fyI3DeW5dLFuFuPfBIQw2NLE*JI?KYd1d|0E zi?uG2@~wF|)5H4sj{RNKciv7G#1;f{)CVX!O1X-V!Yo8NTO`c=>}4VL`cY%i&(=!u zxh4u=u7*+Nzmn~t{Xpq+kEKyKNxkwTu~5ThjK?6)@@yOB{Dgj$WWi_|HLRWW zi<;~6*(u7gS<>2d*j_2rm8V^a42e+)OfI_dQJ}u5R4e`L8!4yXyLJj)83Zc*C~gBJ zhJyTKRTiFbgk4$URf#oM;PK?jM13y(Ci)O3Szvqxg@m4OhlVM_eTZdOiGH?7;7o0h zG@smFG)P)5^f^9NBWN10po9Dxf%CXQ=IMeph|d-@r5mIvR%;vQtJk@^;d}9sw{!$8 z$aR}f27zKPH^)cz#Yc{kG()0KFaK2diU0SmHt_LddI$``lylt%Ta=DaVD%v7sgObYWv-SGbcb zR12iwdt{s7s2R<6!i;7+Z$`6C)u7DvC=KfkRQg*Mr@4jx*@zBj^_Jc=zP8jRv5+z@ zr{9?t8G~V)l}&{VYRj+{u9d{vjOf<*W~LYwgjRMIzaJqw!#-`;a>y8~-@ z(cK#p#Svh4=05E$hi!aYk8OzyOb$$b7&d&^-+_E63*3b_DqXg2-HQJX-cNrACm)== zdh(FTlZS};Pw!`S8T>P4YI1LeP+K<=obP7neS9Z64rM#s=&|Ak+xl+0YVUnIqtF!ql=UH7#x<+6-`jj-j5Ck zNOAy3$-@IIwkhcn`2oL@A9yV)KQL35z|JSqrb53b=yxPS6KT`zC_6-OolcB#Bd1h~ z+n!Sj{vX};=(x)Db&_rm`yz?&)MuQZC28X38S*_hJUPlTFQCd7sZI#={0ldLmK*pk zhZjmhEm2pZ{f(P$#XSTqR4wDidk2@=8t75W$9~`jg@HOagsme9(l@F7DPz$X@xem5wua~ES@Eti^z!<~Dwq3(Qc(?6qZb`h{MY0h;_p@U{@A)4J{;D#V`n6QFrJvPHMO^xU<3*}X`PJiV$SNz; z{1Yk0Mrlqz3u&U$k5nybsQc040HG2;>Q=owRhgAA2&?#&pxrz!pu!IxfU#?zC+_ry zP^!4=!ySOJ_jPI)a^Rm&|GP9CA6IFjb7^JBVyuY2LVaDXnjkJOfL*$%_VBM3Hc-=6?^-+-eZ|<| zEZsJI30$*M^$~lZU4PaSAw{I-i9z1z5c@l^8&s3qU)to>QVj?uqx5ieNW$el_6LM@ zWW&~8-4OnnuBzLi#CihtLl@L}95%LnT^HR=z~XBhh_5(p*A3F@H1X=jU*&w8rg>FT z2u~RrWLb7eyqc?>yFubQE_TknH1WMlzO3iCc{fP-mAZf=XU+uXh{stO*YmoBM zB{{y;*CJwP6>a~3PdGcn)xJWs)sL}=P-NsbAR`Oaz}=wnX$pIYZ;#$W-4_?`9SsA4 zb-#p&!f`6$9svpObata1@O?u<&WG$iq{hDaBSvFH+aQb*22%0IFz%j#>LMP+wB5@a zq;@6^5rA=2h(h8e%8iDqm{_l;iF=_K;hq<~$aqSvS%E|dbe z<&C^f@{13T&7R^O!=25lxDK`sx`q0qI$OS-D=(^QD^@X5du(OCwvLbK_Et&Ui4#yN z*Ygn%k>_|c0fv&s?DsKenm|w}GhCxBRr*U76*$4tBnpE3!SRQ(8VMBk@otDiF`a6ci)pp)756*C-8m682Btv zOzb_WH<`x%Adypuol4aAmv1CUg$uu=L(_jH7||%A#uRGjNovPwOA|&X72rR*4bkzf zo)}oZz(}ALM&ifENfM#nqboc?Wi7K@!BObBS1dz+sPEI^t9=&V1kI(ZAJjkyO181| zcp}?KpFdA!eoh9>+5#;%kK&W*cNG1;O22EZxba{w(zjp8WYxsCi{~S1#Lj`HviCa! z>PfFHU6{S0ZQN~Z82bLKE9Odnkx-yKz;>Hz;eGuO8YA>!9ZTLR!%`sAH2~afdolJ7yd&u%-M}`;orsOxjrtvRa|;bT>2jq-AMsN!T!$f zlrSz+odvl};Nh0@O+4W9`Tg}Wabqc=w8SE5RY|{E8ceYNraV6zOIG)yM|*E+ zEf%r0hq_Q;n+9&P8S=J+aCHRX5tY$37q9aDs4mzAwj zl4hHg<73V%Nu3q8do#xNY_aRzf(kBpWx21Y(U+pFJv1xvDz9v- z$*7$Lb7JX@Z5)f_WRA~G60_0}B&LkI&}1fay0M-leJrI(QfPN!H=|7zTbbdo&~eav z<(2WK#3SX&475LPAZ$m9Z4iIjXwpIu=oUWA_B=fppK5fQjo;oeG?8t@g>0k$t9 z`kV+$-Sj};yV*j8>|&?9n)sy+%ex%*1S$^SpmLy?H0o42mFL7<8U270;aCn}v2s`y zP2K5^$L%WaX!$rhs}sHkbxYifiXiNc7U_;u(#u=bWrjsQs%e|DtXejjd|pRyH`stE zXxpOs)6mqv~R zk`h4`|GeN6?x1ss;0x6fUncm+iwQc*^}SIE)!AeMu^864erP5iKb?>36DdbuCAneP zfYI6YPdo&Ru+P3st1Xa%(}lLAhQDz4xIS+n7v~6jOT;;)sRG|pB4O_e4hzob7q0^v z+A_w!NgC6hpo?UXQSlLmYha|ohwS_@k0i)LOljz&MbZR& z8I~wU7g3oyT8YC~ZiSzf{4K<(759j+Kljrx`%3ax2+5L0O*q6pmmbO9Q<5)2to&J< z_V7ZLpeaE<*qfY~^AZ&e1KoLAT2`%W_C^)|mS>x_#Zs?Y#Qz?&@4FRR*33rwsZhpY zS8tR)?CKIUBWI(2lQiN)hQFg8=azX4Yx5l2D`SKB7RuZyrdkwOOEgI+TnsaIJL!^H zb}0~4!8~?IHXQ1lEHgVK-eCc;bd3Kdo5tOz#@)cmz_HF~*HQP0SJ*DLUu!h}!|D1} z^axlYr!2RdnQOA^eT{r^AKAt~rCMFzz$5qdP5A6?l)`C^`&^}?mB9&U$38ir$HNLW z;*Ur8d$*53{Udwp?hBjygATe!nyK_;UJ7hO;az zIT?*zo{wfLH*#&Zly&g1U^$YU{ccWbqP5vSHfj2U0i*xhaX2A?x z#}8zT(|I0*0JRLPB+*G3;EfMEHXUgWJVzhw;b4{7cb;_ z+0r=Odmv9q`G zPfDtGeKyN+;`~F|9nplrD6|>5*Z|JF15MPh9SwpF>Rx~7ZatA}M&h45wb!8bOa6PF z1jv)nI8S@EBRAQNmrE)R2aa8=ik>x91+Q}J?R@2yLdjq6yN?%Z@%tC@`I+BzRp0#{ zuz+v(fL}5IrS2K9j~9|3ZS;?VRY=L#n;n2t6V9NdzH$VKKoG< z6V~&e9;AbFh%GkwX*8p=8cyLkFl~>F((U@t)v!)_0`;;G&*r>UG9BZiuS@YN;{ktP z(-dWa-9U`adWs8m##c!~kR%~Tl=9n$&-Ky!}Vnenov20zoPygJt8`mWr@4|W>$MME4yn}2XTD> z_E+0)@T~S$cGe~N9j>w`TG=K9%e+;6*mxmNJT!3-c0OG+_R_pN3R+2UHjZAb!Ou#K zA14`^c`ooZ;e>N)goi<-~H99z#xfI)~7`_*eNGXlZT^T1Fn>Y$dg!E`YH* z@QpZAipdJoxeP~72u(De?kz-%fEXO;K4i%7A@@VB`-<4ZUL!YIWgBgAcab`^|gg~+Wm_)_Copm%(Go> z-YVVxmz|#%Zhv0J?I?dI-sbUoTn9Ldcx%Vz2pzuHuySmTFjQoNy4j&Ffc(!c=JQ%q zqp{3YqtN!LK}JO%&l`=W2zh4szRW_Y*N)zq38NJE_G&Z|C4Mc@Vfws{ex8Py8)dV_ zXq(OIN@s~Uy&0R!-4^DEmN{Y=iXlU_@=L}ro|#-2JA&!H4#;SDEEDK%T^*m4SyUe}AP!})j|JB7^SS&`CE9rL zn?16nZ^nq2+dQ6{+#ddOe`b)UrvjQ|FG2mGi(>UZBz;RZ!au(gA3-x(@5EZRS}fO7!VOQfUB%7V)qPowwBRz4j%h)}wHgKkOSRNRy@z%9X!c&nh z%51R6@{7OuhmgPcZqK4qbDV)YZvY5KBeL^mR;KKIHj!<#%67k-ZG1G__?y{L?3QM3 zx5Sf<&dfYt0TLA3M(DjHhrFUwKmtK5vKcUBq4s!+u#g4PA_A&&}iqGLbPh zgV(gkD-I3muU13Px;?fX5`%KsMifMFTc;TZdwmpt<{~;XKy^d584h37+STcNh#k`% zH9|_Q|9Jc2%&9P9wNSM=fD-C8?o>CJ1u1J}gVb(I&>3hlY;bS7jdSwxNSVp4zr1woIjFgxlPRHs>TiIr7Jh ztSoX)3-E^-S?FRIwc|RVh>B}E{-~J{JD#eH+nsP5|)>AWBis` zVNVH7mh4b39T3aI=(!SoV6eZxWROj}b ziZs~*YO^ots@5X!o#%8 z8)z-u_&=uCAiV*!0j5XShsuU7nr=p~E$(=Q3dw#jYfaH);dxrrFlYx+cl$2l+KHqh z6vvW$>nh|*MM5-c<`A7(L3V|@;1l7%e3Q^bWW#P6D2uL2Eq1-!-}|wd{8T@(uSCPF z4ovp-H$oB0XW4aX+J6>5;bO9_&Fj@&5=HpM(16IyG3{GTJjdE-0*O$!N^UAr0cPWe zGjOo^;_w@pxl$*);x11Hy5yzJ=-JS;&3y4tjz|jVn$?B9Du6gr3mi*}(JKD)qD=s% z`G$O;JrG|7OWpl|ADqtL$m{}`3-^Oah1o@6DX7^tp>|7EZ&OV}z;O-g^84;4>i^T4 zRZYm&_=?*RjMOe~!>;gl273rM)L7CARYoL~&+c-!S|??Qn&Kwaj8|M@Mdewh8?ZnO zHdiz((auLT4HoThc;#la^WCWeBh}hq-H~u!TV`26Bm{=wVhRFwb+^rExn215Do%*>^Z1DulkB#+ z0k9X|O1rU|K0SOgV__at0LvVo?^-n0P2MR5{jI9XQd*(XDkGuMXjIqY+KRi-T^wta zRFnUnNyTc~!s$-=$b|A_wo$dnTUbwiVfA1=P09*sd|M?IVunP=9C4RFbP4PU$L^#k z@n8-)b4m&zt)3Ms%^i?!2E}Oq(i_<`4ZpCcVQ_83;N#Rm(yf8!v_y|}5LBfa_N(dh zRApvon>~W$Q<}Zlu&AA!Us#gU7H{_ccsIdV9u1g?<~Jv1nORm_Hm6~!6@ugnF6ioL z1%ZZQo?_S`XM$1CAC~OLTXaC2HE=BA+0E}ITD_Lj$D_%Tvd)Vn-XTdm6sQx;(FrX2 z+uXpP%lxPtbh`Q`5be%KgVmvI))`GO0#>EE9gUw3rSyZbLJ~(rV*mlu@TyQPdB8cD z5we)&O=XvcLRJ{>Xwc6RPOC5CXI!lO0IIe-;aYE46F{_M4VAQwYBjy^A^BU?jTFe= zoyqm{8bf!JDmyM!hGY0$|GWXr3H z(|4LaG@apen($Qn99QUFmG7Qh;uLBMp|1bQjIdNg8tR-MD#mjUd$VEN-}ZbNk8c-z z<>Q8(4#BAd?}eEpNy-1#bg7RG$$b|HqHxkE_pSi=|Cx6`q2zZ0=& zoI5|pW`tAZ8Ml8aXVXjcG3hOZ0g*tR<^(Ha>;M%Ln+mg~(}7gD&n;Xz!2&v%1Q?X5 za5F5$N!YDIK@-lq{y*q~E&KnKdvn7|?~u$>MYdBmXm)g3`PDxCb$m6X5_KZL_DT|F z+g!<4W*+VKAA0CFNQ9kW5bx%jZm8B2Ahjk9uLh8v!!wf6og?yX$TT~0ZP=SsxO5AT zG9qk+iDTcWVDJ6+q!E?07OK;OO>H$(o3AJVY$3m8Zo1u!p~if9hh5zkScij5&Fl_-qNxlNrBQnpk)1$&9IaB*N*OiMr7u*PKFp{+?IB60fL%P|d~cW;Hj}8}=79$P^-9 ze0Vszb}(<7EHVd+HoRXFfWx>yQzY{~Ng^G8{M<~MY~JVSbN`W4MBUBhhxnC9EZVlk z-itD%ok+!d{(^HDB5I-=pNE%5E@N3mHe@Uh5t+zX9_AORep}pM=3y)kLB{gR3mD5< zl(9S%GN$;&aF?;HDaJBHqtZI{h4V?`Yfg`H`&2AqYrtjRnBRDmi%Bs}axrHsF6I-8 zi<#i2%@Nn;h#thngkJa|{@IHga4}uVNGEpY_2$IkHnVVyBu?9TgrdF4hf}uekU|w5+DM_^-I^_>ZIP_>XUPPJEt0 z`78TRx|BcFEDC9@me8<;Tm`bu@!5uFNjUG$?{1Y6xAT=KuUJm^u!(^BnF zgzgVkx;q1X-FL9p5AiE5_TC><$L2&LUOVeTpBf#ZO7uYPKHR#^Y9ge*UhLoYA|8U5K#nK&)xzai2jtbnY z%fA~EPr5RQz9AY86iG05QeXQqejO13rpv3Lhzoc%l@9r>k~hJtIq<*c)$ED!YOpj| zRxYEV{=f2S4m8cH+2~NOs^0&NS7Ry6r#8U%?~)6&}+>>d{dsIZ4uQ|PWhC*|!? zUJW%xzkpW*=)lm~6T+QrDxaN?*Fr2B^Iv&2-*A^v5zYLZ;?=~t+2j8YyqW|5kykSu zE6JkYu~?ZqZ&U$$X0b8?0l=ZJhh&0p21JgLrKvA z?btJ1tS_OE%@%P<@HSK)0R*wUT;Gt@4mQymO!P@_^0kVwA&Tt{k(dY$2o?8EKo?PvtCyS=XfXZ?-B_?4Lb z_92bZ4A(HMzDfl?NC}>aCK%l)!_`~~B{?nXuR1R;TFaZF4f}I6u1Bn4cgK3{wrCss zMN@X7HVzi}P1iP|YT+=dXw>EnMlDE^;*4=tG`T>k zoy|6*9X^!46w0sydsYFVL%c=v?k3tk+EPaP5+#lX*4p_(9r|DJyl#1x`4K$95om69Qqj zRB2am{yJJvaPC&W$xw#m0eRNXfLf4SwLDlC2RK>4fF_yfqhl=^qN|des(LCSMil5g z8-1pHlks<*845m&ruWFzbVfi7D+^bLSRXlVA&O=z6HpE zMlOQn0>k5`NL`sN=5bZS_iW|0!>jszwvC_L#^0X9(V1F3jDQh+_Q9A8C*NzNHr4q*6lSqb7nEheJ`gL)Vp(oU>N;>NX@WsLU!mYmt}VIiEi$Tb zXr0o51=F{?s+{fBqn&!>sK@V|A^kAb3RJ42u&mzTS33ow%As3&s0gh*P$vA8M1X#vG`Zwpab zN&%GIQFV69hL$@8vi8w7|DJE(ru07ksFL5H9&H@6w(V80oqAlP9+x?lAeWMEhmrUz zt3+csKajHiSgF>+S)raE;H$MbhrgB*p&u#PPfoI}&T|eXQ?K?oQA=V`t76~*1c^X# z)P&vQJ9$bc6RvGlFhqivr<$GKB`&)PgAlurB>{l*Sm_jddZF9-Cl8Sz_XL4Uo zElSC6TSKl(x357zd}bFQ1anQZ+zbYb=h6o9Fm7EnT;Ec%y<}_2juMqKk|hn5)92>g z1bIfFJSS{7xn@4~AnT#_MG~i|5xlA|0(pdl?P8Oa@-?@@NiKabs@;dk(Da^k6TL3( zNH-(qkYH|q;@4D=tVB2u(7+j|q3E-l1!PrUzFnmRs^8qX$moHT z|MUbbG-guOPw9JB(SABZIO%o^R3As-F&9_|*u0+t{~m?NU1FA9oE2=#mJ9yn4CR$m zpj`o^CfP~ltgAsCCh-Q9*y!ZTGPByjrmSjoms6p&(L#qfM8W-hBkCdnJ^24p<$y%9?B`gHE7v-k*q}w%c5?)cm7bg}$KW*i&kHCE*{^VBp9C|T6FhUr{FPK$~}FdUC?ZO{|MdgEwxuhpkt30`sx+Z_fi$tEyu;N?hDCgHRR@pZ^@*ZpkV^K%Bn7m1;6r&vs*qRsMs)p=! zZ~~pl_aY5v2J_5dxeaa3W3z;Kvgmk$uK>FHV40o^%ZzM;+oi>!Tk^9)rTtGxAKH+w zmHNCY5;BK&oq!R=7Hg*~N!;yeY-(|?-QRS?D?L7rM1TLaa0D~hTSCHITrijK2MV^1 zr>9rc%8RPzVbN)mir}}+{^`i3NMAo3%Dm+48Z7$aGxYFRqjx2lHJcvUHS}mVvj$J_ zmoCJ)Bs(u!kFw_RFZ6>~Nskw4p~8BZIIajn%^xd*a+Am7N80~77r&S=76UDwgD=+0 zjIS%Pgie#^;Ujfo5&X7(c{(0Nea{!duf83BjU9#hGMQNo-7r~R_6_XN`KIhRi87^B z6zL*0N4DCF+3uTzM$0-p4zKF(dyA)}$d=ou6C8@DUO~5>-lM9Xrl;!}dZyk&Z>hJ^ zTkCD~cDi5B(zEsUdI!Cu-buemzgWLSzf|w6UnW+L@r&yYDzSAV-bjd@Z;dn~-N-O9 zjTT00qm9wd@Eci1w$a|`WL#uiY+PboYIHU(vt`?9)Q8P>_t8zGBb<~?qgAfn4C>NK zZ>x8Nxwy2q^M(tfmAF5LbyjDAI+lxPShb(h{&)lIZL}Qgh{h*^aWFseq(YoKxvcEH zX5?BtPOU+$!pG^%@;(7-XdJA|e za=X1U-k@I4sp=y4r8@21>{PRa(Shx$ja==t#WB#?38UeTF>qc|tQsNFqD%~Ny*$VM zRysV3bKke8bGlvmOa}> zMkCN9Piq~5u}v0^Rjmz(@ot}Rz=)Q2DBY>f-c$!T=mMKsIl${KFsH2poO6LAEgWEV zOSKoU_fnjg>NE$K>;i{f;2pOQR=Qu`;sOg?;9ED%5f}I%$@#=2H|94t@sDoFQ{4J2 zbAfFx@PZ5Ma)G@r@Tv=Z;kIjXOSco;Z`HZL4{qWaZkhvb%pn)}pp653pX}6mM{6f$ zx%-JZZm*t8cH8d0s&R*4n_JE<7kJYJesQxu>UP3nH)gjp7D0Bd4NjrQW>VlMZ{VZY zQ$k3RT;?ACBDLC62IuhTQA}A@o-X7v{)kJ-Ke@kqjI`Dr-YyCTAG-hrF_TSs9IdtH!C941C zw(vA`lQ(dj+HgYImVCq8A0K)H$Gm~F^l4R%lin9&y(Mp^lDE*XztdI{{Hi(>o}+Y| zl#$Dbw}jaZK1#`6QOP!X-_&^nU(+0%yqyBItucVaGh5Tzof^&o*lnmXH`hTi04PaF z2cp72&kzlQiyXE?Xt!j`xA8;iXdbkL;^1^Xv`gVWI2UvhBXZcEn~HqUSvxm7&q^L$ zEGWNUr03;E2}iW5bc>E>%v?M4r$6Yd4V*N~z3JCCk>1orsr^?cb+_o8b-df>MW>q+ z;aAR0qq{*Tr()Tjt^nFxJ)OQ_0q1#Dlm+7eb6ud9^X%h1`#H~I=Q+@Mc5l=le|Da> zi>sUhEw(+@Q&tE$8>-Q`ujZp8$^ZPaix&wjix%Sz#73jAE~5dIJx8 z;4vQfF>j(J++CDt)yVT=vNtfu1K;O?M|t2f5B##z7tp*j+qf2T=Ice#O}%pzy4ppl zXj|LCv}%fXjlIcn(V=={xfsfFjdrOmg=WH^8;xI}(fIaiG;Z$rc67(rgV!&2hqOy$ ztZuQZT%>NX>tZpXw&Jg;@0H#yHgIZrB+ ztVOfSqX-yX(K!g$V)>0xspW|GJ0)D^JTG=Pf@pWDcy~=*>O38u2J7T$!Yy=;ER1fQ z?TK4Bh2wx>geCd9P5jMtCGY%Zx~W{uZsd)KwynGY(FSLlMnv1Q{6eD5U8=*J=kJ{7 zX<|;4!_oBUQ~VKPlUoKWM)xTy!Hv%Ic^3)P@KM5{+Tr%*)4Ox-Q5EdOSqx)V^A0A{#m(op$7CksuE zDOS`py8R3)ttKD?(W1t%06OaVsFmVDC5cc#v<@ilQ?_q#E|6Y7jk$Ox6Oq#sxsxs$xU1Th&aZ|(3u(>hYQ5aM*`vUhfPx?=LGK& zX*r^8jww3jj1fPw9E(knsxk$l>OZABgXx})muK!gb?1heR0Upf4V=vrknd6nT*G}ai1Pf?-FdHkZlZbpO^)PFFK~K&wE(nVKx5;gbCT(qvXrG=JL^vo90oGIpg?qez7m zI6M_FwzavrvKdbBEa_WVt_5ZMiG@IJiRQ067_8})pHT4_+m{fpLi;x_2SLfIUP3`+w#A}kZIBcMkYl<&*T zmhs0ILcR@B(%j5QmKt`bomE_))!#M&JA6F{CT41i-t3Y?wWZ<#KSUbMD1uFHjxIuv z%;Y;N`71b4Ya=4_6EVzxNY(x@Ob}XNz8|)c-l?iS|9KkMCpw&716kM%TfS6kIOO$G ze|8D9+!ha`7fhY4z{%mUDueee(9Zdz=Oo&ecsS=~v;@Ltr177NX@=7LGV|EvG!mbw zmyEiGEzz}?%063#>+(#0(kefF=j_BR$yXMWjwtofEkkr+TIL^Nkjy;GV&^l|{f|h< zVNaq@58HkiMoO&$;izq5jrv`$7R%pp@|2Ua)uSyW`=WT=AT4geRz5%TH!@8k)(+AO zC4Vib+m2j)v`v7BupiLKhpr)JWq|I6h=jpFY6SO~tRhap0w-5hs>jSoq;^1Cwp+;u z*yTZXNRNUuTcZ4C^vjJq&{j)@J|^Ix$=*tkRee{DLYtLIq2gT0u!F1ZP=zHD1L7e+ zJC%vYk^*S`6Gc1HP0`AqEyc^j(P53YZaNTXb{D{{$g9SSk0RX`EzlOFZkCHb(q)AS ztF`Ju()>4QkP6KXxk2e8vq2jwcxrR;V3F<hX#Q zjiL$BJm7uHW>Kf*pdICMw5O-mHp6e38%%bjrDHAqOI=wZot1=m^gJX{TN77X6XF-W zR7$lqg@V0qbgxRm)3Q&OWT`WA!ReOe>t)$VES85ufVoREAhIUvE5c4 z%zOAA5p%m*(ldf%^MJp}RfBeZXc~sZ=p0>&1eE;Q?BjFpCV{lc>AbR!&u?W*zScPt zd^d;dOG6RJw{aoI%cNIEz;KbP;$VF+oTrTSL~Nu)wC@cTgfR<-Z&J~@dAO9=3N$T; z294h?s^XDyHks7UC)zL<-rd4ir$@@A_zXp=WtUCj+b&jLNndFrvHQyj-oMw(H5{ny$9THtYvV^cLC0pF$S%BZ+i7jw?-J z+fawg^VqKmDz+i5v|I^x@f&r{rY9;ArBRZe-X!S5&ko}B+SRXnHO!OG?|43ask*@p zg~H`PL{yY^7hNZ?BN^mgE>THIevFs7#dUC$-AJ=0DWA7XhV{IS)-%z=5$SWN2_SRz{;-v6L4%723iL$wSPD@JLtqBoq7SjeFU&6{jq#g>xrJTD5f-pZ2a1Jb z0x%~(D9~>J{GB*(0Y2_XPRCw6zQy3B> ziXQ$aEWua>@$N7Z3FleCFi%ejT4Wd(=w-2ZOc7h!yx}!A?5NEE7n-sa_Mj;fV7=Kg zUEQf>s>{?2b+wv?cdCW51@?Fc8Gn`paFdkQqmHY+E+kVCSpW(5Y+n?|c(E_ef#x5K zfT3xLm!f%a!omN!p?gP*-Z|8*&Gl5hC8||pXErxdjh1F8o2R5?N5;5-NGx;4fD*%b zXBS|okfGO=8mT-9;TQur$WP z!|Z0tbQBTDlFbf|(Cf^)9`GOb+l*fcLB&H0icL{G*gFxaGw5!(4@|-Y>bo>(dspZI z(K0~OGTq29|Eadw3$xXK8nGtY!H^+e4jIiOJR`-(5Dy-N1Q~SjV;?0oIHp85QJ?0OR2{ zIZE$DM(|v1$Hr7ys3Vl7!7+x`JQNBODa$~G1d)xF;DADez3Zg}=U4?DBpyVwrLV2# z3lhui>Izh@K#yL&DRa8gv&!6Y1X%U#{h%6@B*%6tE_@Yj>KuiIP3^B!C z*-BxGlt?wdG$m9`)0pu1KWO4Rk^~ii2tO>)Lq=w;7zS(6NHJO%Esa*91e0E}8{g8-Q!vo^oNBkANhaL{e%tbXQ&e0lW^I>zZxJExB6Q3KXFWW0y z{P}pnXW&F}0=nO6Ezd~TQ|zNa z_%@$J)7CbrI1z zM{hNjkXw=?@6m$$Q{IL%qFPeP9vlmULG&2Rm5`BQ)`_xRdWx7gCP3>TSx+}oL|TEK zg4m!C5Nb+K0GG{s05UXfIgS06EXtCTwY%`}nj>9dwQ_#q49< zg?@6+*xlQ*pCvzD;0xG6S9=Av3_82a?2h7GmYJ_}Q%aOjN-%S6yF3iXR_!g~@kH!u zNN|m=)uD_gH{fIdd)YcshKDO|Xl7wwU1Q4(;%)>Bd0OUAcm9>G0d$+qE) zyIXg}^v@Z5XQi_K4JUCu*Ewnc`MJo)N$zw5o8{wgqjRWW$ZE^R8sf8sd}YoP8-dT{iYbe;$RUe_?e#;hw5& zcEBf90DB^-R9rJy-0H_&Es>aS-Hu4HcpaR#VI9jQ>qskca|!(F+e%=cw8XHoC~1{= zrIGj~*9;LopCB8lxgtlJZ5^(kmvJ=%G;@yh%^INDCd_APtS`}r2E*c^BHcJ46P^Vm z1AD@JcyOO#u%$l!HF{BJRs3 z;?6b^H!1GIxVcTlt!bivb{I{hizhVXjrw;J$?7gl_DQowz5QtupZvLrs{PbNy2;Hh zj9b}6+`J~@W*dCjqDFD!;~Q0Oe*A@rHZ@VXmz#)tw~4r8O~k#>MCIOSB5sOv%Qcnr zZ+fCy-4iZQ;{t7!VudSw5N7!vxKypG@CCQ(H+d5M$paU7;GQ1%HV=G<2M&7R5)XWj z2fo(>XL;Z&J+KnDplwd1?`jK}BKB?qcUy6ZC-xB!e7Of6$321jJ@7~m{E!D8?SZdQ z-JR?7?N!e6dgn<9`0|D|?SMg=FkyDFTT#C!(ou_Wgmu&hI`TbRVlVw}iGUNgZ{rzs zV}FyuoY(C<6>RT;FY>^hy%T_u@res{pJocai>_pY?O-2Lm+2;(swvTh$DVI#3 z-(Mv8gUPw7^`TtlS9)(E`!~IMQO4XgucqHuNRM<8{ccxI+35G*^h^GQ*xLk0h}m?U z;B)l*gw(v^C2XPO&#dz(m0-QPhr<~_2_>NrIuXAEP$C$%JyexN=cqTc|1*o>81TV)TSUEiEd-`Jc6H27$GPl$Y zDyIqI=azz4A`PsXxbCf+N5zg(HRxkk;?tKmb3a&u{>ew0YYIN42(up^3K ziHifQFj~MJ(N7jT9~$U9dq>ka0zOU|mv}yT<%OTDPgI`vx_i8Q<0t#L#gVhgTa;dJ zQG>`_ILcO5R?dSzqU$XDmx=!{yh60ar^uMKz!pif>?fmtMdB>`30Ny)PQi0woGnX~ z-%wc9D`~lHmW~&%oyvLq4^qxv#Gkn1IQq}{RBBFODmlt|lvd?L`dvuBN>}x;=4O9G z)8{PWa~JVhcg(qC50>$wW_V-9Q9&P3wxep1dz_VyBS)l@>Gv7kE%a$!JGPO}p309@ z^2tRgZ$b%n(C;4lJw(6D@ve_p>%(xlc>h+g!~#86IX; zEu(qDY&j9`J3Eq6a*i@eZDnt85ax|ywA=-U=_Psu(c zuYgLKVY8n(UP(`8SnRb1p*56ZJ_#i4CM5I~_0$J64nGonoZ=S{e4f%TB1cNKN(zUF zo!1EdSA(+Wl1t7xlw&vL*iOHbNbvF?!N=(BixhL1>b!$;Jxy4C1tG9H`hA;XW>Q_| z(eEpi>tp&IPqp}fQvOK4Z&J*+lTJs3a$V099Bm$-=$BK7kBMJl>w4Cg4C8Ulm5+lPu5LIh)0w zqu6QLp4h2=C8rl=zqa8|j7DH~d&C!HqM{X_GMwndj{K}jb-FE|QbW-Dt(3F1F#En$ zY*~ldb8Yz#D*mXSFHu|V=8k-)H$QghF-d;8KDcI(QO)+TM-+wY?|$y>@C@huPdVe3goO2j@dj%1?Tq%P23FVtwyN zEZ!mo{~v-shYz`bc$<_U*Cd}(fCf)s_3Bm_4OAB^N4rH)iDEW@T*1Y{v>{pnpdELP z!dd5W2G5-^XG3FPr)X9sdiiW7=3rK=#J|MA!Wj5hXM1AZ8tymOHL-Q%#OlInU%V9} z=)w_8>MM7Sa=T4YgYb4n)I!G}AViZw1!>`$p7zGTZjh2jLZ!T>VYv`lTU@&QUZiFBq-7*cWcZ`pk*8=#LG9w?J@}o3uwPSML~jdkpkWvlw`H z4E$RR48_1pi-d@u%<$H0Haz_C0AkN3b6J#eK5?xaXqwZD7%csln?H}+992O~k> zouk(Gc7rtygHK^F67B9q7@QOh)?)DMXz&>fBI;Gal^9$cod;_%7}Go4h(Sc2D!3Jc z+oHkeF^C9I1$SbQFr5nT!SK#lcprv;h=uoKm@u0PAH*;%JQaQ$!_-SE{2uqrBNmn9 z#hK<=3O7NbWrLhf{1XI_;Gn?oV_n@d23{Tm^JClFl@f>IP1nfHZ4KIeEw*#G8!EV9 zHC}Q-OfF8}Sdcc~i#-S+2Kq5&IJ&ehDCx2W@68L|w^fe1caHjXOH&K(>e!dM#=wp- z@cI~dLkzT_z;~mwA_u^1!to_!+L$h+;9TJ@9%Dyx9Y9 z_rNbYmR@2pdpz(y54_(4(@|&<53svpab05IRWWdI41CCg4n24)23Dyrpvdao`*E`( zQoesI!6Pwnf~Ph;J;$JehPzUq#z&kvywUmOuQ(ZFi1IoJp1eJ_edf{FooWzsCobyf zk{^f53aKf_&=iDDM-k5z5F%nn1t($Jvr`*j=_Ss&-Px^YViKZUoPG$h;Se)_V=N{j z#e$982rE-d?s=Tth%h)_+={L zwb48#vplIfkV?Q6>fD<{S-Ln`uJdHMNqr{of}A-j=W?w9x8y~Q69)sT{Ry2f|K&um zwQ)_Ky=FG2vln?CWk>1v75e>|erJ>P(<=IXjY@os;B)j_MQN(==74P=_&tjMntm(k zi24!5@1>Y(idjMF7Z9utwja>%%k+Dke(5#>Xl);VvXDqsAOGl91fJFTlm`(w>~o0t z@o^4?zS!V%ix7B0=dV(l9R{ENSE6Wj{xQW=8T?=w!GCn+D&#fuIh`CQg*U1eh-d zU+saf_rR71zQF_k!2|!r0~dPWTRm`J4}7Nw?(c!`^1y%fz=J*TP!BxZ13%z_!yfn| z<;OA>@sB7B>-JGDAcW(q!jDrJhgpRyD2$`6!c!<5BO<0zI7T)+L1CN%Dm;h6uSWCF zqcBbg6<$c;kE8FOrZ7$q6<$u^7h<%+a}B9Xfv^_%~BE zKffUrf18(z_t0P-$}BeqUK<0iY?59ph=Di7z&|xSQ+nyFJ3J({ztLgGb2Q50uPZA` z8zA$^QNDmkEr4DQcI2t462(dNpcKE&BPEH$#aa(3k8I@{wKxx&{93;QurNY}>{jjd zesA>K-|tNo?81K`N%um>gyiK;O4h}bj$NWsIl7ydxoL8}X)bos?Y6aFuRQ2 z`>kTB{Z_-nwv^{;xK<&>ff?u~%#u1ZVt=NqRRah0Sp&4fka)Q4CZG|A$I1%8*g{cd z5jcgbZ@Dp+#r{lMZUNyh5P$OrJ7h`im(|!cZ0m)px?vvJDoDKNd`&B zVF~pilbzQ2h7#QSe{_LYji`hPRO~mbWJpzVrLOez)?u7zH&_gYH>07tFD>Cqo7WEr z+5JhOJcx3LyMlUuwu?xOgPddz){8A;0;3;=zoW$!Ww{Z_E2i@EX%WeutU|G2u@QPN zSZrIC6$}Q&hB5w$QzuSjb2aUY;*a~iyqYg9L4^{zVLrB+Ev&)^nkm;%_WeP4rEQ{D zV*6Bl@I{cKo7BI9{zuONI@;h>WTY>tmoD2FGMEc=gEzXHF4`Ev%4H`sF}di;av1B@ z1!9PQh+P<5+Obd!FJK>Q+Q#{4!KtPS$x(kuvR6?|Snk_`qUzdfTWGjxY$_#R@qotT zNc7s~hQZOJfiI~?_qOZ|$zYE*b0aIz(*vv3NimBpzssnQabMkrIu%Njm_0#w=oRTG zr03xLyU$OoVqLTfh|;IcuIGA4{xwXwbLj1QJJ$x(_CndG0We5xp5&+-Zn7gn;aIc^ zM?Aw&zR4njZ@vrTCQGq=N=jjQqk0Y?Cxof^3BgoD^d5$a*K^ zem8(=zmaqc%4vqc$Q;>1?uM6))N9#TF4*RkWc(^@)}dvD{djI|n;LG7yKQA3(kKrB z`XL=Hb{6v1qh&K7$-mpmUqN+tn_VS#^+O|DR=wnPL0n=lt>k*1)Lw+gkWj5;@AR$a zB4KdYLVv<6EX7xIcnuF4EOI1Q${96WS4QdXLsHkC%?3Kp+guT3E5tKXS%lq%*=*g zC82ZvjR@zEQH&{oiyb?bRZ$z3l9tq5Y{2E_F1*_4u3o7di{Y<42=Ok5XW-R1nz z6%Rly{E*N}GXEQPjQ2e*l-wcet?vkuV=1vCSTP`K>u`N^ojNCy zo5kJ|EXQF!?2U3$u5e*wa^p9Frr2BZ&X(x)_*D?x5w*W@Jtc>>eONL!0}YbwEpa~N zVK%jsm<6k&GW|`=dPrGuf4BL(&YC=4@UP~xJ44@&4ut;+yW3E71Yx+Zedy3-T)q}Z z4qe9O`%udK*gcQrO8(^%{z$MG-L4GthqK@$94e*9{c5Nd$N>A1!=42r{>4-L7*NkS zfU3WIitoz=9Q_qOMe8Cl!he4iy2X=U6uZf877tI@b6I;a`V%%CjoUJ|YtR?PTHMw_ zCo>l1Y0ZAR{hj7dcGlum)wP6egQ#l$V#&U{^${YRCy10;*&2WGc6@{Chy8#&(bf-o z1cujD3(({m%6Pf>d%zU{-Ly=kt#>tQtdNC>qXXVRivE7q*@t!cqIlLr&%zF4IMwkv z)roVe)6A)kBlRED-+}#`cjLIizp^~Z7?vniPEFf72-EwL zdXflnP*I*{PjsBe`y1RYWrhFOEahyj5VI=zj;Tr%RSnGeKGTa}A8l7AO8vuzg*(}Q zf&3Ht==NV=h-MV&>=_~VuIA4blU^ZpEKh4G%5vKCj8yn19^@J5gbW66*J{2368%wx zC)_Va=VVt@0K~qXiT&USV7h^=OG`y~FsqQBL{+lsM9Vz!qIp1+O)z}!F}02%q`6006S;y5WJa?8XW{)m*TrXoS)+qniG z&FbJ$D&uy+-t0AHU<>rUN5u*mORFLNYwq>A(re1}P6S!&-*NWkU zICr?l7EAY|&q8B(CyN4Sn>q=bvZ)wkr8JGKk%^RsV>ne_yc-XWj>VF!Uy0Hg5ddyTQmfh2*V zHRy}61A%mu@DVLso)-#N!%Slp#G?9`ez(x?VfsBrW!4eAh<;Z(f*r(Aqu*LR#t1v9 z5$>LBFlDG6cG|HzSu8bKg%+i#EOtWYAEH&pkeSDRlgffA`#|U0`ylY1=ER)U_I&evE++kd=J$~R`Gylw$T~)0hW7S=T(c8 z4b-DLkDzH(l)9g*^VMrq^i-XXT}yUREjEtMFSgCD#O8>WW$Ym!Ht5bp+#3*|i!!n4 zpJirgb-9fOb>*o+>(=mX15s2V?mYRE(Emk`X0yp~sqge^v}tO5z8cRUa=}2<96ncq z1}jz}EM^Ua*L?gy-Ldok7&l&=$6uHS{Q;HwsMou_h{8R)kblt}J-XqU2I&8aB|!h% zK_FwQ(Fsv3jkvl9Hszk5ro&s&ZUS^IE}gSTg;=QBBaf`3^9`;Z`>+(aKCG}^EwPt0 ziyh(obZ=Uw>w7-}sCMsSt{;MqIqsP3CpIYkt`?k%O+E*EHHq3#Jv8xC&-t0>yDAS# zuHXsK+22E@>e_qMM88%RZG%Y4(v(1(Gc^1`_7mri-$C{&IgNQR#9rcRAcJVR#vRg4 z94GhKfkd9way7m|^aTlz;`3Jc5hON(VYUp-{08lyIzp%($>|xi|MD=9$z(CNziCX$$k}|35h7VJsT}g`SvO?^IB*%3JJAkh?uvd~CHyu`x{k|a% zy@_yWkXOx(I;3u|0)#)GYf_tme01mG;5~f*v*k_9Let@PJkK48eO@%AXhD}rX zQ&oKPR6ZY>f+t|RjsH)tPt4)p6PqkEg$==?$b5G%{JDe3VdnS`K*zW!L&qf)_2Jzo zR8K~PgknFs`+F7qkQ?el4Qs$Aa81Rdas`=4R%u51RL$9pDr z2gMdej~A%{7-edLSz%9PgA`1iG0Fo!#yx?DJ@6e$R`U<)@jKNCe|P&p5#@ueUvRh2Un;fvqh}|DgV2w+>XwveN1|ux)3@t(d0nXZ4@y)KPN5;Y z6ll2R17^X*`!-r$T^F{h8GmOLorAPl524PR?_aC<>?BxH?-rxM3CG}(BLNu)pWc!F zm+Ku7$hf=6SdcX0s-^J;8s!N~{j74Bwz&jPH6qXCDQU{U5L+P08e@(~Mw2e#_O8wO zrR-p{|L2BD^rS|nNsOdM#z}abp2Xt}oH&3V=z8*8GsiH*EDFAWw~y8Kz_zSj@HI7L zE-J|0_rPzta5pE z8A&0>EBhFyoNj;~67>3YLiEqj?>73K6X)7Z{<0YvyXx95gf??#C$X{3VV$uB)Pw8j zcfC~nBl2cq<+-jc9d%TgusAV)*Inm9Hr61m?;gZKJsgz!=SxuE$6WHHuGa?95#6nR zL%&wnL%}ZDQhV|NII{Z#rBcp8XwYC?TF|YIkq9LF&D{FXl{n-!npum3kF6}!B2ug> zMC&CVtm1lg(7K8g>uF{fQrw-xYV-@tKqS(rZZ>7h?}+P}KBopBX|u@cLxwU1ff~uC zZ1vSPTmvZw&=?SJl?n|`zy$=$6({VAVnhJufuSepDUMQiOTE<|qh-)YzuQ1P^E4yF zX!S=p@F$d_t%TX=Hepv^C^Gdiw1-nGlXsxKg%&BY#iFNZ(j+Yyt)l{ZTC&VUZEBmh zYDEU}GxZj@a5wjbIpup6YuD_>zEE#{W?#Kn+&jTFe`6#YEi5CcJ7sEdp0`WR`-5rt zVA{o9ijEdY6TP{f8i_;>^NeKfZ}C23Qm>tw6rq}1Bx%vM_J(3hcyCpA*=E=3y} zvyvKiBPaI<;Xyd=7(aLC3H)&G6OjC^MP__5&}v2-e7Dky_2J^zLm}>_J+${;7+`A!uqBj@NZ(O;Q1|(b}aEo<{;DBX&hUVEcCnPXK=-5j}3P;Oplp zX=`5!={dses5&v(`-zh;QxY!fKP1oG)Wq4EM6Oc_wu$}Ipu^)S;!Of`1D2(8xwtj) zSthH`0;{UT-dCUJw9cf47+Pl#46K+SqJX6M42^x5pkQi&Yn6WWTH0ikv9mu00<}WQ z$FD+6i%g(Qu+$)BvSa{h*FY(Nc6sX?bc&9h;w^KCf2N6R5`ZBI91EJOw&53woBXqBk`74^O>7su7e^~utE*>AEx60I$Lv*}KIWa_ECXF`u?JaYb;&3*S zBt1urM+beFj3wv6bWed?bJztQ|MjaR`&F3WzCiwrvanFd+T>%njhe=vUWE&g_zN6R z-BuecD6|Site9P_wC#fu>z&_ysEl1qLXxtk2mUf9GHdHi3pF7R2z}b%0~H4=z8Ts$ zAHI|w4kKr|kZWN(41&5;PkmXj77XQvdAkZ}$d%bIkHy9M07g_vJ6NF?$n>wPaPjDj z$Y0H8U=`UgiyLv7acl(q<~$HHs${2Ckatb1*w04m8L%M2lospm4H_9lQaZ(D)}HGP zTLxagUW1;6I%zF3<>8^)sf|6U53}@uBXZ}ov>3hvy068hLu<<~95%+Rrg~o3DOt>) z<|ImKX=!a~T_?=7iDy7BK*%6(U2&E(BXv@R_U+Jr4*hQE_c+So54(xKL0h2~N}#vV zo|6-WCX}EydoOYGMDnJ~evs&E zPadfEX^GoBH^AC_Uh2R5C{L%FolvZSjskr2d za+CHOXSaG|N@{z(niDtYCvSp$bYczHY#Unk%lO3P8}qo}%jwNYiIc{}$$qZG$=Oj8 ze*A@dAN<0-1wz0*T80#MF$*Sdcoxq!UNI$fgi3{Wz<;ZT_510K!F-Z7|@FL+VvNb%@nL|55M*Bs6dnNmVS zK(N4QVJ^OKgModCVhb>JSm>x`IfR=|4yPYEO4+7tfff18kMeWBNc zpVkBVH1zXZ=l}fHOT>Y{A`-yPuP1<=$(G7tb7-nPD`ex4MRglSkVzGsLk_5EQNfMT zSxd!uV>7(t=UlurLIvqL!TC!gX#X&IYdsfF3_ebl@5o!!sYXe z`034jGD3QL_52ov-Pdk-8rC-PuRoWHqr6mHP-`}rlTCza*^7d%l6#w-Sj=UoQ?=*p zf6hYW*qvln!k+DqhB@2%YyA8!T~AGBGt!_nRAe!-4tHUA=g$W3&Tp1{;t&`HJR9ZH zt_0Q6)8OWQ^Eiu>G0E2cFZ8D@Tl;I3y3xZhTG%7)PqOHV9?`WPh8ANF8%#l0#)7u` z!{!?l#t7~%g}ave!@knwb2gCT1JmJ=DYAoN91H> zc7%S1E?lVr2d{ygD%f8&U9~IGgRQN=oUH4Q{M35<)pp>ozNsu5>4r@VFua>D_ z18Y+w)2BR#_^~Pf078FUrakl=P_I~R0@tk4NM#=j`PvQ7E#>$zpsh#7z5vtwT_M!x zK~Nm8=wdS#ibmL9^aK>;J8nV_RwlVv;NC!ic!8{1ayF~6TomN6ULSMfw#fw95jc|F-9MiNdwknN(R!If{Se$3#=M;$v z!OPgoY2vd=HJh?)#rUADW^uKe#c}*}+A{ofnm41dp`tEG^ZHx`QcZLFkj_`wzG4fy zX-14dpcRri!Nt0StkgirN@k@w+^Xj}*>;g>-qSva#Dvl9kd$Oqo*!3(=Nj>ER6cwNAC>ZBy|&Q#$})kf#_u4|;gvw)s*99y2(x;c@C z2eLsj^EwmfwpC+fFM-bN zWAA_KMRHVMD$%|LdiDr0G<6+`!vl{;@?~CS=_6=dWHJ$XJw z%!%O`VH;AsQ0H`iAN|fup?whcFQ1CKHktjyrvjarli5xm|JztPTj#;rA->&Sn|yG* z8~-%;I%MyF;!s9SUWN-aQa7-f-f?#dpV&eXZc-?&J8mE=Hu4p&bh}PfHwQTUwsK!Z zgy#fA0ndRx3ibqYv2fg$TTB1-F^W+T{*(1# zo_V6U6g}M_(=7D?Y(iUZ`^!!Aw~zPXTh`9Se0v zvCH>rNojDOM!V97+wUCHG|1}9>;JNepHWUdM>L9gM;nc8?Fmn+S6}lPaOdb|erz-U z>t_BQ0l%=8r47q;a_JJ&@@|csoW3o{?u= zXGSg2d6G5U>T8N8?}hH>83q$UII;Rj@j*-n8Q)-CQ8dF1j$RhZN%$2~Az7E8E-aBd z$6^mt5kX7%E38UuGW?y|8i9fW?}-6HxPyO1kEPWXYvPzPD;#5wa{djj&?3D8gl?Xb zBWfqHO)1*;VNWdKE7tN4RAlGY6fbu43(9@X@YF>c4bM_GQY{%qQ*LNrt%i7N?3=d} z)Gu!$^}kelf6+`=3?ZPCFzB#C89aiV1zXMGqr6<{Zboir@x7(cb-xqorM<=PYk{Y& zo2!G&7q-IexQ=^+ z>(}$wtAK+qxU0-8xVcQ!7x%^h%&%4~vC#ksri{ilLo0$hh&zJjS%Ky*!(R!HWfA*; zVrBK|28`V@Ox3I9jo|EcDvu#|7! z4)Y-*t_tchW?vGkgnz#?9h2?U`I=$A@>Y9zi^wY%w+F2TyAC1BS3Ch71>Lf2h#p=~ zA<4hi_^TDZa_eHr->BG<89{dS@m}DoZX5r2u4C{5 zr8zLT=mbnKYu5RWnbZMrgl{wmx)o3H1G z+zkaXYe^Nc`Q{i?q}S?MZC?T(t1lV`Np{GbjpOx=z(VCXGWT%Zti1Ssj5`hjUej=0 z6EDE*Rm3_sY6PN2wkRky{HANF(JGmmd$$d!G^`Cd}49~GX$DrA|?-QC!yg1zeqX)++`+z~_w=ZyG)h zH64~$U7o3Zc!)}E*=)P6ZK;@c=QA<&4&GX(%OAWXbbSm){#x4QXtmf!QcO}8P{21G zpFE^>c(PREiyol@S8Duyb+%eT{K9&x@dI;I%{ylBM#rpY`cyO;b`&c-wY|b$VTGp- z=~&^%4Eb64)bKM=W6KLWC`LS4) z&bp(XP&qdo!U6io9Ta|+?1Vq0ShS`CeSytsiYP!jSVY$VH)0{|DIw1)56#Q0`>j|k zR@Z_EBZ|9ffGP#uO1BONvf;!Go-2@ADZq>G+NdQ*Y)rWW;vj6g=Ml)P=+_jw>I^Sm^j?}yb# zF|pQ$x1eU8y1c=2JDQQt`a*y2Xy)0S$UG0^9kG>H;OK+li(6k&s%Knej)q=NaNpvU z+rQ5<8`xnSnozfs$PG=__z%}K=D*oH#Do5*iu5(Rw^Ipx+Z1tU@p(m35HG&SdkJzc zb;sD1O`fX42Fgert;j0I@N`HVZ=-OPB2bE4UF~R{kFrEvMK1+0Zr!Xiw8GSo=~}vh z$2X8N532~g!lt!c4^>C2%?XjF8VqSb4JpLEKQ=f8QI%(KeDT%s>lgA33;9aaq4bpO z$+^6*6^%yC0Yx5%EiPC)U_hu$SV2C82gs1k;GzGYM=pVVu!~s%tzu!5ovR^;?N1qT zpgF~yX*_vD?YI=lHG}q-zl-Y=a25|e%YOx26tZxUgj<@jPGRp|b&ku)14JE=h#Yq)7^TG$RCYnB4(W# zD`}D$k03h|b4-yNbYpOGksE53xz9h#waI$!T*q~+7b8;(U03{YPf*X$v;JsgHH(b3 z!av7IGcv;yM^I*t)8H6s)kfwDBd3|HP;$Z(MMgzGBLnJ@ccKLr(M^t708EA@)8~#_ znE$4puIGvLIim9%X9Lhb?*Cu(0n@tdD_@lVb#F93GG1N87v$N%$sQ<&Hdqu_(k!qN z5jR(>FXB^~lh_Z#b zln$%HjB9RE?*Q$6bzCC{q9X6RLyxtD+21%USp<{{t5FLK0oQ`{6WeZDPxLQ~nRQN` zx7?K&oDJ>R(`R=x+h0CyCI95=mOHgxh_$%C50qb&FFWCE$g^brmRVdclL9(A218ut zQOuZze*lvQtsrgE( zRo!D=-Pfs_H<`^&GxP}w2ebKqU*&IxGOF?q71}w8DmO_nqg*fK1sMZn&NqV=d!<0BlEK8ZLnU_f}*jUav8$)dEr=)(rY_5Unm}2KDqn^NabiCA{5tb`YAf z+OR@hO7}4we8?)4{QIhB@|T+!zUnrhMnXBk3J{y{{DZt{6bA4rdWXDaflhs2bviG4 ztIqm}F-lMKdERs#75aGo0h}|!K1;qL&Mg<$BvQ`Md7%_fF5##1ZqY@bXzN*7iW`?2 z!plcwOv1u{p#+|SMfAj=?BAgi@01eJvqDs;BHqO!qLwqJq>}VV;wY6W3Z-1Rp5LEq zPBkqco$XoibJ@Rp+)jigeT55&Ct=sfuh;T-V@(K3mYpqAKCjT8lo`)7a*g-&^MY)d zcVr!xCuCsaDlTC`d10VLJ$WX4OO2oBpDc4G!2?v8XFUWbbu#T}OzuZTvGL_F>AiTHw<7jug?|)vZ|&*@13?FeDO_#8f2ds68$ocYM-q|+ z{MBQAOJ<;D$^a>sU%kX{PmBzZohClVjaFEvh@X^!w_5Od&f9RX@Oj>GI5TD1D>J#V zLu6Hu`HU&9L*t<|vXaab{$iN-Y05g%x=7SlSP}A14oOMHR%2w~aY0LpiS9BYJw^zp|583fG%w#&$lSzzKdQAu@y?{*7wPvT{q9O(zKSMM zIH%c~R^M2EcVoTyip^=BFkw-X$f~WMCUWL1j?J%!!^1$ukOURXaVLmHf1V_I@vdEk2zd56Se0ZQYgm`&RQMotk9o#B25fFOYqx4voAzW5zC=WbC%} zczjoz)PYSqD1C1X(oJc+6V>8V%L=6bp%_L*+cpacRNfn_`CbJ1$V5Xiq5EY3A3HL4 z&uXqiMc`h*@be5kS4=1d3g|ZixI$;Dj~^FVbBs*G58po5$Qz>q`AoHB$~QyxrXmbc zmv0*RW+)jNDIl;6vJ16NcWAK?oguz@dsX$E}GaG}mj_NSjcdEI;R8<>9;Ow;xaoY(20D>UQy z2;~)hz;^pLYnT%6tF*&@mdoN!>dEt*ufPq92e^hwR*qMRVi)ULS3^tI#dO)6pQX^d z8hWx$km6R2;q&%7`P%Cgy95{|=zHy~%E3#^|A&I1l90j#Zj3D4FCrU0n>^Lntpw;# zz4rk9&ZOUm={H9HpPbJkJ^f91^=B1o-oq=T2t6K5JncR)hbYXY!KXYByjj?nNq8ihFB;+6fo- zi^XDlnZU7~3gKXYOkaD|JtA|?5t%vrhTZwRz%TW~ z192l0?ch`1fzz%5={q`5J0bn(kO_;5%xD~pAt7bzv4I%yO&UiAYEAst*)s4^3)kwT zc4(jmOG5Vk^=SMM2sHPN%d}SqX_$M~wnZ3rH2Z!G7FQI21TOEE!}9}SvH9NMPr_bi zwA;287?~kGQ~lN%nHT7peL(2-!pg!LCeB@IXt4I6K}Cj<1*=bX*c8v-yOcde-}-s_ z-NBV_9sVAt-}OYKl&kCGM5>;Y%Ga8(vpmQy(wumKBWNVJb_AK76?MvQcy0UXp7zs^ zImXNKWyS3?5k!q3AQgD=QK@`M!|V}3XzA$xJ4Nu;8`XPTC4cTw&m;M1p|o>ok}dd$ z8$EB~cCt%a9YQoGlfEuVDt4}N_iAMqphifA1L=)Ax7n-s<{P|-g=#VScmDC?T*cVX z*p9XQWq;!Z6pcdxNO+g;OTqTlCKG7BxvU8<(Rsi4A&#Z9G_H6Ro+ zqhb=T75iDO*mw`_>V%qYjqO>>+x#sTxD8=8nrXtz1rZfFssNJtqRmlZz|q*YT3nCZ zYM42yNnZM>SoauzeV`_jw|EafyQ5>8Te>5FX2(+O7Lb7yb_U%jj)~xp;=h7Zt>3u~ zEiiT3mWkVdv*3AwaNLTsKapZl90MVF7FoQoSBL7zF|$9Z=q&SSWW6oKi?jJB6r}4d zsjt48ZJ*8mF@wKYscENI@~85*_W{uty1=$UcsF5PM8zhW>3wwlet#S!$p;_f`~76k zRS5(SB{B9Xbo{RMXzKX&u={VyMDb&#mFECS+w`%N^t~O2GO;YcMFJ{ ze+-|Ia`SrrhW~C|f>?~sFIO7Uj#&N0Ev4lChB!>yS(EYK=1+0zewu$b%KyK9w11xe z2tzhS-2P&W%D-!=aQ3m~nrHR(CHgy0>A`ktTJpx8MFiR5X2N|WN7+H+lSYDp&A&m@*) zIPetZ2k6RFudbZxDxj`bC>$vXmjQ#P0bdujq_K?xc)HqC4*joF4T;L8`MY3Lgz8%6(s26xM9>hLebUlMlhB( z$5`5et*^F{W5_D)o}5>zQFTTgT9j zSt5TD+e*vienZY(z~dD(TyO%hDPrb%trY`$|g|8fTZVutq+QN!>pnzetVormG1 z1ZTI1rw6}?tF_EIG8?V^vLBww^(rmHo1K+f=hs)k*^7OE<}H`0$EOkC!Y4QE%^x6B zS_kdTx3#>b3n_)uCUar2+(%@#ljHpWks#y)8!0 z!RV+rKW7A-c(aRs9{KxuAbbBwyggsf)jL(P7kJ9kgCAbamtQw!HD7k!CpWYXdN@V{ z4l4`;4l5iNudtxlbZ^j<`g1nUio+Fp+bLU$F9)lr?uROL6E&<;V|pK;^NvhM)4yIa z4SEo@mlu(Eg0a-Vcvo|Cgn+`gUtjaY|I2qd8A1*T+A&4d>~#znsYV$oXQ z=C<0m{q7ZL3Sdg{&jpaeG8igADYX^uThOhKvT(pn)@`+r*~K8T!JAuRZ~L7}5i5rr zPpe0cd4Y0WKsrRfXwX6@LRq%pE-05!`tE_R4DbqC);9isND?;VW|%bqKe2Qc*HRPd(iEBY1zV(V<#;_T{6O!jb)QUuD{*U3PceL! zr5P`eBx>GZ>pt=qgu4!&qEMqgJ7uSTrlbvD5O|Tjz}=c?(!W$$6J?XCEsRYaDl{0;H$DptzDyLTc?If;7NZ3= zk=ErpL!pmd#y-|G26dp?cK9@2pJu_*k5d3qy2R$09qM=ymTy^xa12K0Vq7s+vk7Ew z=pj6?W+B*{Gq{$P$Tt0O;)}y-_8EGEMhc`n0>sj-22ONetsb*&aqcAO&5^;7WAK(S zI(IaE>uf67)U>}R`w6~GDDIf?WpUGSH^$j>-e~=4cjIWqaNm7YXH_YDTUV=@&DYzf54?3%S6F}CN4f5p?8mc{J9Q2) z(+Gr=tSmCy=VcGD*0b#z)G#Gci&U?1rB<9e>Jk{@^+CgEHJ25_%H4c+Cc%i6VAsPi z9N$MqrxF9r{c?A;Anb9+iY4E+K(bH1f+mELrnT><)hZ50HKA4%gk~NF1kRf!7R-_g zv|WVZQWHeRkDJ4xQj#jgh6~oZl2Z}K{Tq|394xGHc0F>mR4sf2rT^DYZ}j3I1ksHX z{>^aX-{za_GH><5JDNU!rk56$3FtO6b}mdQSL5%@ru(+VE>#Uw8Q36TtsLLs20Ne1 zl*t>dz*^2GHxA0LC$1&kamiaotIC!5utSYpjeVx7Yej5!amTV)NXeEa`>lcxxiyJn zb1CyJMQo+TsPU4YlfOE975&x4d%*hb{1uGDon|z|#$)OcKv>o(P)W&Yw@sj~tlI29 zAgo{_uY?peq>&Y`@lu7FGlQt!T%NRXVwdul*O1bDBInIyZNz>n_6$G!p3F~d5yN&$CS${E?!^AJ^P5L#=g1gXx_};jbzq-LLTRN**#7qw3mBeWhG+`I}~Pd$&Wn4eZdlTTFQ@yur~&3DQB*k z+v)57gfXS87-sgilx@SI-qw{knz|JzTL#`Gz@Cv*g6lLPdS}EMZpFp;Ng_~eJ<=EC z!iUCB3E1{^P_^gEcjsHjCEHZKB^R}nmTC90Dm??j-iEM6U^Ecuofw z)ML->yYu5B{l^G!!a#gR1$&D0(Y*{|*0X~k9~3K|iAABnWo(2u9b5}}fr+Sm97M>< z7R8jB!X@nmP>)thaiWp`!w*8|ijgR_&adB{-%}bh*7NW4V0F=7T>~c#gLU)-TZ`zK zrns(pPGF_i4qCxf+ znF2Pj+eKTWGQ+XZl4X3bPztD9RXnP8IQoeRqjj~bw<~{&&hMbpy?GRMO4OH%y{sH$ zhuRpSDP7eS?QPiSSFX#5!rU23Qq{%$^DD{nA}n@Y`4Zw1#%y*2NAM{t#Hu-hYQf1^ zWq%eT3`gNd`1NFFE*T#WfGjWM&k^*Z*JU|j4O|&_kv`Wu zo2X#CCeZKoV$~?>1y)7YPipVYW@F(#a@cH4GQo77IJMc$a@8o9pz6U^V0PeaXQd{N zRy>veN*_$20^>As{u-$fQeHoK4WPspF*ajx6~R&cTUYQm;wM@ii5?5UW(^&hxE zlgDRqkHTTY3)R|-k0_#=+8RaeHt+0jgZ1@;=$2e}l*e=NJU@mQ_?I6e$-IOn=t}nu z3+aGZY|NPk_P#FN&DaXE(I$!b6WWLS8^`JoD+{wm6%(DG7&#?iy2ytt%Kr`_^pxY2 zP+9`Htri|%m^6r}O>mOh<%xSrG6J%ta)?t713Zs_(_B>nNR4`IyCHUxDuL^gG9iCR zwA=It&4a*_d{x^Vh_S^&;op$6cCm!!Y#aX-!lS`3{R1LC(o*kuZE*fy+VGzVa5l$E z)YOW0)!77S!^O&Mkm}n0*bR+`(OX0<8Rj))c*l0k_1a-q$A~n95$5;k4M@56COnV# z5ojQx$OvoL`2cBgdZ@9M|cr8&vj{glXYx zYP?_K+2#K}3F8n+!Z;wdbJtqi+W_O)fqC6ouXg#e!|8njl}p<;@Xzi-Z8_)5Hz_^m zPMFJKk0=pdBdiKUwymhQZL^=Qsy$QXYHyvY_N3~sxz;%3i9yc|S%jWLbL~P_&ffsa z9PE2QZEi#$!&-C=D^~y|W(hhGyaa2v)m!IvB`{gwVev0Lv`b)Q>5W5_TI`8oCy0u} zs2GAA%aS2_wd7le=;qxBxCKi&^c_@bDtnldJCuo=NM1v&O56+(aIqGBtB0FTBwQN(QZT3N^&6&rOP?Z!CH{TOSgu2u0Fm(WfF`#o(i0iU5h)xWDx zRa~}Sas>K{RC{!;*)%4^JBPL&RrJ=4LMdV5 z;jm;IYj@{2H8pX95dMgZ#v!!mf5s)AsgMLwHs9Nh+`7ng1EFguD_r}ZR9`APO7wFhkfKlUQSpRvkwex&9o(|vA1K z?Z`r?gk$%Qw6%)5(PDgQLSG6j^0FIV0~XmYLP6j$t3fD6t+pdFN@JmZ2xTU2FD{V2 z9pnC%#|!deAxqR2>%Ib+`h4w&a3=@v)D`Qg1v2H>9ed$UAQrO!O;2${W!*6^j=I@& zwg}rGB9rb$tj+Di9vKJSH1*!nyYCixwRaB@>BSfK5q*js*Wvj&-PsYH&l*ST#oQ<` zpJDhDVbgVGk^jnSn8SA1gj=tAdBGY1eOIwF&~B9hGh;P|_i#cgA=a8IMdUY zw7cm8Wrh(l`0>6vFI1G4ZO|~XLc`U-$Cxhr82%#epGP13WuN%7a5nW0LI|az!L+OTKr=71dHhf@bzbi&?Wt>a)ge4@69lbJ5uX z6&5NSM$Z&tGhDVplA~xiY-;Si@~855U`+0l z{hG>WXODv4vTx|ZQlZu{^D{!-cunIUVj&i4Er1}hISMs9908H zq=sFD)_iP%T?%uCV=KZ1o-wJeA-3bMJYMX5jnBbBXPpOCGsBScXM&^KMcC@q6?a9y zke*F=K@SYvs#Z+m{=+fF=fiP&;=wFpPu+!(S(C%2C0H-AEDhW6VQB8eD*njU(Au$>P1)H5U`-I9xnac*S9c_4e4)TYkk zS3wWIIc{1W)UU04aGh)Db@40p41;&abmGQxwwbv7DFlr!_1&|%4ikpGFbo0SzN$rU zW8*8*+=$mubHf$GOoPJ?KiDtCmg@Yy3erq%n9X+v;&o=cF3gq~{QYU3E@Z1AW~}62 z0cC11(Tu_1vl2+>Yc#dC-jB6#>evy@<4`b6N`pPP700aJD#c%8SD5xf4_3ZD=-A8H zcQoFd2DVY_VDN9W`_!V3>?;8b$pC%Vxm47Q7M&*nMX;;Qm*R;$m!LYilzpNK4mxpb zes?xS*LDq!FW~!Xr_4|81at~Lu96?SlkfYUlNk+bTfZF5Gw=* zc~`73R%o>p+VJresX-d!I0~;GWHolaYAH!54#JGL4Dz8f42G3|CMN22zN(SOEeqJwDyINXK(N2L61VR@L%FBMQIE{wKzRt} z`9?C~RLu|WR2*`h(is3D`Il*{+f#obB3SG}tsHNBhk}n$wW}fot>{;HE2e%M4i# z{40SI1gttqDvARtAG1H(ojm(6Y2b+CS0f=Y7L{UV%z!0te^nzFxuq!m(CK(wqZoNZ zJMKJ#nW)_XesHNSq06DG6=-Eq58%VT8LE@)VZ|!h6cEUu7t!#=Np_y_2gMyhM-wYH z^M~{I^bV1!Cv@;rYOT1G0F(ucarO)_#Y0I01fyrqsJla6cMfMQTC)Do+Yhx+Z#TgB zc}P=ZvJki(n1WUb8_Cz>vgX9ApJZ?71oYsbkDoVU&p548PP+R0ytdoKE*1ou`NF-y zxlXesGpJWAnTG1{>ZnYC&Vf}Nd*l+3U>xZqZUuVHvo6j=re#bR84UqELME^o$~xRA z5jSrKLhLg#qcWXTgmdE{ec49?q5d_%gJiEIOAp<{lqI7Hb~-sCTPxWnT^_3NIs*ZU zbs1v~LZe139R=fb5{y$^enL*v!dN=+RVJ7sSPF~fO+g#hpLun&xpQ-b{(NFVD7q%Hp`%GRt)~y__rbE(qD_cl?Vov7zG~%TWFC%5fpa)+j?jf!W|nnD z^!Gohe9?s-r?43z7t;rU?`27|*SN-htbaIvU++e5`d34>D9TNr#A1sK*rl4fm}rx7 zDbnGx+9L-~Hp4oAL}iS-B2p7!wVVV*SMp7xrso4Kk>WWx88Al5XXf%(az)N0g~8A* zu}`p^6d56cg+SGt)w?^Zl!@>PK>K0Yx=HI8ZUOJysweJv!Ykf9PX%^PbmCOhS7O-8 z$M~N7o7tblcU6nfd=lo&C*z@KTntulWzcM{+{r>R^`*J|aDKw440svn zXP%!CDbbBeney@sKAVT{>gSnu0UHkQ%f_oF!~5x73x?P4t&vh`3lGdw{tPSeh5s@@Mj#KN1KRPJFn2I>%x2Jgx>& zNX#fZMPmPb9eCC(yNAiX(meL|+r-JL1jG9;twUNbJoQBS-Jk+fdkNdin5^>;XOZd! zqv9k^U(&@(N?Y=Z-T_)gPqKlrxCdf1{I_r7dvak0 z_el=Ea}}7RgBDfLgJ-IKR8*XpGoVoSweV+h!X?n<8#oM13JKq=BBcPM4j*XOHHY(Y zBMDOcPJQ)qN5Ty3J3#7Zs*VM!6N`cT_DWdk`qy;)e;G(%#_X}U9P$^Vv?^|=gYOYo zwu)p*GjecFyr6o3TkVeNTb($In3ZOw6~Qfwgnxr7XX-My291sIecbB|vt=BzhSuK& z!so@_aJlrd1CkwxqF*W}Y?d(Ms^Zr0LIrN=xgi6cB8d6ro>#?X&P{@PWGX^@BW!yka>BJJLd&ezSK%gEb5A|XysSW`$ER~WE{)HwM@d$D^LhmN(BHql z5%(e;5Xb)x3!aGv?w#|AU}n0N;))<)oTVc$JMf!mU)UEjhpyj6p&ERu-4fgVVj0g? z0S-h#F-fI94+=e<_2v7cDCM+7BWx-P-2D_JomGe1sMv{?_2+KvA9P-BnYTd?t~1wR zNH2OAZeZKcP=Op?fWT$fim^fTVvFt0k4fW|X&ksK@y;NlNwR07hGq73!s3ovlJ_;; zxR~}XG{azr6B&xYB=X+LW(XYKm9QYvI9$sZkeD%)|!kS@9wed*;NNz2i~JLbfGP_8B_d*-SD zwIZomr&jZ>xprT+f`DIx%E&^b7lUBd$hLY(*%lIgd5ThG?H|^+3O5uI*}xm9=yD?n z2iu`|$MduI9-j8FQ`8$_l>Taiu05uPeM}X5_h%IgxbPoDwtw>|L}_xrr*AvY5Cisu z0&=pgoG`X_sKYvS*sKmutHWw_piL1J+4d(+u1n14R+&P zdITZVH=(VaZ)GEl@CM)%(oT9Wr8ZCZ@(!5pIXJP+h}d{>N{)CfadYGNxJ_?eYMi9DGd=Ps#$3&#uI#SraKSDRd zQB*~uL|rYlClEs-8tI#4b&8?fd#a~)C1!)&i%e6gIA@ZcB1Q&{lqt)jkSWLo)3_Z1 zdNgc0k0az~Bfq(yA`DhYPx;euBPDr+bv9+Lk;3jEdBJUquoa#wlw_;t^1b<$*M+;X z%kft5%4ievtTi+9>!fVB<8)rAQfk|l@OxSnLiVQ?KR+P+wF#`-LdC}Z85o^0r3(Ah z(CX`9E%ba6=R=SDkz)NA5*6WLSJYLoDo;sxo!Y5kHzam!9QD8^dnjOH_F=GuIIs~g zBT40TLT#%nY%pMNKKAaPQaioe+NCgib`pcJ>{y z-}M;ulPkPfATxsRT!mP}(%6nP*pe9WY(W6kV7K5py>!IX?5WUA@e#{&!)35kqXM~1 zZIRYUZ8}gIZs=M!#5O2mukl27g0d6887(T&VRCV~9<8?O8mzjxkm)<+$Y~SY?f?b1 z>z28_)R+(>%h`6J!IE^Q?!Nk?s0NImVs8q>GI?SoDka$Wb$j!}arWBJ?zO5tNhpsR z0gK-YKe@(Gf5j0~rmE`YZ3k*}OFbk&Z)sPiJde$cu!-D@CSDqnX@@tFSxweHnffW( z1w(sNF@(keBQ@l`S*PB#K~84m3<96xIqty?JX80{67DN)#X#)06Dd@Ff>jPlL zecsk9A*J%{IhSk`ya<#gMW7Q4c`e}q^c7ue?`DUQb#i3N*BfzDN}sfjCxK~Q>4V<* zJlnB{{!#bY1=4WgY1lP<|MdqDSxzkAP1&%@rOw}^Y>UxP!v&G#>ovSNy9!vpN2`E5 znr5}Qy%=Yg##0Op?JjzX^kBla0YOG%>~$gFtuHDFh~e8c+-Oj1jSBBUw}-V0WXyr8%Zh7ETY@srsD zRQ1i8Tal7BETT!dl1n)I>jM5B)^LpL^u-BDjRFCAsh1A;ibacIcu*9};!4qd63_|< zCr;~1!oGedW+XPETwpWl3qAM;-4N;Jrl>1lCbe}lxzX3`?;#dyVfH*q8j(8ov`_U8 zkiV04I`r{7V`h3Sj8vkrbs1mM7g| zyM5w|a(oP#YD-p8bcETrqw0R?g7%>VWnk?K%mOi?xL>FM$^fbTVPAXRur4eh|14;$ zms6qCXRQXhiK?JSp=PZmxTmgKp3Jc8WuX#X4rfPc6P2B$eT)MJzaO!<&?S)=#O|ei znC$`F--w?`Y3h-uiK%di)3VNv9T#SgW+|Xq+TaycrQ+ODlby+I4@Z8H8C6yw4Pmy< zi+w5nSSrd&5f&{=McWcXOGR-hdphy_%2IJrDQ?y)MraOCazgWXf(VuhtMrnKdW&8a zHA;SRkR{j6G6()ies~bN5-c;T8=BCvFrFs99`+S({lll9yuN+!*Ndd)R!iTa`o-D9 zO__2W*s-}`H1qcXMa(V*+3H6FUPp4fOp5=@+t2;{?SEwG7>@wik3{J4H#5C(YulBN zuL@5M9}FYWBsk!x0@{u{6zpzswmC)W7)e^(LD8T70~U&OLq8W+4PAGt4TgI7a)V$v zArYFHWg2=BJTo*ClNRbaEH65HGEu1LuxS)kZHWUTN2Rq$9pl`HIw}k?X1IgEkQB4c zJWN=hq}nn#Sos|!`e-mD%{!|iEjA4 z^0em(-`=1lO3KBMpbLvObpq6G<`CT+G$SO%)*-qLveGBos5Mq=gH8my%Bg-Vi%pqe(-#f$*v;(>?klY4?p-I*&V@DO_}rZ zSRn6dvxmUClern=ab>|5YLcC?t<|#I^V12y9tXE0yZn6`a8}i_>z8=6Wd2t%U1YAk zQf5%FvmS>ih;ZONknYS9s97!o^;j}}8JbN=>{L@ss1?=d`G~6MfS#-OXfrZ;>KV|5 zMg}5(0$Xhaj9jCKYr%*|t1Ao;RwPqrVkVui*PDQ#W;fohn$t=119pQL zvJ{6N$UcG5Fz~ViG!|V9`F?snkd5w9gyBK5CZP*herbu9Rt8iMVAZw#%`>cZhMN1gw(TW~BAh)3Bjw z=rtgWOlYDGO&lN%GA#4cl#?0QG+;Qgpm(Fv_i}%j3KdsM`4l!Yd|;h$=IHVOdi_Yp zkk}-VY*YryETUgf^jgc>(u~F-%Z9)jGC2AD{H zFAC?sJ-G>~McR%i`t+UOu#Rg{nMX@Sv69rf?!jP5g?p!w*Wa%WB4$}@tlp75z2R{V z4Uhc?ESZVprds~y=?y4*$?kjZ+?`({du)#Bo*vfn;#Zj;iwP>gTz9<(^d)Idy2Bud z6}gA1We|I&n&;=ha>H}7pmRGvbfYeQTdQ|AWzp+clS5`nTo!DhQ5%5n?2oFgEEqIp zJ7gE=(Hhwe7HfAobWj()TSI(4NDu|n#KL>gfwIVvzrJrBens9nOaJwNkUSUH#V z{s2u1=s~?eFFJFWcgfk&zyAP`Z3pUf(g}v-WcXyAmQ~u-uwZ_Cxf|>07(w&Y0m^+d zydBhk&2s`Z(nQhs$tD^49*!d%ng5)vH+?QIz?gpf_lGEh$2f9s7l>G~2n3-AFQ_(v zg8LT?(JGtdd9BaDr|!)=XWS;U9~+|Ybc|fH#Jm~C7Bu0!yT<6*CXCJ9Ul>Jkqrfo& zE;gcOnQ0kWksU^t8l#&luHBANtFQz0A|u;450ae6{l4f+Lc$@*pP#458{ToWAQQkyQvMi_qE zbRK7W({L5cV*9lYW4QaHjW}TaY7DpG7(Vy?j$^o|8pGK%hR;)DIG4t7*EiG{E4Kmjh`$S zk&aQ+de@Vt7&i&}qDY)utOt!EQ+C^jl{k#Uw+jwmNA^H0fEMKo~o_Kn4HlfQo~4x1b`Yu4WmO ze&#MQdb_F|4gwrR=FQwN3WUEDzJGzy#pnUNOt+FEz01W=bSBgkQVXbUmfi~oz!&iO zhXij;e*Vsuky*LpCPd^!9%3-C0Ctoe%_O6KC)~`AXL8iF6x@oWjO<^5;MY< zXY%+sUn$6=u(a4s5%#$B5M;m3;7jIuCM~U;&m{Afh{;xG@{=3YCI-CX#3Jl5jh|3f zimxgZk{nM@5M~E+P$6KM-GTqiB@V%Az1!`|KFXnsGcs!)kXln*P%0{dJkRfbCanYG z?J8Q#^rn7pU((C&!L%0Jm(9NzM|yy*Lt(aF*3Ds0WP1X}x0r;N2iP;&O4P8f?4FP| z*irSOBXyEr)cbuUe{pD%TaA-chec~x^n?A@NinBNFEI-W`Y4SdTS@JDHb+^@uFO$T zGC7{LtatqkC7PT=7y{EMZ7}ROZVxs)hp(aV^aytR1SOkKzl(Cnw03z;!j#sA)StFT z!ei}nlUvE|PsFyHl=_S4r(xjo=Z~10ZK5a5%+#}iP?x1C)zi~yba=$OoQIbUmFzKf z`=EFGXd3Eo+QT!jzosRlGuUTZ>eyB<;f^#<&yuAyO18xKIeMiO2pZ7Z3ghR{Z^CS~ zmwX)-gPSoq{y4PgLfl8{=gDUOkrd7PC#{G?O=%2mg7S*vW0KMCZlUF(5IUx6cYawI zjr%C*Bh+BVQVdyVmq7=hzYJP9J;qV$ZLX(~Ww^~Kx=j+*K_w=|P1`MV+`hvLhqFh7 z4y(!R)%=<3fP4C$kRP&CWPPK(O}TPd3PkQu*@{?ZnqlX^jDOjK%r8L}_wd~8SS)roOurex$~mp!ez?mVG=wd7mHAn#FE zL;7_{<;=2(2@BxbtL`~F2v<`?A*_&7?Kp}$MX}B`AWQ5;uBrSIz*&*R7qla6sH$F5 zr7amO)%TcXh-L_)D16$#c_2xZ9x&Kc0V6OII_T`_sGh?TQnqsw>WT&_~$_Ui6IdbpawsC}2p zo3)tFT+FppFEg|ynKJ72K#`Px!>HsSBJy_-NceN;MMwBYJ7djoScEFXGxrAJa~T{Y zq>GvzGi-&&HZ@D}!XmD>AeyHD`d8=F!+()m8+Q7d!l_8yX=Lk@4c@$-f3dzp1)$HS zK?Mpyu7`tjn{#{Ey3CB25piR%*?B2Z#*SNc5oRU)$Cxkc-=g&<>)Gx!^gXBB=pON7 zj0kDJ2ckE!V?y1&BH=0PB!kVM>z>n0;C&z9CM&yA;u%uwIJ-et=Q9@YnaZmz6cbrX z+w8xvFVs>)cz%}1pTi!Z;Xy7?q<=*(V%~;MeNDI^_CivUVlQl7Mn>)gW_q4->D!h4L^0-B!rPP= zJKYG93ar?)2ASx0jGq0c89I#skK{YEkf8I&V~8WEzqXOj>y)6MA*pTKz)$B{ zre&6iyNZ!<*TN;Zsk@9IrW(~r(0jphqPpyA00~bdSe7_>JaMuzaq?8+WPal0bs=WP z+AFE0LU)|bn;r25+fb)i9c(Exr9^B9yBfyM4666OnIJuuNO5!)RNQSaOS~;0i)|GO zfJ1c$B*iyEQk>PqfA0&tM43WMP(4$q@u!F4sT*J3jdktV$LvNvGu9z#gQvlD%Gj0o zq(jPK)RaV0O@G;IiucZwI=WZsY>~kCk{>P0Dr2jK=fz1c%0wT)qeL&)=&Y;3`m#nY z=Ec4qM#wW>v0w9q|9&#R^_;4blE^VF*{fdl#c#@iFATL>RV`&t#u`*V!T9icR<`#n z?RZtT?u5=AhxKkRILzu27z*l!>qOWjE>@05cmu8dwq*Yrk<=*vdl`arva=eY@zsm@ zqWnpHXsevy7Wgl9hJ{n{QmRV_`eW@O{fv8Y^rl>6y z>7_N;IGa5re%6C8B@FssK~0&+dJlMhXN*(B{+@_eOwl1=)n;GPbpBc<0>Dn}qw2UP z`!B_`JN}P8f+4z`?%mW3++&zo1_RWo9&X3b@b>$eJ=XsX}#s`^^{2*vV^E=OMNG zycr9ODkqeuH)Z%b}N%_(4Ai)d@iuv z`(~?PUqBojjP0O{B6e&fB?UHNq<|CF;ghqkR5oO7vd~KxW)F^H9n5^VYO>9~C7_K* ztMK;&I-f%4TShAU0m+tQOlcEDNcPAm0Q$tKEs&n3)Pe7OkKiVJI-=7&NThQt@0 zis5!U3${2ywpahEME;$|cf)<;ybD6S(^qtzbEO?ZKV31+5Q7?^Z|7C$X0`b_4+PA~ zI*y0%I4|H92$LdEwxqp2aHex{PRrqKwqE*9_by$N6yMe;x1$IQHt`{eWm1Qm}=K;5sqYvu*<*fp7efCw_-@Y-D_ zpbO}l7u-ce;02INBn0G!aNi`{D*6CLJUP5k0*c@&inpThud1GTFG1Y@k7K5%r>9?^ z)m7b9pPEk+`AcY|Vdjcs*k%;h$yZLVP47{+7pHzezhB&m{GCGl7L< zNFVyxYHeA$Y~)|j0pFya$LH|JaVtqCzfes_9I0o_&G8=sq$NwGPhS0*PQ&K<#h9U7X5?MzG1GTQrld+X^^- z#a{TchK&SM;Bmxn{_xM@bTNfC6?xl2yZyjHKXA+seC-DwEA|4vboRE68tJd1fy1Eah&^~p=fWhPYS8BkYdGyx*1|;3hBr%%J8}=~xI=Hu^~z7Sw!KbUufc_mUke z@XW&5KGjs{IY@LOa2g1d7=n!|#Fkv3bTZlG8@yA=8)&h*p5B!RC?ENGTFOq|q7rVs z14tr_d^zPN2L6W+w1ypStRIQfnreEAh*VUcL_!lO^ zs~HayE+Lyy=qXViqMl#pm3I}oD_}KrJxSl5q3dgOJwn&7>H0QZC;Hhu=VdUdVdc)+ z{zEEz(o0Z%3yjX12VcNZXhtN5y0{;8*3qF0ThsHO5f~O{H}FSMJuDKrgEU%d#REaM zgMM!TT~~Htzu#jBC=fxd7)f5Q4S6GV-Q>=M3*1?imuF;D`jf*6v#;s2`{bW!NvDJ> zC}u-RyaFR{B0W`Vt}p%ymDt|v^`bx?$ftGP^(A4+*O%|j0oma4iw(}|Z;q)FsB=-( zYdj;Jjk)E#SKh9ysZst z9uiLv->LzV$UZIIaIYrkZ3Q9aY)4$-ulI(+20!rX_3^pL-v5h+K-sb8Tx&}eUUXL= z5201wnZu{0h$J+=tcgVac7yvIn`hJJXD$1@n9eF{*?9jec+9JDoe=!*WZO1Y>$^L? zOt#oNwx&|78b)bgp8(n?i7hR{wjd}+dhu(cWaEk&K2=fLhTP%Ag4pm1v)Kh+%SVQ&uymVedQ2cWEOOB#o%D%bcCm8!c`1A%g&VO>O1H~FRSAvGX5~~dXBD(V0e5N zV&{|hI}6#-V%7OR60+|@xaLnV-`V^d>20t?ieDDu4rVOTnT0$~d;bO^spXcs6?O@p zSy*N%`!cpzz-axs;W|OtL*!Fl$;#MPwLrS;uv$|cb~5B^gVTm_DXVSF#juzDs>h#q z+#AS)63$u#d=1P{U_nd?lR}T!W_R@X_sJg>63>6h2$y|ZAUF4qjqxRxXR9;DlH20Z zhyUcAdR29yVU(8^8QqCh|Jehlx9s8Ui9d=xTluOXz~8%(4)8yp%`Fx`Z{=^&fOzkZ z^5vc?LF!jhY=D0J3JB0<w;lwPo4t zg<{p{j}ehx(le&*_E15%(@kt)Pj8hLVR-JuHuUuL)ds?&$S#0&#)}w?5$OeNgl zBa#c)&uDkZPSN#ax_&^{H|e^Et~==ZAvwM{-Ia8Zx(cYtl&N%#bQ{)+c+FHcwLQoW zR@gGx$o9B((yX9@J#{&5XVA*<>q34sBkmRDoAv~{?XuaJ*b~4akna6HM>BeN(i!`q zJ#FS5YcC*+vE9}A5N1-z4pZC*cQ%ZxYv1^%YD|rfTm*#s*N(ejCa(8hv&ze*qVgMh zp|!Rf0w!y3dz_E7+*Xq#H%4Fb^ro#W_Evkbej1+-70w%^CnCZ$TSUKqbRv%zz>NQ# z=`Ll@wpXs5;=*O5MiXbYs06(_13P%Cy@X7*-G=I<$gJIEu#>-y`s8xjb_zP-Pz8um z?CY!ew?JqkWnEmms1qBRM-sJL$;Rf1AGh#>4+VnflOo(+;(zTdlF_upwNasd8Pw8Z zuV10f9yWWLrxHuFg!0inVskX2lz@?i20;qRsI{TcMzzY@A=C-_b|QKJLdR%}uJrIR(6d*1`cgbL zGBmchgKDG-Jg8t*`IM*tmP_{b?TC}iM2nypger8B!_-e&;|v}(#qfcsjKSHse8to6@LH7Z zywd-5w!cvyH7o*T|5ycZd8l#??C3g7c;-d+__-zmw;pXsB@)$h!mIkFa7m)Qk(Fge!(HL5H-h`Z@Z!ExrUxgP8qaI6=a`X)*U9| zi4Jn@Jm{r5G|rK7%{=aBCmNTznr>~%9n!7-_A!vg(GUVMW| z_?zI4TfyGS5gg&VoVQxxi0c` z=Cno_e$x`^FvAhjocw2sn}ectP=O(Mhr))*wt9sNvm=db8L8(@)5hCqCTmyNY{~DA z3nX})jq1q1o8_UR)v>c3_z!pC!aDW}{ynL`0AG8hq(O$%=p4Ta=ddZ$7u>fur?m{w z7`MBawprQ1c56D7wlkwL0jFj??~pF;KC35)v|_g#ENw=@5-AZGAqvt!zS&`%9U=dg zzzWrvmF^RI)2k!Ef;^%JWCoQF<~EEdM^Fwm04du zcsj$Jsb@uG>M#9`d0uiD=k5|)ro4K)ZbpkrWaje^9?Y1DPEvDa@`mncn3~?ROlA`` ztdTiH4M*5DqAU-cYNF;_vXS84ttS}S(WsHb6ZD*Xpp7}G-G$nlkO+zb1%YQM3H#Yp zM6Dl;HDuBzTtR;A*~q)~z7ZO2(d)hO{|B<0U48`(ru&tB=Q*GOOF(eIRtke8S;MAv z^tWq~S9Fj)v~yfa?9RFl9zYwtiMqhSR= z0K;tY9a8OjencCePxbOD35+q6_9K#>}#%O z2k!7&W%nJ(iJc9jl9W?fWtufWh>k->1tPUr{3~do;!A$1$@cWYnx)~v*EPTebk5Jm z-Cc-|@9e(Phrfm1W%r+hUu8AK@BQE){0;PFYxX=vJVn`)ws?7;6ldc!BYKOGEN-@z(l*vK*{3E)4){!K;OBA~!%KLQf&>_lxzLfeY zx|Q$Rsu;AoBHa7mR0NEDlZC_f=G4l>x3_S;R%+YPSE8H-0)R}|Fhq|^V`e|i94__g zaO3G&I+uZs{dF;<+|z=I`3*C82bkndjKs%ailJS00z%+>LTtrDZeS!&6{-z()|qhUuRdy)B|KKmUakkb|KKzw=mEb z-X4JeZlO}awGT$C(R*9McA&VtS-K2tgFv-3w!$q^>;80}x3wfa1AYCPZe65MY<;wk zw`3?^I~nNBF%mu?(%#gik!qw(Fw#ZVV)aWQBOzo2ZZ-_7o_&6)np;7OO}Q*aKpgf} z~euPGorwRm7_zxIL7kK z{Eqn@J6wlI$vbcJtR))+;P@US4Z>5r*ULi93W>KFdpXV zYj|ge=vqzJU35K5jjpx2b>d%DiUaz)rEdhsqrji+!e75Hb0 zd8?aHza9i}qQoq9B6aLJNQLlQHjz`LsQ<-ZbxPQiJ;b^C(qeX+3j2ks>M{K7{rn~%h3_rozh=A9P%Zu8m!#G0cf_zh z>~MEdv#IZ{0Aa{y@>kF%oFB%+#zo$Jrgxv~-3ecq4OS0B)$L(*`^-}ZQ%_^KI6REJ z0kH8Hj5>t!Eit5`AA#_z-JZaXWZ!Z*X$l|fjKWm+s2rAgIj#2YPkHyQklU~1Rj)`= z=u_;IKgVJ#h4K}^e&Sx>tRHyXe^scmx(Pm_uluRzKd9U75Ixc%*mHV*1&jSrHLoV9 zRrU@QHvYVyYgnsz#AdIghq+MRS5w(PRLlmtL5^Sod6w(4V#JHiLmS!$gD}h@ zPgx=OUud&G3gF&;>5m}$7Vsr4ZPpAw?quv)hbq_qUCSp8sING&MlGrYFbQ{%A=$Tg z>8wrQ{A8b?du@?@RtyQ+z{}|?@sJV%+L%dPH|wN0TdsGo?<|pWU0Ap8ER+0Xxn3fH z=4kH2;^98N(7}3KxCA0Oh^pj$u>_REV9D2qb?9&3l7E6w0DzLMSOkRMVM{y=#Fb?9 zwa!P%sq+Kd8Y1PGhpuG1ybtzzV2PHLyEpKkQ3e$2H#9UFrai*Hhd?SI*AlFU!iK9T z7+C_0{_3KS)52x$E~WUkOR~DPd~xXG2g7Vm8{4SW-MOd~Z%jnKV~gdzP0~NVW&0 zw0tLelPxtgAhKZaES<{rl2YYQ$^(!!)8)3;l#OlJbAt*Qy_zpx_(adqsKBRe#t_|LvRv32&!| z@yJKy4ixtX>%;#(=h}s}MI~&9uYezIf~l&D@#x24N77K$JnY^N|Dx{wzMv{>#Y6?<$TQ(t89^AlB6>mVK zj{0yIw`b?1(utEpde#U@hD>L!6t#;v?I+9_hVnK;ln0ShZZ4~R_{K6ZAQ-W(HqFS@ zXx1z4;hCvyda77fda4+?ty+hD>>*Q}B=;~t7&t;a1FQaCIoc8l^CmgYA1Y%RR!>6GZ}W^|(QX|tHE1(Xppgx?@6D|UuflJA@G z#rShC**EA_SA50`*r;Y|TU0bHh5=B5J|pI4nx(l? z+ccE~>qgi@e9e7xGwq9U$Ijr6c({O_ZtBb8J%Lj3gczyDl(*i%4#eK0Bb0{_{Q^}j z6B^}s>kW1po863WxerCL^UP%+&4y||H*;`bcL2!vLxKiZJAXTylB)rbhnrFz^6cnc z&=iR3wt5qhN}*K z;j|WyoJHGY)aKvlHQGIRV0m7ZF-?)c{D|CComFwar{C z_fen}=fxagOPk_u=6nLWciAd0TOjGnDp2WS6nRD-(?X4)Q7vf1jBnwMAn*AxN>taJ zM$i@-ZOEm#w%Zr}msV9(nnh(|IPfIwwdQg29q$kOoCe^>%~2*sWS$S2`%Z$`X>V-h zIgVqO!oNr)>|72n)@31oum*le4DSQdeJ7KR$yU&}I6?-T(@3!tsD9s-&n}M+cTX zmV|jp7+aQ2oA(y`G8=bxYA>?b$yn%^7c$vnIp}>j0--b6e&{=Ti=hQMIvv$-@AX>I z>qU5ulYpDNAO^$8wqyXE{`pV`9?t^O{tncr;xl{drBZvQ=iZ!BDQ3Y9q!P5ZjjyZ! zAXTcXJ>wC>2vi!{BtztfyNJQ%qIq6CDch4HsUT2@AlvCZZ107VTsH0QV}rOIplWYr zapbMtYdw$kFt2fnb+FiLIbzaW{!N(9fX3Vo>+Si&Um2_MrfH(tK!QylOt9%LdMiv( zZg?e6FpwljNHqvwu(z_kO{CXiWvKJYa1ANrkF(gCY#K-Gy==Y|IAV0o!8T)@M*wP& zRK$AHiXO0l_1=vMswA$vbQ(&pA~29l_G4D#0p_X!wlSM;Ky^qK5o$HGP$;WmKLmUh z_SXRaylWt}thTfz8~Rm^;}z_P4D_%Bim#FYcZ<>i&=KW-i`T~gt}mBPfqxl=U*{67{Lt9kOh3Z z{>euEh;4=)9PriXR_QuR+xPi;IAN;SW>t@EYcS{ zK-<|81fq;q+QaRCN2(Qj9($UA_II`wVlM^Ab_&|?vmVQ`@NnRXB>8d4oZ+X3qWz9? zJ;I*Er&#mG1_`rme2KyLCU5J#{MNUfHLtmxT_3NoPC+Vf1qPuft3cndD;ftBQs{vO|RO3 z#&dG=283V;yo)t?LMFVok&keP7v{?3sygIqQfJdGrJ8O@)9TQ>^bGo2{fI(6)>GXI zTQ=pxo9Ky_xGktBAl4(>m*}@{s#|FHg~>%0i7-s?bRQA2*}>bP zic-A25v|Djno>Shr$Qlix(W7ew-ymHNz-fCujfZpdcFV{na>cXLf4ZN^A=r?lMJ|9 z#?eq0()A09nLuxs()A-6OXxwbuT|HItxDt*?j{jxRR7m)*=_y*~= zJmOm!b~CLnGWl zI@<+QO--CBSg?GgXghHqqe9#s^!&Xy*wxK7n!xN!xD=;gdyCW^-ZZFvLoi5zLcE)8 zR==d?TVLJf!OwFALwmmy=kEJX4Hf!1erfz8@g>6JS(l%44YOvjKe6Y z)o-L(d<1Bn*;(?p`)F?KuoR=Fa?LeM#KU=5LayVnEfAy30@b2+$j-OKGmn;wlsDOu z1U|lJAhlBo@HCxUTI^SyFZEqVM0NhmT6MU%K=Q-0RB&88I0sSLaVIVB0i^f@-88jV zZ}S@H;G@{AweAhB)PeXRPz?}39prk3D7)qs3)u>$N(7P;>S5vrIQvQPbx27gr9k=* z3xVWvJ#u2^ZMZ4$RUIi@FPQ@KeJc_0VZr;AVQU+LfOZ`Awa({kR3-dK=kvVaiyA*f z?i9*!y<$%%crw1l-qU=)2wUTI`%#O#CwNMa`zLq<26$aOo1@bI_NpS833}EOppp9pXMIHirKx>cbru5kE z>|MDUmKRtl2zIl!MDlM-HCCvS1Z{5_FJprx#-MLAo522IO4q>5WVfD|vXneoz$pC! z^NZ^mJ>YrUbkQy{X6^e3r_EdQMp!>1rC|_@dUs-^zfsCxMducSY9q5+*0L`6b0Vd? zx0~!C)EsnTcB><~|2$d&#zvsxIN6p97^ z_LHyR+L{Mxf1Dog;@{rpJG2e^X`YN_z9be}h#_*U3ynhRD6df^*2GfWr?&9v-9UBQ zpz4Lr_VDgL(88_=qhaKl2S2LzcBv@=oixAfJ?vL|5Fhw^5+ADPPZIt8sze{M^O(<= zei~;?|J#5uEh-Sn(>K+9EV8~7nP2jz8B)iw3A73SHHB+NRAx_w1#ig`-aI`jQ(r)& zr7lsK@~js~+eLw0GWi(_@XU0(QZ`xDTZfym3~mvShv+F`WpCZ8+qDUjK*se)BQk4D zEv|OMBQo>V^%#1jhG(TmWJc8#T(c`8GJX0KFGb>%;phV;0_*y4i0KO{GcdKqj;9GW zX^56EZ!2Gsv+ruuW758SnAp0io_bLi$u<}1A=B4u^7JTyP|h7*n;CV*BLyPdNcRT) z_7T)H5ISkvh|{K1Iz&&_*_VU@@kR;iCi8V$`OYk}8wwn?nIYHehn6tRMY$E(MpPMN zm$EbIO7m(Bc^a!@>Nl@W5XIyT*|aB-Ju2C?9^;c%6$@~d&s{lR|Xr;qw^r4aRa zy25dhVrB)>XQ&|X+e?S&ojDrt!g2`0JlmKiCiQ%_1RF%+r%-bQ@R97f5`7*lehThE zQ*aOBrJ=a)R*?-&Uilmo`SRHw{%oZD|zbww8IHyc4Pp{42#pUA$nEy8zALGd+IzZ zr7H+5J<%8kv#Y1lmA zwj@a%K2J|(fnZN`v2-B=j_BWRM0^!*E0?{Mu6z|W&=W&LL_$z!ThcvL!dGyZmr6$7 zXG5@VLKZJ;N=NtuHJZa=e>_{xN_0JfusNPDi3RCufmq_@N47kjaoa+f_1F!}d!}#? zYnpCnXk2}Vf=VS@(u4q4K&ZcLsOb7By?9x@SPn%%l!w>QTPpT1&cPWvH|ufcw73}7 zlxMJ%VVk|;-Jd4mSrm{Ty;h3@XdOD4Sdh;z~#8u}u|mpMzJjRY}VI z#p_AG>o+#sfvrk84_>NXW`0R1<{i}xOD9^;N&&!JqyS)oidwXsMvQyYxrhYO2F5=k z#hkk1wVb84Y=Pbhc1iu&68)UX)0@UGwoJh_K&HYH5IyJaiodCs*%K=E=G4oq@f9eF zUO551o zMCIjUQOwIqi&W~(^~?3E@MR<_FMEAGzPX(_K-B_Y3t@ZZ$6?&d->iK#H zkP>TTvn3TcRWi^Q6>pg$ULH{Z6i7*m=}IX@&(@pj&GZ&}OT-OCa5?=-y(9EBNRa79 zrqR@BVYEaXK_h6iF*@D|l38YR_$M-WW~z~5q+&P=!&yeQab?8FAB>dQ=+M=;0_tv< zf6z^%tn}?WQ&u1X){+EI80610)}b6 zZ2Bx>Pp04)bWItI0vqxNdC_wO33>61DN3;t>KuKz%q|*?57CGU+p;EF9=b}g8qgJN8WC4y)*%qfkjZB_Lw{}n9nB?gh*mc=ycF~|H zZo!_O=SCbGM#^M2Z?==L_P|&8uM+_Eo6tA@X_(7sZGR+-Ya_(LEE1oR`p({ z!r#Yaz*Cy?vt>mduuDZnFzT==y8m*v&R=tAN2!!8)&$h~cr`gU94PK1KXUt~0om_p zI(_Zomg$TLJEEe%2?O;`7ZYdkRb)zo=XaF>mF516SXCgN=jwp}OV0)PzG01vaV((x zbUJKDf@dlJvr1(tTyFBPWt#W5WU~!FpQQ$Wl{}rJ?IlQfVc;Vw?BP1Yd`(!PA>%g< z-~A01?WDnfxI+a$iBv`K3SZBcW0YNbi#Gn5e|@y zmcU?K&b1)7%C+#9PC3hnAU5HkSU6K>xWWdx?{_cEd=7%$XX-Sch%7z*nZrZoFXZ zpA?U|mh-6yd{xpYXH<71;E7noG}Qnzgb#diFaLu0&O5#PVby`Sg@K^uP)9OLh)7Nu zRESmu;;w?uWnD@tD0z z*&QXDbN9lm;Zmd1HK0O-ijO;(#$rB8Qc(^#KG?7#smsiJOKYCtG zEH;2Y_aIW62yayh25+^No+3u5^ay)OcDqCO~fCIu${?hRyd*0e){dt zQnXQvIXidf$Ua)yy#6b4Ub-5`oQ`~QgaF`kWs|43!H5NEb~fox3(}vKh@v4AzEj#y znj$v=$dn8|_<>UW90=z>F9hBo7vvM&K=q4rHV~KdAKNy56n${t+z@%idVsx^hFbVP zD+8G)l4G^!s`drCLEtsya>_8Qd>g12YlGp63JkLO$*~MUccrYnCFb1+?pn98ku+*ba09sgb- zvgl8c$29Rmkq*M`r=_SzzrUJmPMMT5fs5=Y13zr!8Z7n+=uiS?c0~|He;zObZHq^-tDuwccZC;rT@=EdYN^X#s$_mvp zA1S!e&+J?Xow_AW9|}xa#Ap)f)yeLlH!(x($JBtT!PED_kb1o~hCvCfdp7(*27!8s zR^?<^=)wZG1bud($L8_Sz_p!_(BLW3MlYIw0pq2Xy_kyBcXKgNl?rwsLv2I8lfj=s z%e%ws?&*LUdp0bM7MqSU^Y==-=zP8V6z zMbdQ9tXLd`RpIJ#@ebUsEf-gn3$t9bD;KZA^YvrJC{ZpxPMi*@%Ej~W|IgFKcrhJ6 zfRult#Fc!kC@dE<`E)S_{Jk7{;xqWR1Uu|owAq!_vKL9m*Ca)H5dT@Y}p;s%ZZL=C~hzYB}eZr9u@j_6+0AQ^hXG?~h}}GJY0{k1q=rLj{gN1$diO z5n2od#~(XIi6>Bax#WeZP?aO%`o*l0U?Yic=aLJ1H(cXLws0dqCLG_dxWmZm<|c1T z`>(O(+4eWI^Tf~skzN1<0aYt-qj%nedYNSJ7V8n)Evs>AYHHZSn92Qk86Xane@t9{ znEtTWdBY=T5VT6!aazcMZH)9pb_7<{@jU}$>!bBi8#R0092UtoZO3u$6~R81aFiym zjWL6D22_}tVaF+ToNy(*!L+5}u*06?1TJ8~WB#JfEpaoSLLD{RA){L zpu1oCuF6YhAY>=`GnZ_0w@KV;1$?3FovpE<9+1I1Tr66{-(HPm_6JV9IdEZ*D7nCK zEcRcn`0qww#Cc+HK}Den91au%o3Il8xc`347Q^DMy8Qcgk2~F2zDv;YRRxsu7mjxI zz*z{4z7q&X#56_I0&#z^Ch8lPJ5>%zhPwo|lT&Lsz*eb4ri+NhIR`8#Bl862A8)WI zG05vFd>;z1SWTddjn2b8oMRIfT-qSOJ?&hnt=rrXMSR7^^H}I@o-O81*9zJ2g^X6#TvN-vE=N zr?2v*S*~ez1$GTxMv`hd?l>NWm7r8KD-eT&z{Ad*{o9Y+%Wu?qNngwTsuwvtE);J9 z?Jh;h8?|g%uUM#i+>1SboK&l?h7m}e8a7!MOt-s)PSVs42Kw_ZWiGBSz`rl#dqsp5 z@j8^1SswpH4Tf9z%G=3r9SV^qdzeQyQ@q8eLo0McLy9tXoj2mIk5P}pICFo0K}AJL zzDV&H{H0Jaa#US7&O)IG*!y6}&X?@Sy^}b|?ov))%tz!)@nba~Q6n|<@wi0tnjyN~ z*)0kc`V4vq*4BSDuvCsb&rZhWSIY->wxTo0*Q|Hi_o%1QzvH|yjvELsaQv~FAt$Ht zahxX=G%(kslI&Mp%PGxSK7aY@oOy=!AFWN-?7kg7{YB zl~?uI>$|MxsWSC()Kxeq4LlxjOWhLJmQA2DSHrji{=ObqLhvYQ}`<+e5;6TxZvUC@;mv^?X$}EG-C#CQRDXJ1E>D@%Li1 zB_PRZiuABr1F5%&aNf}+OGJ2a?Cl;&a(>BM6$rq74c$LllU2MLBy{d8-YU)}m5@Ppzs2dX7aSA3D-ABL^Ke zHU9buYBa?teC8d|({>aaN8SGug}?MxE+ltBdzW3|Rszq=Iqip4`AA7XEj>Eun*JJ$ zHhmsJ1aj~Ui1Fl%9LNuiSyvNZ4IQ2JscDv?jac!k90D5Osp9&^%)1t20R}tdpcFh48%%8{{%(}tM0IQ+@rP=1%Cyt@on~v zzc|@!l()}mS~mNYql0dWep0CZgW5bqv>5__!PY4jlh*R@5!di9YG~f(X|ex>8t+Dr zKK%uc-_e(^J0oJ-f9>S(%rvLBr}1LbQi4wOaEq6=X)HDzH!FUq>!*^(3VyikgtF)w;%YTH|ilN@rvLK!J0vA_D($hoy1EEyO@Rh!+ z@4QenQn*BlpC{vLpgj*W=740Y9!7H&`2yiyL@F;cL&|G3Fh=cB7t4ZKKFNcKZN;|w zJ0Z_-zpm`LKx`-Eg#bU@6{=qpVuy)oK9U$~xx(ZP5G8VMZv!D#me93l0WrgE)~~Ai}{t5m8>u zw#2jeQM`azY?HXt+%V=@6(eFX6IQafDse0jU>Gi_vl6v7asd{0jjP-)Wc1XVq_W2pO zK$XP{)m(K4JFCUYJW+mtW!|kz)Ku8qpCFjM$ekDowb<65s^G=Gtn*1d8$`G>*i1dv zuoM?GOW9Mp{*K}^&_=yMwhnH>Ju{bow~de6t^mT-M>ecJ zYdnG-CKumTvtYp1I(OTZVZ<|4whQg5T*s|q%cNf4o9*Ag6-Wk66v|NZ zGE6VT8e?=?;Lf76m|-&#IJR@8KAh3;uEr63Bc_kV_5$RweP z-QZ_vSCJQQ)`p)TCEFHIFS0C2C&; zrt7I;ujRm_d}|$lH^+C^Z9Y}VrZ)GN?JCa(GBs4AJ_~u@<$IsSMCOHJcudpuI)6vN z3bA3d$HG3G#lO#<=>F$hkqV;U#`bKNufY3K+?Dey4HS6qEC^SG!=hOq_#jkCi%(c; zbHcdKrK9xV;s%eSSqjXK|6UNgR!3j&@-?ezR+_% z;+ZQH(=LQ!I%82$7YY0l2D&N|5k}nwY;%!Qt|v%Y`OuzZ@z0^fwDk>s5E8~Q1dOYOu)~xwW#{4 zy^oGC1E_ThMC(L}{s$;Cc_f;Mm44CZc_x65SHB>F6Rp;~FFqDhjrY%}@Z^weKG z-BhuJv@fx~e^LWGw=D=e6Oxs>>6rw9b;Dga1KYx;v*8ipaP+wwY6jKT)^37~U%<_! zJ41EAC@xF@{_c1QenF_x_yzl-WCXOvrk*1#tIi6wwAl_!H9M^G4PYv>Xpm|zsZ%>O z!FIBJby|&-{p1Vi5m?OcsXHAaP@D?AwM-!DpHd)F3o4+`;eXe#xHp*Fx@T@{SO~Cj z_9eoPjeH1yOuWVhip`G(UnI?HEE^|A1b(332;8XXK7wbZSGxP_d3r{tP+8YOlGPUJ zxiYX4jqltlDW~_-Z5JH^*BjCfL%{5kD~%QS+NpvleCNd90XIWa0oCsFT+uox{uZnh z$vh`jY8&o5lO55-$lj}SKDio4wXh5Uf-(D{`=p$AI-0pfB^v*{=lj`Db#(0z^x43( zYVW2DcP-lJ8gGsI-?}EU^9&6{H#**41TA#e$vW~Rm;Ura=yf$~?-Y(01j(m*EXyj9 ziLiFLTK1V*8XLoHnW}VZ)6|w(ilTa%YUn57&>w{63}W+>+^E(CV!EXl4Em>iliAId zIs3QLK3K*`bW_)zJXxZ~U`|NtA#HKeY^MbZJ5JiJCgaU-lL*sS zd^jXVl^P#_xNUW2n>UD|K`2);EJ|!H`kGfKW0O5M^G~HTP{3~FRpEYGIMsDg06hrQ zadaV&T7MIAKqc&rB!%;>vE9_14v3halXfyY8hf>`zyE5DE?#zCP~H}vOweK^pPZSh zcE=MG7|-ZO-3eK2dH_1#OTjQjn0-n6ZC|9~^>fYhO(A#A=QuJnHXUaB)Q-85k9TS$ z)&vcaxmlY3c8Dz7$U6atMx&{|oHE-&yM-I+`rl-zXM>aTYFIBrC2UKwqT)fnq==MW z0u(P1h;oV4mY0rjLXC=Vg$~Fj*kd7ACc$7XlgTh@&5&7`Z+p|KpPpb@A!37!m>b(< z1@>iGc6=0<>TD_6#WmqXmTZ~wZCD2aUWF@9;>d@f9D&dKK{=A6;Ss(A&Kh;Z;)nIvQN*1&H8`RSsh$HG!6kT{!# zZXtWmI8WIf2p%+%OU6NQ5MG+&qi^*3utW*bkuEgFb@s9mTd8TRx#R2sv>VOd(ES5M z3p%-lQkie%>B=k3`R2;NrYZbtSY|0j``qtn?QQcj-BMm13X5;ro8*!Hdpf#IeGOOT zi_a>3{6j-wIZk@Erw#*W@ol&yBq~ND6U`N)N&|Vc7>b(5zRP3fsT|eIbAi!mqhE|* zv$$rY8fiwlk!9o>tx@~ZWoP{*>l7C(b)*<3JgRP zoiYa&^wh^iU74|9m>w;Y7aak9qH-`SO&8f}Skw*XO*42-Mv>@`h!MITFtUxDqvDe3 zG@!FlJ-SW?Ptl24GB6-v_Oh-wvXDW)!kbgIm=Ips8@ri?5)5h8cb+#{L2Da!ULsat zFz%dh;frN>FfHkcK#mTk%2-aAPeA2ksC*L6&!Y}KdX|hooQ70H7SPB>~KlVUYF;TIK2|%kh zMHEj2{Y-TKewe-~_Pt$^bm8Wg&tFx;0zD2_yy`je70+Tzkf*V2pIG)qmgend&;X}= z4`93jIWyfhY^}zBF2yYakUD<`qIwT)L4U&ehUs*qHbwBSy8(ZPcqEY-W>F|w8bWKa z4+SX`MA!il(}v$ANRu=evLsu9oNAN+;##nybYhklF>4RnAyJWMvgd?%$h=tkm@BJr zFB}9%bz7sUqr8opC+J#gFSXiYpJ_29Z$zZFO`Rc=&e#zh_rPY}9Z1br*aJt)RKp;5 zyL1}PNnQ=N16Loo23J?ljQM`=EWYx#O7^2B_Bg;O1k=1WMa0I3f-CQ5lXVove(8!Y zMbS9%Qd^t=E4|*Se)$dBSUzfhO60(Hcv>GM4@I#&05@5z@ z|KSZ%kw2u7$Eq$R>?2KmvIj)^E*#H~uP`(>o_>p$B`!d=#uY>5A5eQ7J`BV?j`E)% zMAE>JB_7T*ge$^8f8#mr)_65)iLh@q&njV!p>}LG(nk3%x;|%+E{Vgo7+OQkgD`KA z&ZhfY5;Nml5_4i(5(Vh7Lu8aAHX$Cq9f(9CFbI$J*Fa+Z@oBC_LgCT_r^8|PmpBOR zeEd~ts@;oVv3se7eUQyG2-u5l^3G3yg~i$BxEfUmOVYbXeSq-Bi zH66j)W(9j%C};!>PdA_=Fu_J|4m&vUF&ljQgx}U6K71kg(#_siw@`hztJ>}MYqvLE zyLmizGP#fwW|H%jUD|?ecp}x{+qFL;8 z*HN0|SeA>H0HYTp97SWChSnZVL%s*q@E_9E_GDCtJ;lAkiKYX^KZ7CjA0>#lc`VCu zrm)E#)~EtX<7$y}*eEWJ_5YEe;vyk-gSMmFGu_V2=kvM;3Thm)Uso9zU&p6%x7u{S zlg7v4w{j}%N}itKgb}FBuyFT?{mpB51hV?4*YKt6VSa{C5@sM8K%;`W4N5i{QGeAQ z=Ipq3!F>OS@go{)N2S<0Q=RmFYp)wq|O*W^v)RH@DCHA84tyd7~hkzQ(o2s zfwb6N-h93TD_}W@EH#S?$3^a!;@$Gzxl(^}BLOjL6E?!= zb=%~^x>(*jGN@!YNDr@+PvWcHFvxd~6RwL?N2)E+B^bA}=K+u;7fSwSw?H3L3XM#{0>4j7H2}kGIS?p=4EaqMbcEfAg<$9~YQavXMw)2=0g3wwT<@FAFtb9EAGxrewWPni3AG zhbSVA4rf?T{e|9hd(WH0x3A`tC!r+tN9PNgSm=9e>=^EWMO^iulu}_`d~&Ae34!lGjZ<`quzZMa!ID6z zDbzU@8_cN*EjElJOpFD?u#WS2M7bVl3Gr_WHK83u{FtR635G zYj@ZOEQo2=0LMvA8Op?}IzmBWy%dS~8-EW6G3!Mo-6Isn42(XX*FqQfp8CoSHc7@` zNw%ol`M$@h>@k13N#|?`@*{J5Z>L<=C)I}b(-Fj<;i-KAr`e_F;3 zowqJTBYw_Sa9jmoyd!!(i_p{9jr3%bu39t;y)*Hh4=&6?K5%aDdI1FD%QgIf1Rn7O z7w|1k4fYKe2=i2dr>$%~BrB2p<2uxcb8sL3UqMJdOD&aEDuL}Ku-GKQr}nx){CYt) zW_BrJRvuR50+=?goV@-f`8!0l>74t0SsM(b_G8loaOwyom*7Vh*uy19(I3bu$nAsj z+8KOM{h(tyhjLHvr`JpI`bM(c1!l(JZGfKn3Ld(jNAMBJFbfyW-eyb&GMbqu(X*E> z{^7xR|DVC|q&2}igLTb@PZ0eB=Plxk*$6oh}G+)=y(+xTKcz z4^35ep%TK;fK~sozEJ<&QoOf;>+R~7;nFJxK&?dE2&?Cw>PWnlti3uR|4?p)Ul!LC zbg)cQ{KWFa3|`L0ND0jd1c1Dwv2l$bPY4{ilo@>ve1V~YRNEp7DOYd%`^n+bHv zTf^3RrapBUa`aa2`yqus-=4u|k$7=BO@9$tLZUw3rqOpWUf{Rf$gPF!Ksw)y_Hw`i zznkvuGMMa0I>N%wdz#NjmuC?|YyU!am?gyoJY0hn^6)0Ohe(Jk&qEl>w(N9zOsAHT zM+P19(p3;3Bs-faw>;(qLzyQ!O(o z@|p&b7Q0x{o{8FLuwMKLB%@1|wpu(=3@iB*av5?vv7{}Fprgxv}-4}SA7zCGlQ5(EFT4X~`U5FLKtZv~eE9lKO&Oh#@ z;{G6hxZ`CqFolPI@K^7qZ+gcpHb9~q&}d%--h!O)+B)@{Z{eO?h`pc8j}d=#Dw)s! zYalfjIEHgG`I&690|ePG6f9#$lC|nNP*DdO-jM4!6}NapaMAwnVOfA-9Uqu)yr z^Z$ya2;K;+Efzyuktg~E9jU33=R?V*D*2$gU6qp8Rp^mQDK^7xcipbKx;i#FRrS~H zY+nkIMLLb!PS^ExokQ29bbXhu$LRXHx~4R453d=3Sxx1;?#B7LGnMbAz@}9G^E%qJ zT$swwsL-lZ{@8j7eVED*&_O*rk;)IM(7{xGNQKavowsPl@{r8s6qM$(0sNIMYR8T? zcI!8U_J_}%11Wxc9nGvVKkzU4--UeRI=+1X?v0<|K{0DY(AC;bUdLDG9J|`q(pC<@ zKvZ5lX&rE~H8OR@fM}MT@5(&S$7y<&Y<_emtWh=fGI(+=A5kw8#}63c$~L3d;o(op z!U4J~FIlw?H?J}_<3qby^pL(DA1?Y7VgF^5$^me_bPIjc`X`FZd=BH1XW+Hz^G||M z4nGWk?G7f$D=og8&EL#1Wy|kpLvH9}w8E~yJ;Ro=6-M#q>8OI<%4o@3rt2+@R-%d6_@_~)8f@aS}1_k^t!PtbX1n}@=)ERI_A4Z3)5(cg@)2bpC9BEA3`V+%FEAf;3IfOrha+E(4%EWGbp!l zRRxspDxTi_H^t6@g8#PASLj#jCd#vyZG(o#K>O`pAZzCU9R=L%=LhJ~{YRxSvHRZ~ z8JKvx>o_vu=YHdO)eL?afh$63azBHf_Z~CSWYUBIBY1AQp^GFuKJ`)Rk_aCvSHDbe z&*gb-l|#@_ts1wNafNZEVR}8KVM9PT$18S&SX${=Dc?jU8bA|A&!+&{;$BJ1P6xXF zpV9>U??T#Kyi`Eoco>7qskZ|wpt{qSxi~$34x@w#JpGA<{3Xr(oi}^oO)GrU`usQh z{BJI$6426crS~fxy!*|xA$cob;SgTxe-L@ct%P}u%dvy-G4E_3dHGQ~!GS=fXfSoz zb3#CZ_2krKfe`!s@Owg>tnblC|5MnL8;jbo!|}I9QhdW zDlcHyDjqKkoLx7+{>6Uvd-)%i`hmL}W->V5Cx4H3$*_2jjEE-)#}fd997{3Y+p=M_ z!%7BWbX~_4co6{y()BqW@3Sk!k9W-`ADoZqvXvpxNSlSICaBiyM8ddZ4T{Bv$HaJod%nht6bLj)hP+ z=SMAT*uADB`677H2?A^$29!l40g|?(BRgo$Sl?{r@y^-ZpmW}AkY-yJFX*<0yt`4ZZqh;<;83fl5}tqR7?1$uILqn?~6RGW0DV>5-{C`bLS{KD_b zUt?XV6o#4;^LL4yf8YLEZ`$Bax279h*8`ze%IcBj3ZQcSYYkrM@CyBV>pRJcEm(7ICBswDsXo>Q9Hg`n{NKi1v^zKSAw9PjR#c{#}e2?F5-bUpUSMA`kW zyKCkJul>4Y!X-##A`!%0op>w)$_uQwFbPPwLjXAh0?2(NAg4f32nfjGfhWOR@c5JP$Eq#I%PB8KIu7?Z>=bj$!bSMjQJ(IC3Q**pt2Gb*0PuWkl0wXFq92Yxz} zkoq_L)brACrMlSZs{Lvsad8e?$5E!T<}@8d4p-fK3VNFa($pO3L&y=ErD|EoTn*)9+W#Qn*SBduEY zq6H`T$2P!xEFb|bJm=le0#-Cb)?zhQWD_pMht3W9y|iqKr&#PJ>HJALf0a&1I@e1l zUu+q4l#G#Hja#t?bHc;yklEouAS_bP$OYX7`GE^XK@|$VdN;sy)&39Bw&7XagyOF+Oh9Wly4{D`UOihKn9~?x-L1A8>M|NPf zEraUwo-M#`&=Fj>ij(hYsVQ+Bml3B&MV!nV#hfQ&E>bbqM8#auI3}Iu!Or7gd@3Gh}!D|M^1Woskr1{e%MUFY%f9&Jn8^&JHl)g#!uBL5Y!pE=W-W+;G1!T0~ zaUw=<;61)B#*gI-)Ax1IwS7zYlJp}T=mHqunTS<0)H@T0?bc9`M;E)7G(^U4y1r+L zid4v6`ZbZJ>i+34?Nc1ql{k%svck~9on!e@Bk~+*RdjfDL-hF;4+dZcuj5yu(UKW>goMxkDVo&|rC10Iv2TP{pSN!+KZrf;qU_;4LAyd@ zbpsA?*vW|cJgkU2tc}a2HS*2Yz_%MoiJK4Tt=H#G91NLEA`x+@R1J?+LEHO{>_4ji zQ~l(p>)HV8=9g|O!xO4+o|I?w2Lwr`z%U*nChuLrH)7gC!1=Y6e1n17`#+CFIxF}= zDTs26qMvLWeIrFL)%@ts5@OHO{6x=ayqu7v+{gIn)SD>vhDc#ssfg{W2uDVGfg;^V z^S6t>wcy*y{A3M(nqE5e(8#|_+H&U9W9kljli;iI?n{(Cn)7Jxjp75AW3r!wKDppj z{~as&50m9p`S<|*)915acVMYHsKW4 z4)d&dR^x&6S>?^K+FpV$m_r^MoZ#GeLh6VxPU2!LL*Z!(1+pBOUdyRh3M4Z#d^YHwL z9~<;z8q6lu1f7~ts%ccz9XvfnV>@p7F|FFGG9&55os+uAr_Pzb?3j%l(K5>NptvK* z_8RnRk*o4G)rD&4HCEa09V0B-^cHvXj3h_2zS|SG_x`(ckNW=rUUlbB7Pkf269N7q z9=M}X&_)BHa;c8WrFRA8GBhd|?#>f^f~*E##m86X&qzOU6{#r-U|yc58I)JSwfEj* zY69~^+jIq}-uIpSx^y1!pX=#MCh&I*+iZQEqs5GyNdt!X=U5#L-H0)rkku{H1%|jK z$fg)byY<7<`Hb{$uF{S7ADWT=7%FYVcRwDiMI`!RA7OiFmL5>PI`VC!-wL`noJzkl zVx*OTbC7190Tm|x^1S%!wpW(*t^;m)1?;*=Rg>OK)eCLAW{LaI3^L=DBdaEwwxKKy6E{y=fT(52j zUEdJ;ktR;uzN>Fc5O@e3p`WJmvt(}y^+J!3D!R|DWG}4Ux0>1xvWbwPyi(Y4ZjIlg z%T$fMIh&tObE<8p5dIu?loT{XpRk1>%bsjFwN|@es%TPqVKCiV| z7~3b(6pH#bqrhNO);huGJG*P;I0IWmi^PzewwuWGUwl7*`$WeY40lFlxc6JnLL z2_G3k4O*D6Yd%|`@wcRPT2$bU1>9yZyF~tXO4tmI9>!UPY^$aesC~%!W2m*L0uM4* zETxfrNIbPdnbfK(G_zs(6m^AY_Y4(e1*eH{ZU5(CFlq|9F_`#yyfRRRaHwV-amsCDwv^8@3>cChx`lOtLVAq2ceJNNUv4B-3g zrJ#)raoJSCqGEJui(0Z92YkV$dL0S~N;AvZc0W;)W7kxnCZBz?q6^8!1@NI@=a5;< zJ`+)^5MAoZIG$sB`yJjYg>B{0r2)s+$h)VpcV}boa-n^`mTy?j&lE&8$u0rht1qbt z*vjl#pEe#^wQ49nXkV3KR|Na0JA-Sd`b%~-x(ElW5*4kABcl}^QUd8{9!CY*>$8 zDrJ>9Y%Gse-=Y{;60Gv$9AE=kbS<6*L@^q2N28E`hQ&|&zU1?C-+a%UTnko3>_zLZ z*F`kUpene?aOnD}lH>7j; zKZa}HCbi(IXM)JX+TLG$n|N5!HdpvcD(cy3y3hIqe_fcECkbG?U}fxmrKo3<#5*Df zRn6`sYd(irj%bl%b`TR<4uK$5pPjlPk2c<0#}BXL^%S_hISfc#W&S(y-(LzTQ_xI# znBM=QwJ24|Ky)Ry)rz4x*P!xmBSv1m+hsP-NM(DHnG`!coT@{|?0sn7v&4SoI67Co z=jcLqpB1+3ka-(EO5P~Tz}I7_Appy$b+?t6;=wG@EXTf9-dD0un?uVSEpEGv9vfAq zQdlhN=o&lld6x|>YZLCX2Q*Yw>D=j>rgcT$ul2@9a zSGtclwOaDNd=zd^^1yMYxHb6T@}242aI3Ub%D!Gpq3oxK@FZk~=-yZ)jF9)U^Rh9Z z#C$(wYKc3h0q^AKG0)Htew}}t5mUTvzE>4Utq-Jl6=WL)Vgpa{RWc%SoL`@KRUg1j zZEw`v15W!;$=AqKp!)23;>50z@8BMn23X0}I`xwqvTybCa^6PxqOeq>jzyr8y4 zwlY2-5_`k42TS%3{UgR(JWV@Y1MKiqc$|MJdk0l)+ulLuwZPgn^!#4c^O?0*;{_~C z?M5fBPIYD{x&qSZaW$J03#;C%%lJ=4#MQjmrM?B)Ad5A&7ED{tSKj{aGJcjG!^iKM z%RgvwOk;1)=AS_v3vlYSe2i_e(W$6^<4k{=3@9?ZDe4s6l^abv@X_B3>zecNSW`pX?C9drQJGoa(5q}yn|FTma5L=xH56l`>?-{?3WMZ{$z z#O=Y_k!Vu+6=JRRAD7A95aJ1H0(#}a#^8hPAxWEKP_(`Wh)5%Tn8bH=hdgWT5@~0JU!Lsz(O@+H+Q6WvB?Hz#7;-hz!pi2B+Twxb1zYgo zr4|>dBh7FN5rl$le8rDt0qmIGRqP~P?C(jy2w8STC-pGMbQ~x2qCARsTzbP;n{7Jc z9u$Cu{lfr5K)k;z4LO?mHaLY|b}rlBk|Ez}n{56?>cG@jzwOCAwfR@lC&zxch#nf9 z^BEOHNFC77mK!PRu9jrp6?Rq|FQNxZgRqA+Zz(U*x;+ziMFRf06T^){rx7%YJ3_5&uQj8~%&9CtB&1{eWov`e8Zz zU*vxD*UyvER`Si>h0yk6oSZl}r(MJ!d+0*=`_4r&mrPC23_G{v*0Q)$es+f=lm1Wy z`Wh!vwh7Q=G>>6JZayx2k{&!lmDE&h?L_iAi9K1Z0 zZzOB!b@PV-@qYJlVKSP4wzNb-5U|+em!SzsK*HK3{+tDs>KX(_%JtVX>tfjQw+EgL?bBQBMRHD6u_gW;JWx|} zq(-Fe6MeJTM~TR#Cds$>u-sPP&VvcObu#;2eMrOuDyWJF-@@#R1Psj)S7nJFXwiM! zIM`#jT@U2jS}gIfX0{f8wgykBv>4=jZ7uFh4PKEaoJNgt)@{Cuol>`tnQcQ=19Iu@ zgGL%`;pB;ndIw@%_FSSEJB}X#tZ>W3AMO^tgV}a_Iiu``y<+sZSoR<}FSwz@rbKR{ zOz|UEU)32v13Ij~{a#=PJ*uwa+^HT``njoMiWNr{JfG?asZx zak!p4^6ULPCC$NfnOXw&i5upZwcv?Hf*D9Cdr3?BW+qBTq^9u868jo>piRll5_dAB zY|hiujf9F?ck*q{ZJ3KyM!%jT#y>h_eT7IG@{vdz5=h9@5;qq0<|2?JQnT>+rD%3I zS7Z(`5*3S+gh@;;GAnD-)D&>kLE??N58rFa}P8>*YavJwRjwwv&RkskES(4 zPQSu(wUn`IX&E3+-^VnDGUM%P%%!GA<9q zxN5(hZ+C`);_aK|nyAzt{@K-{RZjJ_HnM^uAI*PqV6!jp%+r&3t7P7$h1tb^v#(j` z6|xUwY4q*<>)M#?37B@lDpnZ~@_569F{@&u0|IJ_{wg#jgY}=~$FMAn!^TIVSZr+z z)D7U%9ZDZ#^Wn_ryju!*h2q8?vQCmy?=Jxin`i~km{&ZZB7 zy|fKXs+mnD#UBi^R~3(4$mX|D+#bo}p!g5lmX3!Uhw<)SoMKs`?9nV!Gv@X`VdP(| zixoW=rmyZ`+In35IKD8wrUOhvO{%(#QI|S63xQO?XfC<)JDBYF&;ELz7?^jBuU`wV zw&JSnLX?Sd$ZVR%m-jqwc&H>S8yMAq4t#wdF^DcZfMiLU`kWCk?LeFx&@31Bja8c{ z!$09k5Wh5~JLMi{SGlzT-Q?|3Ey%+w6%Y1C9$4=PAE1kOK^NORJ0+~e%8gAtZEV~S z8i#RgF}Sx#LG5f`w?LcKx_+iV^4P#_PwzP+{aa$T4Y`nOM6+$=we?Uyx2!7OHU$>7 zDf!aMbvZQ1^fe*kejGJ^U4sgF7+HvGMn)^G_Q0Hre?p*Wj}l$RZEQ~(@)uU9XRdgU zZ58uyg2;0{{%YQ*>6u#0rU!_lP-i{5tO&oNMLS1!dbU?=yZnmgcFAOWrs&Oon*`-u znimN4!~Qp41)QtQ-;>^6(^hr+2r3JEj9U9^p3$r$4<>IBCAe##(67<|w;LRZ0I*M3 zm_`diJ5u5op6l`#o$h44_Erohb$dO|`0qAgCC!cqwXiEMadYk_gby;5iH+E01Y(VdU6- zoL+2ND>AGgmo+QuRU8&t+lQ>P4b6d_?ce#F{`juzN|P<;;-}}O!PLQ8dBL=4{K$Bm zZzE9x)Iu@8a+G9oLToWt_D60N6b}#7I&0$1Apul-HkKo$qa%~-zP6PMU6Ah%NBb9F zJukB)InG%ery;$7l*TO{X(%+y@{e4cLemOmvu;#&7;v81RAZ=pb~p^Reu6h73x-s( zkzR3Cr%<8uTRbNBYkh}bS-n!Mod!h3AlH$S#vFy&b4KvpeUWsKn^VpImwcZh_ zwPkAT{qDOttQC;xP`cyzCSI(G9f1ke1GB?lq%FGYtY(Z0|Cr`gX!=q#@x*D|yb`;Z zw{GDZsLx zOYi#%A-6F%{g?&=H1;M`Cp!*2?kG(gf79>(VQ9#!U+SNm7v=|8et_En(NzW&+5skR z$s-Xs@voecM?~`>>_xObCD$ro8J~O>dAL%k8JUl{Yrcf_;Iwbp-4x>?su$ zVPI&dqd=r7N=Cran=m54N8-NDv^_g45+@nLW>bY&x|F}%C1!+Wmx^GX_*W3u>`oC55boywU2bCA#&1GIbnKAC88Boj8G)L23oyy0gxq!=) zHGTavyfUq9l%w&*C8cS_Ko?1SfD0UsCguzs5An)ImC@7+hE2;gEw+s7^TWUz0b74Aw=2{24L45+oNT9VR1Ro@z13ScPL?c)nRGF29@$1fT-Te=Gm^K23f;1h zy3h}^-K1uuZE`K($~QMd75V_Cptw{Po~prGu@Lp-n)Tpo$fm>{3G6R$O29D{7TSfR zn=8ytXpMHD`>S9l2MnmUzY6zrw56-Ut4UIAf@fZq+vVE25;U;H^nj`^5aSeEv|J_b z55D*k;K{V9d{W>lh-_9^Y?^FZOryAeTqSO%xI8-U{T^(j|6Z%HErTWnY|E;wXVp}$ zZF$3_#bP=)v@A066C4ScDeek(&Bp!7HoLx_XEe9NPBtl}!4<-^OHIeQjeVjuUJCFZ z+epNvC z=d!UTt1}3r>@rxqV6?uHH#8W@2^rkQoi+khC2V6rb#Q}F>}>`kKWx5N<~kNz5ojzk zyQYc1A|N}+4&x#1_h}YybrB#9ipTmKc;H{D%T1l{DLoDyytXdkZbtD2R z`)q_bQF2l~PYG+r(vnF5;M8mXq6}(KtN>}~^-wQH)F(DibwG+0X%aG}ANf59#Qi(S z&a}H^gxK)_tq2-!2VHv7-mn>@QfG&eGusVOFNXB3D8lB>OjuYG|x1VU1%q4vuhTjON|eoQlgyuUJq z-;`kpT)rpE>r>ja)dE2Ykc)17`yV_V25 z>-Ls`T?2<#^Qn0i{dUgad-LhhN+R3cl0S!R$Cj2fHBREV(~Blb>qtqG zp%tu@>U2DvUM~|oOB#@+kWKWvDxE(|3bRh9^TlE8yN`WfX-obDA_$w34Rl`PGHx@poWC@KZ=T8Prt@RKU7)G=r`iP=QyM^I#Lb!Ki%94FK-eCqID0bbqMv?`(eJ19 z`#Sxurr*Q#yBiF_d?v4>4&&xMdG2&o~Vq{H+(n|{kvDZPUl8rkM4{7|}C%oeBcg9X^EN|NTAri+!`PWC17 zUDz-E-rUmJF1GVowJt`FaR!}oRKzMODqr~^Av_GBySvJs*^E|dM?`XPtn>Vjm6N{(t0{~ZfrKP1F5(`ow**6IL1uxi$YCP3i zy)~ZH8k@E+Z(;fxlEXjTnolDueC#Xw0$DChUrL{5wkDDB@1^r$s|ej$AE>bH3On+T zd1QrpX{$yQ$Sb{TPDdm|o_kj%j%>KZ8H%nOAx-n?72iyHe)l99#QucfrSw}%zpv4m z?GpN(Out`}l8yb8_B6%WLLn3B_YL~}lwvL<_$PvgQ_Rf-k8dMQ%(5Ta@{QdI_1h2% zm~37fX}*{}--gd4^x2icmyue**%^Gt0~j(A04aU`VQ}anqBNF*Y(`0>gsA2hRe0R>SEV+T?lo(uvy~S@8#My;EiS7z={;2+>Prh za=_#G@9lh;DE;YKQRaVFsRcctTHoEWU@hMZ`-X<r^RXsC@Jw)|3 zzt-63yv*WG^E3g=N%r5aGlV-u;}g*MWv7r8t^mFfcrPQsVb?@Yf$8`1X1~-Xte+QM zJvr#LuvVDnpQM#avif+-MZc6)RNpj0F`wKwE+>LrwJ>OAsaau;GA9FeIfz{%EejuJ zW7DgpwxfGA{Wy-8q;z3T`>Y&j2XC1STW;K0bvA_M>TFWpQ!PF+vnSKIN;{>0{Qqly zs8(EHlGLgR64jJm)Ra~^%vCMH2W!QVN)81y^BrCGr4?d`cIAD37NHhf-as?y_#su~*Jtv@C- z;QJ;H-aU&7{*e=5l;Y*6L!seg7$2eI$1ppptfV(e`jtvLoE{oKE{2S7OWBo;>mzwC zb}%|6X)K_Wq^GJg{`AEkGIfe7mn1Fwr+~)GD~3MkzuotHZKd|ff1=4EU_PXfSC+p8 zf;ITN?!vz1S{w0$2b0ZOCpW({^hXxb7EjYSI>1yJf*FEs#9mM47Od#sjKSF zR8s2X&9d!KSJy5P>G(3`UOSvytg)xiij5s&FLU0|P@Vg=M1>tu8Cq6}g_dxl%NWi1 zVuyxL2AHIYGCGQ>Gu3=EB%fbo#mt_?XRhJfp5deC^76TS)H41Az8DCxX$GIz4S97F zh!Nhck+phvR5u5Ba^l7Jq_MXQOdS)14e^gt=rmp5u#6j?X3&M5ou48(Ht2DjrS@`Plv}Ey6 zmM?&;G7`;r>m-9z+e1+;ssg(AG`}KwzZklYU5X98g1^v<=+(r*Hvt;{NsODz$Iq4X z4TIPMokSPmh1gB9&`+!TD9b~aS#U0aCT6b3V8Yz==R zy$Z$O{)cvx|KRgxk)c85<|_9FhmkoUR(g4}D0f7}f}_ z+@k_abS+jQ{hkURES(A5_@U3SnW#Z*bT>+AvCi_--=)(DvfPSK&e+Y`4}E;iZmbui zi`MMM{tfX^?LKn=AXUv4P`n6uCxE2o+k#b%GX6=3XDj7nB#S++DW%h-E#Nx7AM0Ff zvA^K0gp6Zi%?PZ59q9f(MN$Y=CHcPJ^~LyPND!yYiJXiTG`EgPwnXNTDs z1=(TL0U_0{huLf{7Ov$B2*)-G>U{g2Y%_%Fvh9%;thqu~1?%xYQN#8(Rr$X~h2^TS zVNqd^Df8{Dy#RMKX?MO%TFkU6*x!uu0pq%l>AtG_s~9p_YFGFJe}PmBIw5v>L#khl z>q)B%mWvc_R3EwyU{Z<4f*z<7Nq(+k1L-StQdyq~E$%TGY26tnUp339GbP_KTZplJ z$B{A}e6tSDd?8+Y;C0$`EfJ_01BzZ5QZ}cMUHRhHnBbpL$h!*uV?Oxy8kL7M{_q12 zY%Mr?Ygzx#ZeD(K-2i-_|6pzgGA39@;8&!3Q0Dt#)7b2gitw&-SL^Z>_If;#a7!F| zPC-De50ok^7E=TKO;WKwI>0|fd-MZoBI8MZ8eimyhe z^gj*+5l#M(vwaCP`w|6|i+8+ksafiUMdn;l9JDu-(4+4e@t%s#TP3qyl;TDDeI0+z zPHZ#zo@mA*heLSM^&nJMyfBx)#?6X~5u?*4L>FbNG}uXlvs2?=`Pz8zwPab-gnzN+i>&3^mQFBOweO9Bi*KtTmeyk9!Q>CRzPu zCO5$J#}39|xh2TdJAl*QV>T{SBZa*j8;y2OSftH`oSTkUn0?)l0QVezSz0dJ9oHDEE*T;22-^J8=0A&BBjXxjmbhXBsu|^%H8+7R zg!bQ#Tu;nSNT2>@2jHjP8A#$-gb23I*Qk*<{E=6t8f%ANbFDPVDAgyn*97(97qN{H zH~oCQfLJ>^_GhtHB5lXQ_2L0Q*arg4$JVM?g{{E|wqAlZzfD_QG{O`2{w%iI=3TiK z%DDLAvkG6?wq#w^T9GT0z1%>rTvs%kBpwPDYy9+(Lnwa_+qi}4Ya_-^6(PeL`)fL~ zS%##LTMWVQ*~+yQw>L-rBOFm9|9+|7{ZVWof?7U+IV8we95eK&{=~tS z75BXM!)+WXSK>efSwLM>#5xuBGPqCm*NxLdWTzKD(psgn?+UT?Lfh`Acv-H+>xE3X zNi?o44D)(CYp#wA^I5sJ!3hGFj-bdf%1|UQh>bZta!<>!o@LpLnPDhS7=~ z7LX#nQq+T~O}pipTZjq*SsMN!_PtBc26S)Q7wnDQb%}$^{kzqqWc_edGryG0d|#-JH1BVXwp*zM5K%UMwAPS- z9(KdJu8iJ{)&7tDGTrZ&L)c{KmD+}05zV&(S4=%pTP$_TRkLNP{vu^78x;_M&?p_j zY61c{$G3XZZt1%*{17)S*i(%oiRsA!O%k^Xd~2t81qVj_t=@ns_=0V2fSR)~fcyxd zwc$4<63yhXhLLNx4jAlrVr#*+xk}I8n?s!_Md3U2xW5j# z;4HS2L?^1;e{^Ke3u#6NqallSsO0ImYw&h`%Y{CCB#~f(kk(CJBK9>M@N6<#) zO@i0b@3)j!A>KQaIUqbqoGFxEucaEFJdMcC2My6iXc2IcA91mdH8p4+0YjE^UcHu* z0>=1aS&O5Th{B|q(-#lhA`(^&@>LarM}KMf@Db;y%lY}f98`v?&i!%<4@&}LrUUk` z@6bfz>nR~`AJ0v-PVhA|qvgLUAv$U7_d_uKOM;&$!jlad`lA*KMaAFoG30PoUVls44;q1{X_0( zAXo*RjExS``Iwuq8@d`?eLs{|&@{pULr9T+7q4NCXXYxFh z)-=zFF&FG9LuFX?%Td<_+T@a-X zT=>(Mu^0UGQ>>V|hKO5JWNtJ!#>a`1%YQlAg18Ih2C@8z1A?MiZ(Ee)vC0cqYu>M` z)`r+$RjvK8|4p?{U$`Sz$MgBq`OlM)A9dQmHHlIY#t7kH2b&%LWm4qD^79ZPpSn!B zFkP7+FBixQq>v`&D$*u@D?ut+2#pzC@?Cj^d_kAFSZw0FN|&Vep#E z1vBFU3nr-x{e9GenI$|uN1PrOwO~Fi7fckh9(U88I7>W~hr38xJyGKNGP$c%E8WZ% zwx&}T4uWtU*SyPNrStGxMV!?Y;Q+H>^>gfiZjCZ@hY|pxDnb~-iu|xF%d~F0-S-6= zJ^;azUt}dw5`64UhK&`Zd{~13xUd77A0iXOS`nS?vABp=4=7SzWCY|#pxDuIVX2Gu z8s}CS+6_%oeerp$)k`k>mmw$cG@c9zOAJF}YDjC@6~rJwcSJ>#+yQlvRn(Mgfrvz; zsn4;2kXkejgz-YAg3}lAP^7F&BT*XV+cf$AF;7|TfU0(rKa{-3FREKk$DY5vK09P_ z!(bVgp0AGLvHt|wSasB})i6G-;m4Qr9R){5^HH!>I))p4k~w2b41R{p>9IKme;GO3 z``ehE*h&NS4iPhp=L;2hFGd`!BQM(>Hq}sk_4W+blW#AV{21*Kk0io2X$NkT#6vk@ zkuanaDv5myLtn(uzlMhmFSgkJM5SnFe`13U;Yi>v6rB{Qd17GDA_dmVZ=Mn7XyWmH z^WvP4n<@mzZzfsTvDshUc#eo9I?&))5eV!=fQI**# zWLu8LWta7ruj9FjSw`A2f#&VMV28cijGwo=T(%|&798*_qAQ{$NrH$sU75?{?uvX* zmTO|M;b23dP~sDDaw~6{wd|cZD&5rtmN8OER(^=@!CJ#E|MNICW*3TZEMAS0w+ z_XTk@er8#p-}yl^acPajC}G>1_(vzmQ=-P9PbD<=?~A97kJ&QlqquL482Av7A6{sZ z@IVv)q$b5Z*Tlc7iT~Xu{u)}@D%r*+;bn3DNS9SrTi3RZ93+4L^S$cD^PlU}AL1KE z_qj;7eiHAGazj^7k!R6nnR!>Js$(ShMKDrA#W6f@W<)Rs+8kz7qABQ`e$x8hL&qh-e9rBf@l4?667+17~(d}Md( z3J)J6_KEb-(S%0c7aDtaB>0VO2-}z7x3wYc%>=)x4Pnz7XEpacSuHtFR;$mG)s)6{ zK9e9juOZ~cMAeC5wkuI}VZ+x&iLxsjLaGyGe>Q|{Or-v72pHSA%-M~-?(mpzwP|X#bYarfE+rLFB#u?8u|+*9;!q<= zA+2Qej0_vJVs>kfM? z-RBU7r}IzA48v6!tUO(93(Q|=I9eo@?fxu{zc!UJnvqVp@n57p;M)y-EkQQp->s{> zFh1(}D2~sWd18+ZAz8{^9#{-CO7KxUx@u$GM_O0moq(*EC=BiqD>(}d*L_^^)vf2nMUOo zGFzD}vF{h6l>`5h2h7~c8K|hT%APKgv)rn%DJ~9*e+1_NmCawk?=cvB`OCZj6A5=4 z>^UcVt!+P(-Ngxu!8!9#`X$1>*+m)bOJb=$px;mFccg@q$UH*)sv_LBB%*LkT&+8= zU8WYdc^1GX3Z!UBW7qJ2t;MY99dP%%nm%nB4^&-TsENbfKaH#DLhp`a3?wXx;;x_( zCz5gkdLSkc7f1{wxm=Tuz!&ucgV(wCU3M7u{A^4!LXJH8mXRm=2d^`2ccfi4{CZamoog?& zt8BJAQPL#4*sAg8u*Kd?RP?D7!cDJMeF!=1jbPuD;K6qaszBvQ`&3M5=bxe&u<_;c)`4u5iGK%4b-*gs z{|n+*Uy55pC4MTsWRNTp<+=DZ80AeBMS2~yMJvBAj9+`H&fj?8`S>#-YS?NO6F*4F zylC&@#@?5>HatAK`|_Jfh*t&z=ds*b6Hn?bt`ERM_$o&FY2eRCTEY2lMPag$RkAF zu56Iskl}cr38;_dSF1XCW;@mv?JI9ZE>cRU(X@7?**1*Je&g4g-AQCTrp{gHkrA7q_Moi$0ABN~w7=p@Sic$n8P4>Ahen-8e;T~jsblf?d!$Ig`@q2 z_?9s`;Gg&q!1wE7T=?6xSs@+Iz`spH1K$qN@1=tpRiPNF5S6AOF1uQiwzuL>T#8K# z@roXe0&e7MM)O7?|Bx9;uPv?|f)d>gVY>L{mf7i}J47jAmr>EeRJ3;#SAyu2%79{) zq#uT4RXiC;oc>0KZIVKqH}_{R5WcH%F%yl*@Vp&=lImf|2-54YXACt!4S{Tt zA>Udk@8m{F*t3Q|Mk-*Q5g8;EvfS`T2?OLPP4Gu)LI}%UXZXY9*QCavaq-tl8I zhd)s+QRu7qIhP^omfGw;>bVLA>DuVQ-=-mNp(ds6wg;x|TA(h}%akl=qmtvWVe3rB zw(lX1Y`}Rla!bRmtLAY5(J(P`5GvvUuH@(newdr3tU${0^j8m}3e;0Q-}urvE*1}@ z6VVDEa@aHkk@uVjgBS^&&r#2APl~)4gP)_|6%8>yiDY{;lI=JlRUSZ<>Ym|VGj^;Y z{>g@NergDPLNt_9iLg9*V4jGS`Lu|{zJchUw#-rG4HXC?MV9s%i8|lf@V$sYGK+U- zL#V4Gs0w|IlTQ`5g{-g#2?8W5#41l{vtuZ=B$D<55h%G>$wK89Ot+ibn2y>-VIcYHht`0bvk z?JA`?s!4H-S|FK@!Rk6VR30{U9ra*Ea)hq4djpQwpZLMw1YJ9NM z;@yEpy>{_C>$qO8{pLq-+`Do;E$zL5##ycXn`o&cB}KdB)H~ps@ z+8Y-eml(hCYPFPQQ0#u5nS7*_H&5Xy=|+m@d6TQ?t+`jtuSkV&XN8*;ND*z&)OSjm zr(Lve4%a=c)p~FsS+ZBH#X(P2Yw^&Nu9h&Vk5R?jB;$kB>YA!~Qe7obI}E!I&8vI1 z7Q3eRf)=Hs)funSE~_Z@ylPRn&#SKR>d$`TYQZ<2=gV4DY3awOLSMH`F4fw-33R7S z%RGeSrv=(17wNohk`Zg98$lz}XeT~-q&M5k`HY81aRuj}Pb9|epw@s|VI^+$o<@Vq zKG5VjC0g8*!c(+<|4(fBfEU;DssZH%AFSi2*YQ^?IXM*6Ai3YucJ%MkwX*qw_zE;&&aRB8q8!-``5laWBcFlH!d24wgLFDdr>mGTl$w&~ z1J?ksX*3Pcp8?z|!JFl#jM5ZJrAgDECpZc?ela1ah}|h_rfH$pIvi_YeT%^WOn!%QE{%UVJsL5a(xin5mo}HY3*ay!aEH<6%(J$KUY>N$- zS(ssqja8|tQT5(@dP4;frV4G^G(K}0-;JWVny8%4AAxF8dpNa6lkL&5Jt2#yrc_mh zES&qaQ+iU@o?6S7PT((%rSsHMw06SNQ($#KUa6j)*3=O(PzhDkEIi;Z&UV>xjZ~8b z^BWQz0ai}F^;JsGSU+hsSowz1>lm)V_H*D0TwouDktB0YuiBOFj?%t(acJj}yLRHGs79xw^rBO#}D^(!-9d7VoPMyk^PU zvEym%%NUfB{kV{Z9GYdIR?cUqbE9J$GoStNvtLIAlmXe38rnrb8B`az#2*{^4#bL| zZk1L}SH<9mQk3mpVkkqgq5N`K{Tpm0uvM{W{sX8#tOKPu15k9jGwGJu5UWK#sSo+| z;kj4?KCCHPS5#Usc>-^gXl85xzCB;GzG!XHh9dgvtOgeOLghcHzOY(d0o#4xtr!J- z<^yN^9vB&?fTMoM6hF=~l3HBlXL7&?_WHnKANa{H`g=d*j1Qdfff0WGkNd!QKhjOW=B3?f^LB5!b zi}EaOz|pZff<%lb5=cz&(+#07=!lP}JH3Kz?<`d}i_O&$8>8u)#TMv-qT-?GVwG%( zgC_+a`2F^kuECaLLpfj86A1?uv&_Lo&A_xf>0$6Dnve%^v6>Y?kkkUP*C-ej;aKc2 z!H>%az#qm$(pv1v7;)-(DLY+z?`_|Sfk8zDp2jEA3{9MP3i>z#jZJ4iP)W1!5cd-T z-$w#9ld}Hq4zkvZ;F1UM)=zJ!>>C7=p2)WeETu=iFH`&94=*9#NA!hwh3%9h9Xpe4 z4z`d2Xi=SPV5h#ij6<*fR3tmKHmV19M8P9yK))usH!do?Dhgg01+S$sC#t(FD!4id zK28YpJR-n%M1`Iov~x7|JVjbfDy1r-5=@JNj}g3s;;fAd-xLMEO9hNtPs;05diH*i8Ni zY}|^~BRG6l2Ky${EYtXco-ZYC+qO+SxD}O1bN1Oq>Xve5D_D@(mlvt6sx=uhesemX z&@6nUI$Xj|U!*p_Rz!P}+_EO!}%gvC%!tm+}4h*!ckiy!%(4e~}xeM}KVe$yMp(LKi`Wz5yBRuW>Lw z^I11pBnFT5bIE1@d!A64_pL%^63O)%jiQq9&?RkLS7WP3^VeEfbarZqqdbSbCB(+H z5-WjJY+BAwrP(}Sz~+gW%7~&}QV8tcK5?E{CdA5Rw`nqqZO^NFm&X3RJW>R(`Vkm- zsR-ybM8Wg^M#-l%@y~4HuWI67)WpA{iGNKK|HdZ%+9v+GCjNqGFDq%}n=X`BZcv|W zl$6bh{)*>0k#4cryoe9qUcX)PZCWO7b2lYA*`}twz6^RCHjihDz%k8`X@$&?UC8ce zT($3-RQ2x0-qTG!KPehjue7oEKINPLth{iX&`@7CSv2|hYLl$rYT~bN;{Ujb|BJ>w zb-b~6yv{eSmDhH4YKaCOR(29oofJZSfwKR?h4Wooc9tDNNyR4p848gK)+s7}$jyi7 zg8CTZi}PenYU-|1jsKl;FH!EFiOV0!CC71xbjEPLl?d-+D*Peo43o|S(&;3fYov3d zbUI3>hjfOk^j)NLt91HE=Psjka3i%M_lnZN&yhwGI*2e~bNa?~(nccLool7jNje?i zGZ}8lk^U~=NB)NW1%TtU*8Lrz(YU@0_SdQ*>KJBrWM2$BJQ+k6HrJyyTf*>vMxZVT ztwe=YJ*6Rd)?2xjjBvYj{t-!WPXwAxRQf2re=Lg;TLw`L%OlWigvycMnjfPfG;1yK z)(Mi=tHIABq=-}kfImq#A`Za$WDpu5+~}~$F~r=lXOugJ33a>OtBeD-bOc*FE)U62vVo-QSlBacfTs>v~r(_m+r(w=~gQLbmhLK z;>}k6`O1Am32-cSyziScNZB z{)Nijq4Hg?+)XN7wfcTkrJJbAIi~z4mHVS|J(Yg3a#tw#kaCZz{MIUWt8yPx`3_g^ zNafB}{W3-Qcd7U@lz)zL7btg(a=!|Q$~;uH%T5q7ejniF%j6Cc7064pds0>URGc>X zSw6AXSIAI*6Q?WBn7OpX#T%8+@@dcVNxdq2y@)YJ#|NTAo}g%}i312%#n&wmkxkz-jU{A?wQ+ z=wSx?5E_ZlYY2Ug&|3&i!7at>IElVR=rBSj3Bs?l@q+Tzcz~88bR4tZhR`O2%5KAM zPXuTJGVa?k>&OF$>t@%2W9M(?Z$?w zGlE7f+uZPBTcZ!#;v$6b1h#G|h5p&6=iT{i5=eqIbZM{SiDo<2Q9!vWP-n|}Elhu* z13lGubbaR_6ri*B=zzcVgU=1dh8C=`VrrJxE$45!^R~)ITCPnl2$m5?oI37=kwux=$o{`$IS{ z30y)a?K22oH%Icq2(Kr20l{)2ERk6f`mYpdYdM0oYv|K9JQPtUtB*>8*E_PfKH#sd z_sTClrSo^`bd^q?bcRajTIt*+oj%gJLpoP8;*AJ?NIIlb?gl!HZcE7g%K;=m(}jQ7 zop?KPI!Wgm@nLtR@a;wbmBP2-sHE{bJRPxt$2&D)F(6wkXHy^F)C7&%sOmj-<8H;#>g<*P_mYQ_fD4>j6J7G!EdSE;C*Gr z!*jCP*AmY1yiqXv(Rr16yme|Mzi=C+73{RqR^V4X$2PBm&CAB#c;#hQIpK%Ripi+c zh2>uyU>#7sL8M*KthEAs8+uEUdQg+kpi0>+jsMgOHLbBajqgQKP4=$fua1>kM}m+a zl(8B+qGGaXR#bSQd@IBbruxSn&o&3-prcFFZrd|rdmXy3yyu1%E*hz4E1HW%g~YgL zYwV-x{1Gc;g~H)*NtphXgxQGZ>TJWabw0oE!t~u8TuobqR^m_uYex~Pxfx!~52cxC z!(Ox}d*DB$s#Kv0b|_UIf&^{RBF8YMT9)GoHyFSh@XuH9DKTW`1p_TXaL!s+P z2ihSacM^*!;kt%|Y`ILwY8sNUT9s;(N_8rkSm0#;c;-~HJf3+hMIFzaN+w+Rj^fq( z@kB|^4WyBoeU>awXvBaVk(z@R$`=)?;~9M8GM;KRUGT9*L`$SQNr6;)*-&G8b_y)O;3fU%qUp{nN+;r7DnsKwcKFyF%oD)iR89=js8q4Nh^}3n|7dJ2W>6&+QSul-@!_d_JFzDzezXd`-^7 zXd7qnZ`bj%^*kmAK4M&z@^!i}gLGj?mklUL36s#=h{4$h&;gJ@n>dvlj>cz~kfftd z?U<&qg*}a04_|IzJuA$@P$53El*S~*J;6%?JRH!`6bq}wS3qGlF@?X5_kL_<3Sb*G zn5QMPr7*gAQ!B+1em6|M_t56$FtQG`^O4|{Vg)DZdZBJXj|+JX3gAhc;-kAg>BRIF zwU6XHod0MxK3iy+g}-BYmLqRREAlm7J%;PyQqOTpJl7c-%Jpp5DJu-K_hU%2yVIeK z6JjIc=~4nElaF^RM-iYi&E(r@Injw{sFKaK+tYn}KwJksyp0|pzLHFXUV#_dMPTU*E?Q`5FQ7?C)P&?`4n49mIUUW4Jl zzCVr|mKR_yS-sX-bu!@e(m~H74MjPdpC-e=mx+WtyHE@XvV%#C#I8uGZmAag<;@Gw zcB!myJeKlMt`&luVo@H1EslXU9hL9RpYLR_$|Q9Su%Ha3iXA)_~+Gq@YY!Q6Va(TN{H9u^;2)9rJdT}`1sq_1mBcDpyxZ|BVmChQC6=>Wk z(v@0N2NY{M=CbLAeCU^+M%e1q_kYdd|E3q;x>E?t;dgOTQHAWoiaA{OQK427Cnj_K z9~}*G<<}v$J%H5=s`(Jk?hG{Jt&)h<`<2(?%(&JC7IY*T3hM(D{ryI1T=TqXa^2h5 z$QYkmHI34d#N2kqYomLV_ne6Rq&461fZ=JWNI;2^VQX!c0W=f^n&uht1`KUW6o5@HsjkrC_I5KW zw6yOB8ns&TcefZNqBT!Vf?-ZJ(!|}taFwTBv}piZK&8J4ien|N=?Qg78B>JDjbdNR z*Q+{(s;dAc5{(q&B8V8c$kq~ol(<@}#Y?&21yUd^7Gtr!a&{(nDhA@&318^T0o3IH zavVTg6JvTBT}b|=B#5t_uBUUk6;koZd4?Q1dvVV#&4!U(4KhhAt|wva9ZBp$6HeI? z!^M3hVm+Il#E}T0tz<%C9t*Tj4+!67tB4cIW~&XpgLD*enCjvWIieuT4gs>wDKY+L zi0cv7j>Di>Z48Zky0@HsI{Db#+tI^BA6VB6ng@XVDW1m4iVQX}fSE%F<loru(QL!{_-vo5{6F_BvFIrP%WZs2*Nd}Pj z6EXCRhkdEsP4OIf*Pw;w2_GA5m=$RFW_kiiq;w{U6t7qlm4oZj+iBVqaKt4!qVE|f zOA4qMBm`%MJ&7b9@K5G-sCTi#`L|_?J960jNn%nMxu6QG9XslKkY^$;%nJeGf|_MR zxzEHI2Ybv9FI>qhr;~Le&(u<}O|}-0xRQvtQmh$R)(h7cYt3*rd$m>ndI_c)kd-c4 z%q&HD!4kbnwKlu@$@9~wrVZ83VO&B-FicXV@WVD zX7Lz^XE?V3RFv+fZp&pF~#u*8JBn^`>Xrt9=1{tJy zp13)PG8`w?@|PdLp-KCe>Yudx0i+5)tVMB|vSY6M_rH-ov|+%!9yX6|Sp&jBr91OkD? zK(jzfpn0*@0=vho*Yxc@4EI|@FXb&$w7AU$2D-6x3k*~e0*gjK7YV$1lA(Kc{hBf@ zW(Jay)X5LkrI+sKzl}FiuMeb}7xT+gwS;j+2G2~@;zt%4BHSCL53hy}NacTS0aa?j zP9+fw1+w$0liE1(aI`O=V@mhZ|u1%DS zabBavI9nv=sMUC0b*C<{8n2T)%KyMFu?u@Dk^fK#%!CP4<7;}pA7U?PqIB?^$QPQm zRtB4`kyL@{tK#&jb}uBplXYc_8E}j3*SR+o_1m(~bm0w^l&~|=DX2v@aI9}Uuqi17 zn3|j;ZV%?>=3aL#^obnrE{2A^MX|3}Q3uDMpnWwew6QG*8v1xZ>?op#b&4MLtnL^B7X zSZZxGY`{9Boq^WfjY|WXCsOi&{h${y{lrT}sG^;9;V%`*M;}FWq(Pgs+u-Z#bjWuz zKpRjD!p5p!;LVzHmB_;XHZY=jR{SU>k*bo`>KAGz%9?AA`?&mv+H)K45 z%lHEua<OakT6 zL}d{8Zep`45t{xgg?*gJSCgBgWKZ9r+xcyDHWtX#iNqFq!M`z(J3i%=BBc_CyJ}>h zNZe5b^1VnY@7VELv!>9doU1FWielz?j%ohij{>SoOr)F7nn+#pPfb7>+RJzD(+6SE zyMtzy4m^UK&YNfiQ6@PJvH^7oV~WpBia1Bmax1z*c7W&{!wd*9Ly%joI*qDYZpF7CJg%%Mn$FFzGhMF1E&Y zFt{t)m0%+AVk`l&c3bBd{)QsqXlM3;t{kSH8}(I6Uq{oHqCE0&Cy*fI!TCVhYJ8_9 zjj~XhUvy?qQRqxfLe-VI2RnrvjqNMN#X>v_AA)FrFWv^j`ePU1cJ~V`BoOeI%woHx zTs87k7)vq9+Fqh*EH+#hX+>i61d&k$8@8-W+*`ty2KX;kfuP8l0H|sb?5jt&@x9p& zrt94b2;nP`?ikx7C^YB|VoXse1V8L+Ax?!CU>c@UO{n1k1%2)gy`R)~-SJh5$S)H8 zC+PZQ1DWc;OrQj!!y!E&GdAJ~&8uZ*15kEx+e{#jnb$fprFt2Epjsr)JZ@x&(Lp_< z@NSX5OiwX@2TNZw3MRDhF-usCI8a$)#2pZFYh8DT$%&%&1^ZqhvVaR)x-N8|Az=>3IQg zTF(>pM^Xh_MV|=_?PW!}E(Qe+Tp*Yo)RU;hqQs-S?J#UKC8c&kgg-R_;J92?H^isB&HpLM@C5`B#i2AI;3I*j>UlM&@)m2@qjLi^o_nqDv zxqU%+dqVd#X2ll!TKCL`;QCa8I;(ys0b8fbO^LXzP?<$Nem0!WLRZ|+~oM(s5Ve3a`avDG5>ajy z+sZwC&Q2cJ=j`I7&w0cFM7m^Lkw~jFujwi>3a;y7i%UvELnK@Dm%de@$e57B>ZOv( zku^Y35ZG&;nL!@-a>`?T{9`2N0F}Fv0xcQ52YWb)?{HwI?JjNEPE_oKtPo&d_BN&< zh}a5QNB*v}wkC@v$S)eu!Vv8t98GMyV`c7(ovx64#T`4dVIzEb2W^Cwpe}X79jE{y z%wwDdroKm5CY;*}b6uDRoS&Wm+u<4`!HibPz%N*A_7If?dO)NU7=gk(v(q&yGCZA+^2P*R zzXdg2k%(JGRrcUsvxl~0r*P{v*be4yL0>A=slG%HE7%u_`~{db_CzWwh(Xj1c4`j| zZQ2Mhj>cQ;+eG<-v%^6O?S#*$yw8_A`F_k)` zE>WHedlMbUFxq|;OZZG64w6mlqXX}~aWkoK^ka`9$JW8Vv<@c}X6rhXEnpYyaCG4N z*ajux_6-A)Scu?TiYLM!&F2q~B7lKvAcM|cN}e-aP|XS8af!j%SwSzlH5O*cLA{r{ znJSx=V0izigop9Ft%)la|t~6bcRNpSw&q#d&t`zDpboK?w?5F7W82vt;3=#=2`|>23 z;7jep8K|00ftA)l>V(w>Q9~MNmv77D@v}K_i%Ew7Xf~UceSnyK17#x=(J=TT$dZPU zjDi_V=9Na0&E8GsFjqhtud5WLm|>Y#LZ7x2Wp)k61{}qbLArf$V~2cc?1X|z6+NTm zePK#Ir=MPmx?}*aL6a&5E@E%dun*Jk&LrBiNFdGtas)9iwE&=@GH9?U&~AcI4FMJK z$b&F;vr`+BJ)|l0{4>l>k+Nzd9t+i-hNxCE# zb7dd^yCQdj7#4KHrTO^37=DN?^ER`4My5dX)iN0-tZ_qe2p5BWpFl(aw(`M#2XafL zz*#Rf6@~%SA_=t|o{jP(PbFQ~h@fJJ-78@`!52M=elIN6Q$HugqO~x2W$c7#&X)8! zhUCpt7~L&Zh=6COmih6_-77E^jbzY_hb^E1l`mt_bfo7f@<*wfIL824WJYAVlyJf7MNmG0sBHjyi)?wI=U;p&jyS7 zaY6AmD;Mj>6`3;Oof5s1Et3!_nLIz+k;%AQqB7;d9nfqP#A^rUJCSI&*;A>kacvwU zxxu{ItN=c_VW6H2^?0lFP+zfTTseC^<$T3ZfmPTTF0}22j=<0ZMKYi3?#=iE2uBSd z7#CcI4tg#-E`420NVGxX384S-2>mM8QEQ`io;w8f3elVm01_}`j$;C4g-K&8gm#|U zuxaPB^+L9=7G_JSO58%2%@KM_(_rY(z^Sxgvpw_}PN_B-{x&X#OFZi3&7dtldFUFI2VC|jjxAXQfw+ab@zexS?d~&zk_>oNE$yp;jvaz$;a6jqbum`|)~vBLRJdMP?CT zfqVobTw#>j(_bgSrzC5?1h?DVzeMIdAxKB-@1i60)|t<%_+Kq7LHYQ0x4 z}|#s?TYq`MVcT z1pL)jKKO0luO0VIRd zfezAGfWrk-5z2JL(R*sUs^eA=2F6xK!)$$0d@N_sgA-jx*hfms;RPz0O6~|98EJZ+ zn5zt#@NYrsk)a(+zix9C2!ZTR0*bydzmQqRAET@ZFJQQ4Ck((fa1kctuuzk8r$PLZ(Nz;U&F# zQ~YX>gew@*ZgSTA8rDZaVLYbpPGOOUDvdm%*~ z$?QmJHttxE;)`QaBV!KB3e}?iByP_kySV4+p?RD&{D%o_k8i7R zQ1~v}^B*WGyxHyr46n#95PJfZ$mATTs;qy_ssqlydKy2MRc(c$PE{ln3A-feMl5uh zop2{YqUl5;X4r|a5B!o+%uIJ*(0jmsfn8SA&;WN1d!1yf3-ssFPLwJtLLnj9TLJ#i zY_tXu!6I=Nv_gIg$Cas&$S%TIT+?a$E)DR{y5k|edLu1bA&nKYxCSeAw4X*fy;qgO zonAeN!cQc;y@qQ?WXkxBT;pvrWb%V>0lZvvkXA2~zS_X`ShZU_%LQpYdan8gMylDM_en*2u**c)Hu! zY&W(?XFNNT%?Y#=W)=pTg_-KWdBV&?feVD0(?Znt-VOMyw=QupWvNxlc9A9dQk{7T zwbIxm`u&;8Kd0YUNy#=ok*^s|$+JF%m1vB5zTE5>SG4STVw(y=>WtOxC<^#RX~GGL zD~d$lqQh<>WI0}r5va(K`V zVg5Gn{C*`Wx#Y9G^+sT_@E5f?5fGf;LaPA%P2hJQ)jf8(z_LRs{JHr-*$02^9P1Ve zVN@VsWZdW<+04NCd@-9AIFBh_Vzgk2i=vT8r-A3(u`rZh%&mxu+Nh_scddz6agYGqm2Ms#KuG7&%_XC*FBL94kAQq;zk>R}F z5EP*z@uvc}vujR-DZq&g;gKZlG|jmgg;Lv`cz<_%Y9l7*CP}KIq=Y?U&`~sC?_urO zenRg~By8UlZNpvw0gg1F_qTP}DvdvWE8@84y$c5u1x>t_Sn=I`I>WZ9x%HrL7i2w( z%2AEar1ZsaDu%@Z-sNM%<6U;^Dz-J7q(I(ek88Y!dRVFswO|{~QAG`GnGo+TAp>*F z@%amvaOYW^n;=TT?9G!L_GchiVFC);JV3XHR-64itpG4LnCq4BxJWNYmrltDSDI5? zAP5sM1q%T18Hz>iM57`0m7#c^V`_AN2U#J)zEkPUeoryv_zE(3EcO2O^#1-)U$OB5 zuj0S_x~R*qi*6NAq+(m(#~jXMQiAHEB(e)3+C8%Y+?KZ zK@OY4wWgBE{r_3V8*T{%>li9r;2xS%Met>NxY1Ms1(W-~wZ`w%?Llpk4o~BFG5s{s-JJf08upbHc{X*31efoWeO6uskM(|f3 zQ{ht?U>Z8hw!^GJT{>{NOnL{lLHlSsc3670p|b_WYdK@(0|8N=$IeLqQyWn!{jj7g z+or`n5yT$aX5`W93xRVfW>Zw)Aw2kgMJRXyfZsG~DmQ^)-Yod0QGuZ8UTue=y2(D1 zys?fXgR`)=i=zE(`_azuq#s)>$S9Ld>923<*VbZtHB9J8JkJZ7zG(|r(%b7Z_!~1Q zYu*c7F@J9oTZ7iz!Sv@!5ggWLHN(SuT){)^FZY?R#HC%T=6WSM4R)UBzm zs#0GH;^2hs@TF$h@(hA0&v*ygE4KGhWo9AULeoS6fNU#T_eb`G3ck2bsEmvY=;d1a zolL)T=yyEj?_(d$OyH7b;Vu#tO#5tfR0DBdYtWklZYxz@91WV1Uz zA{-sI_gu7{Dz*Q7Gkevqc0^L07>jCNNe!WqDe5HcV48QvohD#z_fj_VBWZlodS#IC zRIh_*)BHm!F69nneH@e3qzM=vMJGC!ikGxXY-*Yswc~!}Iy^I7r0;e&IqZ?N<|=zL z1f$4o7CVsrj#$^*Gv*8?z#z`Z||ZkmySc-RWuuo1Xc z4-h}x=*>vfo01sXoBh^f;|qa{--3$2 zjiwM0vuXF;p~7CwW(e{-@IaX{FkpR)M;nz zm-OeL^ah5BR{PA&DU*E4WBj+~Rc&4No~m-<-&85I*q5rtcmKAArLq)?u|?OjXEly> zM5O3O3lo^lpF@cDh^F$dn1Dz5p%T0}qw%QH&!7fEOw)_lwcbQtD^+ry57b?As-FM* z%ke_MsL9YUDsx_)%BQEhrBZw~YHrRRnY|IMxI1L5&!0$=zGm?eBN>_S^ik;_a+^op=8}*WJNJN0szjjo=^=v zE;irVlx1t$H&gk_+^wD52C2_q!{M_HWq4g7C4!d=t6lY0P829+5tqJ=TlBy5b7h%lwK= zS~)@MV0U9(_}RymXj?nzWo}}Q>thWV>QtncfJ`wus0v=^c%EL3S&1!5F#((6P~uJA zG1xm8npS#a0rA5djjKk37#uAd`Sm(S&qELg3fM|6H}rt7h>ami_HB>dNsiRsUc#HQ zB9d(=J&;>3#do)m47iZLl@qIumf2F@whXQIQoJt+@`GRmSgT>>ID8ALA{#)oi@(k&kM&UK5PyD3HMCG{V6*h%x0LxIp!#*@s7g z_|?qn;A)UjeKZng-6U|qfWHypi(y4$A9xT1RFI|~(-d1&TPOwbMJ^rnJ5mzKiAwGB zZQL2-*!>*4zpFE1X~xvX!oGzkLI@*$xyBBXa_GwtJM9O+JS_NX3ij~65OATw)tnSk zUH`n20yxnlb-e{~ZPdvJY|FR86!n6cEOdQi2-=_<*i*z4DMzyDDgryP-w%7=61t~t zBZi|VcQMk}(e*=AX%m$IeIhT+sZ>^{)WP(Gyl@vwBBJZ?PeTJ4grHGTJWDxymQ&m# zi~WPDuy>@G8Brk(Ijx0hqMc@aWL|cx3t1(Ayu|X5p#mNy=!TS48hcimny7bR9cc;7 zV(YM5Y!g8cBaU!`79ghYqksU(6JK*Ojd z*-fmE3Mvw1eJO+&%Gn``j!*1ko#1sSpSbPWL&8g$jzNCmiegbgUyIB22J~y2wgzFh zJ+QpI)_Y~1;48e+DT1%sqDq1NM6=skv<9QGIP57->9QOQx9b%x<|wDYMU6L<3jfJH z{6$Lew1s30Rmc<`%Kf}%^@vAw+j$pKYg$9;$#WzJgmq?ZW=%oOPPP_Z8qonD8 z5n<<}2UfV69SeYrA=(WVcLz_{L(RUCBb&s%)EA#& z3lr2VMA(z@vSkVC!z1kJ1YYNHfM*lb#}8oDiInGserM3{a{66GzrWBpDVZ93J&};x zJBg}gb}W%EqT}T{wm6YL3UJuajm`2x9AassUvqmR0RWb*OH@m1vMF97H1=?!O0i+G zL;ef<6IFane4`8|du!x=aqlwVBQUILQ^^mr&jL~<+$-knn1vN z1+AUFMha2mcH}Wg9 zYJdPwDhClsTQCwt-;U7n>TV~~8>=>xJ|`LiqJ5&jZkAe}=Ov>1q3C144ee6YcAOj@ zC@Qp_`%%}6Op58)0~#C9c#1i7mm6%B$sQy~p6d^zlzpM|rFY^P5nF?NmuXu!06^Ln zd(BTdzerOktd_-^C#se;Xf4Tx<)G?tr52|hmQ#!8pa$OnFgn5PQqc+6n8kxOr3{C! zfj=M#zPOB^Nw<&zQ!$MP1c5!NFc^BXV!Cy1Iu#Dvjw5aa8id3nXh%S9e^>l_YP8k!G&;3o+C?(vmbLfXSx6P(eYyv%}IIe8F%2~+j$inIoa(eSE0$~=`mOCzR4WDe_ zx;aOUZ!De+Rm%ZtOO```k5w_pc+2NiUjwXt-W*OIUa@Q|}y+)pp(;ue< z7oICaq{uhM5-COMBMfP>r{x9IwMq36jED{sl*5A<7`%jMWke^z>TKe_=(gP;QfKOV zR17WAnW0mf;RbsXI>?(gdrNv$`4dl37rU*Bo%WEP!@f@RX|e^FGD#`=LhOfTqWpsN zh%(UZL$W1VhOKOe8cZ{bT`G|AP_!QtD+;P%@<=P?1Y^t#ty~+69n&Wm>pL$3j)12 z!_%eeu9oeSK5?HCFWV@6dcHM&^@I$d9LQg<3;J>q@}1 zQH`zbk0mB=oBnr1&ja*4Db|eAV^Inot-FzG_K1LH;D+*5s9r?MU{Q&$do7y0O%8h< zyE{}#87sVM$%BDEvLn$@7>Epg2@d@E^hxlrAA3Zqk*j;#)KHwj=7#8uJuZ3kQ%#Ex zJvtk>XTD@9r|(j)qNC-_dNd-%vD@_~DPM}9HD>iXI$(_r(5vjK9=<%m-X_+z#XxY; zE-2X~#iqslm77`&kGD@}vsFbAFLY+J4}|uQ+h32sfcExiS>4}8&J zDX`cA+Q9Ma@ya-zV}f?`be=hEv44txJpr3+6C+aq5H$B@I8A`I7nk?7*)E zVh4u*yg;-mATvGo_3e78w{@pa*qST47 zLIQv86=|{=hS)V8Nb`98DEkiuzAcOTH23vp`a12Q9`}%kIE6Ztl94xfiT&ApYz)Yv&~lN?(fb^b#+^oG&Wj4isr( z-OV4QuSL+#zo7V7`UWgsrK<+sOJ9Mv`20 z$!goP?mnu$(Z{~s{F2T-#_i=v6b_nf?e6pCdX$V!GaqE#mQG1h-rKgrpXP&z9vk8oT?<82;YK zCwncJr3NU57v0c{^2C_lNz6>4>~|PhgHzn3xYpp-c*3&&@qB1^`8mMY-HNTj-;wx( znblPIel&j$zKBflM7B`GSLGp#T=X|2NTB1bZhW4oa+cJ>KR&#y?rK>1PvLt6&I7Ls4#zwY6Ytt3GrT8q& zw(#y$D%s5iJfqG`_9<8DY&K1Bm6k#cXQEJJUg^F5vL{D3V$d*kKE)2luioH%C31H# ztj**{31cDiMYo#m6?E8)k)S8e<#RLYfC`1=?mq8N(X#T! zY!iU~R5Q@VI9E}dPBfRz;Am)7Pxi+j@McYqvQXc|<*rIEoRo7FVCc%a3=2j4wt&DH zE5qntKpYQ8%GjR)f(e$)D1MW_d+ab8J1C7@1k$K7Q1z$vd}4w<2C6>0ov+R|-F{T{ zR)yeHJv$83Gl16(Z}Bc#Vpj&2YwY33^4!IpTntJw75Z}7Juqc0E2foz?DMZGj`nmj zbDmREmzG&>#EIa3$`S(srBp$p#uJ(eh>9uj|%0$ zhWGW3I!SKv_$AI4VxWfVb{-KJDvng1q(K$dMJ8+nIMA;LtK3&fCJm9uob-gd-bwKE@^fMRj6zXe+TWSQ8Nd)DtK73S*S)3 zxr22L)f9#%DuS07Y=vFy0uQH!qJJ~At8qInUBlm44IjB#G8}=qIf{}qAdv?M`xKbr zlkM0d`idUngUTHnz4VZ{tr5Z4fFZXvqm50?m+NU3?^ogJ4$;jb`W@_Hha+}XBn;e& zhac?PDJF^SHb{hXS|W;7K+b`H5)fzz5#MDWFGOV7#Ff=6WdR3P9{akaog*2PzRVHn z(;>kFZEB&Fy`0ZR4>OHT+r}TsK4qF=MB8LL;KU2u0M%V0zn~ERsS;OJnr>C3FcK-W*h|uANj{gN-~Bv6O(4eBuH= zIro*T06~8}m)B;P6$C&i$I};9X!4u6G(eHDOpFZTJ6il5;k^Uk{GK`++BO@{nb>ol zZ3OyV-yIBV!fOOym+{y6`L6>ig+Af+9=?8ytr7xe@@-NdWX=>Lf*mLs=7C(Z>|c)F zH8Dd3gHP7vKPwSGpLcRaxcMrbQ~aQ=@R<)9{7IPcFqsubYS?xSO{?=+#={82&v)3huR|7$I zOloQwh^Df4&c8jRq}?FwA^F_SZCYku-BK{Yil^Kfyt=UxxXjj}@BE}SXaX%9D#NU$_V1h_3*Av*b z^TtssHJCDevkc%2mG*5YWj}IU9YlChfy?|RZk3p2u}}Rk`~Lh-Iep$OtOzz0k+>5U zWQ5p<{+B+DIwsf_hv;}J3@BzFTosrWibfV&jmj@zm2EbG0;gek=XJLz*Y^JbW?xPs z1R$~wiQ&O~$xhvJAeUYc7ebsn6fs@MWSfmR+Sua1JyX5?{=on7?E|{XrSY;ZW(+^N zmL`%Ck((WSiMCn+-LMuW**CyYSL(FEF-Yy2X3bYrRmL3e9L*xRTP?+tbAg6h=xQlM zDkjg^sowRvy5L>a5yiS90G}RE@s0{iO{fiFg)qg}-_Yap2cW=VsjUG1ExQ;P9c<4U zQzrG=`TT&N7uVl671DSe7_kTyhU0P56!`y5w{D(a#KROGx;&G0xaacPOT9XYV-JILKi z)8h-Hd2lckVcm2b__hZlErb737q@n~TQOUXQ^%GjlD={c=|(q@;q(d8jXpuYkJ0Ze z`u$K>n%5QTm5o%mhF)1j*9UQ+B7HDOJmCr{RM#z6WqlW*6CpMWHCl?F`q!&>7cSWp zYWY*$3sl8c(*6Df1kWJskf-BUk0 zmg$SlzmDWev?~CHqg$C4@X0DgS@0pj zMo3tm4NyvP@M=TAr0Vo-sB_kV?F8^Jpy}fSi5z_el}+}gM++_Xjo|MhTF%$>c>6-N z&%8)=s(nqhk10{~kfB@dEHuJUJ&gpMEV3|IhGtf=&pk?Mu?^Cr{!b#_(uwlqV}L*lKDYSpV4-rg<_V zEfhchb)`RGxXT|ks6!&)FshU%`O#j@p(XvjJG!ebU3M-JCD&k-ouvc90uc2Q6{(2g zF(Ywx5jH7_bP{m2Hc3gBCi^Uj|2#{5u+BfYFOUYglT&PBQC}@eH2d` zP4B1?mvKq|1=*%(<)2O66Kr%1VcG_R|9RBuu&BO3JOe57qVK}e{NUUWiXJ*(vBcYuEP5fXkO&9YMQ}siR5-_V@E@ty5to7 z9-v=3!LhGHC-X+hUK}}ENvlw1Jbf~y@Fgv2+ztE6Q(sfiSoAxuey_K`CjC=wx4(!*JD0q-< zeb9|ogXAv!ESEvib~o(wllIWkJ(RQT+Oay@$F|Y{k5kiVZixIBUMo}Icj)>@_$_EW z{@Z*q6b!Om^v*-N(u{neDQ%9jyul3(a@t{b!pkFLT8DvA{~a}_e&5yktM}re2P%Y6 z{c>}g3ic1~9f!XxQ3At|Jlki0G;8-2V+)WMLYZnv|F-N)x@>+P{tZf8bc!;p0@jYb zA$`rz(~`dic+u)ufi~0aU5#4k&VcatSqoZ1C6RS~I@eluR)B?g3O=aW{!02UqZSicMS9XQc z;Ay8zK=#|+=hPIAkrj-2K+p1k=cuFrF=s2$A^dA{djg4Ej|YqKq6P-)=K@2R*8yok zab)I|vA;;VJY9-6Wx99sHN1-?JjQM|&MSJH zWV^vd;t5eM9(|zF!)fp1(CcMN?RI_`=xLy)-;C_AOqkxU%IzAJ$tN)Cp-fsgjqAlS z@r(YzdVEKU$mtnQU&nF6z$pTXCci?rbU%6&USlNkOqi;u&_3SI$M4{)x6mOhdfw8D zp{wj}AYQ#Q0(fBS`bL#+SBfpe^&_x}2R;yw5MrqaR&H1k9X7|a_})d(xD|hq*!(yD zh%~>W`Ma3C7D^uCS1+c|83x(+%fs}th0?sQadn=Htuk~#P#{9_U_-EnPP_FtY2d~saU z)zuHW9rP7vwbeB>D=^~#3zXQ%DFAMCni?DJP4*UDM5^C%PzfqQZICaJ9MiHaWxQe&?n|P)1RQ~t4?I29`BJa?^jw%FQ+h6BE zMAqN3Gkdb@5nemoP*Ekt_^Msmk(ldtJ=Zn&LR@ON*mR^FXpkp$7 zaRYjWXVo;IdZmzO=IB{yupEuyOS`g<%cR5Qdd!uHhsyQiGGRa61fGXK-8#p;crjvb z#x9CmU?_x@szk6{;)q?D`S@(;<~O2ykr$*0V_T$C&k@qRffP~FWOsT-Sz*(4LKxH` zqRznp-H(cU=A0Gk1k48E-fKhop&TRlc-aG)2h>rJw_zswam~braYZ7#i2VJ>_7Lfn z<3y{;%j45PL z_17fXstvra>qbL+T~Srgk-eZP=aRkN-&eej-_m@y;g82(l`_V0ZUwl(cfgk!L|u1NbRUB$hYE z?8*^U0#slmxGkswSD_tt3bnhhrP+PX?|wtGBNO|KM$Mikt`^<&qH3&D)Ssu-pRY9j z7$QkDAOm)B$PkQ^xP}^dhT2}Q>OH0Yyu+0RlNGU)$CqWXCGrCI?gD#elNhVF2nLKU^0;ocO#XsG!Fl1#R$_D{@oaBh+*_%FA|jyUerD`N z5swFyCzEl@=E)RfDe`6FGZ=Y3{mTZtNm$WSKNFKl)c(>^{I6S?Ei-WDt7Iz8d`H`j z%CzSFL$r1d&&)WvY4aJLpeLC|lK*b^*z#yi^sauQOAxq@)FLBwuSi{1 z%f6B4IZ_8*Orzv>{v)f_&U2`KL~9vkh&9Rc{iYp<&T`Dmy9a)(A>IgG5AJl8*|?6)MRi zbo4k$HnG?qc2q|Tfm016ofAmE@~e`~nwR<+n3~ft*|iZ=v=b#B62Z8L%P>6x#dP8P zVL~6kQllA`ZJHQ-Quo||9X4Ah`zE+r*j#vkoC>f#xM}ou)&|be(lzaB6V|649zw37 z6WWJ${>>&YC%E^@N1Er{1x+dO#e-!-c_geOjnG70KEDyOM$*>78qp4{Rwu&&^0<0;jjLQ^FevZ1zlzx&HoZw9)1YOkoE|Qo zBhSFda~A1KY$3MLMAL2vpu6iilr1ca|v!ZxvV$t)2}PPNw1T}@(~!uoNex< zM}PqC?X4r)dJguP=?;PYm>7}zy8{p87Mi9^I);3=!L44e)H_C{wyqb9#MsbFFBH%6jbiTu!Fs8$ z?*+R%VN)+4%Wb}zf?=XAI!)U@?Y)6;bIB?U!YeasVBm$aL(>{=0F77i*K<_*hGaxK zyFe<!_bUD+CEB1-@8oJ_#N4ZZXlnFt^5#_IDL#Ymo=2A`BzCNhFRZFBY3 zTV>MIy)c4P-dakRVac|0r{Q?o&zr^#Q?{EAcW%^39%8f>V<(9FiYPvZia*s}&l6b% z6r-axhOsi*8+naxt<~7j1?v=wV2P^NDD!ubFV{sGfUjO3s1?S}8Lju|t$B7jT-*O&@e=v?E%PDkAiXu2e{$ z=qeB)o=XJ7l5L&Mw`bTYkP`hI)D#gr;=O4Cs+Gm$-vbr9E1^sdXB}y4{`&Wn#(aOE z?HQJ$Z+=wLSj63gIS|B{A`n&@6fGQ1VlEN4w{$X&Fhz0@$R3)`QfLh#M|s}iSPZ4V zu#0vPp40wMnt#rHT4@s5ek$KhzdNYqaf(8Q?24$*YE~t_N z*fM?UGz$5#ydOYN);F^dkTO5QGhLbSA^d5Q!SA;rm?t1)1F1w_+0Pr}%67yU?z-NU z+0{7FuzH1MG7&?0HOiFb5xtYlnML8&+O9<7W~p!Jq1Tyt@b$1+Q}i6YEpWC*4i`qs z6~GOqAgh=zbLkw$j23nV<}p`qR~<9j*|I%_CovL%9iND!Hd1V(EziuN_tF$lxw6&V zwH#R7*7GsCVobJ~gLyh!qn(Sq{PqlxBd;0~I*~iZ`q+t5OPh(_w3=!Px->j|;itNs2@)E~ym%Q7}fb$vyf`93uH^1E=y3YPvzptf-1r$0CtEAo?C1Se@gD ztO)>O;m9gmYW0hFIM%I#O(84w2&_ikHvV$9i~i+@Wjs)Y-4JoyNEMq;MN7zP9)@_V zd~XH@ELe4Z0nD9hB@8SQd+~z37_4oY=4saCm&#B3jd3 zLS2EVyrj=tIlz<%ieup*Yli6>P4JsN zELYQ={>dghts-M)-OQ85r;y3XkOGlX zWK}>9SaKD#Z%RIK4*w>{D%CmmG)LLz2i^13kpRcg|0@|Tu>LS(_hDEmnDn3fW3O5r z_WG!(q_ZiJ0TMdK*P_XZiPQ-bWr7-XU?oL%xFP z4V8)Ww%{A=`92472bp4c0b)*X<@CfnL&tE8=&`C9iO%mj+%pjvw+8%D%gN8fXaXoX zC7M#Ik28lFhV>`i5H|)z=0+e+Y7rfb88iyUA<}1x(ZS^_#OU4ZfDkZ-eYcQ5Lkk}+ zV9#Eh3tg1DunI>3#do3!D7DRDVknvB-CzP%6$Zb|yx$!5pXU9grW-NcvG~Y_f6B~= zDN-wSE#^1=n0iDJ;V38U)ZDHuxtP3dKgx*?L;oe(^ATfXBajJT9VJi ze3^i!i0BYk@w%?$F{=kA1ESf zuxu-H_jMxHtVJ776kB9W?7)m)=LOREFQ2+#-rR5d0QL>0|92T+#LcwMMvJs%QP{={ z#w^V2Ys!QjuwiCdVsrs%Ml#Tv<7XaEMHmB)L?joGgR;RK*wOz$Pp1e^)cM8in9wnz zBO-q#f<@S$eavslobNHeO`g=g=(#hyP-Zd2l&-;&Bj9U z11o?XmM&_>1r5VUFYb(YwoD>HCmAH1QrYSo#lAh$8|0ka^{}DMO%>gS0`mGCL%Zr< z_r$2H6@}e~0^|1>d_DOW=1t)hd)LXBRnYhZX%=i}Am_nH2 zuOoo}0{gq^BBgw&lq-Ad(GC$y+&0)to)u7PPjPnEh(5^I+MXPey zSeQ;LV5AsnMmk2n<*hOd*@41!ip-!NAtByYm!P+7jH;IfapY+$1}r6z`=X`EAPVz^w3 zoL0QFlF%k3Gh|Ke`zmIHvRh z+U5Eow*#1q2}8sT$78Uq_$xLI*Q?IdN@KxV%GbDW36RL_bl-s0`6~#9@$7UW5)>&x z?+gr3U;NC~OI{aHhpnb$pKRn)c`O!Ijy-qB-FKew?0`B6&q)7>w;mX=Zz?zY0`jJJ zL(wlgMxz};tm@7`q0b&tXgalSU9rRNQWJs4L?hKq;N?$T?u#p2f8lXcm{=A2GdUJ{ z>rn;kK^xY^u+#q9%!uc_fhzS}Q#YRLQzO^o_tWV_d;tifCt2kf$#L{mrbwA-I~Dm- zEc;8}s>m?&MqpziGB9y2Kb=u0jhfkfZC0JxEmRvaMP?;Vl`HjM2Gq4Ot2KGL2yTTHqCWuTR z?I2Xn(7YW=SuE_KZQZbn>!L2drpv4Faz}G%eRJs^;x^ByI3RR{j`8OEdY^|WT>A@D^@4p?A@0&;U+p#7Y--5r$_#V8} zKis$Qt1xoizFS|9eEW&6 zfKkrN^h->3ZIje7>j21h3#xR?grMZi7PuqNFwjTLLoeuF+M)}5E2f(GcU?G5G=iua z&cEqGgD&)V7qH8Z&ce@yekduaGrJwTLw?uOyH6XAmK~)mtb&PFn}CXFHk=xh-3n9l zBfza|+LSjvXof-!lD&qEy;+PQ7#46~LrG{O2MWUi=0~Fv&rYPIqaAWPcXk@2px0u> zy66}IVZ65%k$it|4Ig*uY?sggtB8@o_`zIPF(w!)wiIJNY@xGadk8%LDDrM*h1)T@(6!CJ7(0zsdjXB?^X0@b z2n=n|@LnbA{)@`+fQr`R6nN(!2`E`FCe7tX37)t;A<;ilgDnucfjyMy9istsg*vn8 ziF_))Acho$L{1T#>fhf3_ZdZOqJKXM?o*1`G79dqCQ(H;r8#og3M4%MSRXDzO1@)U z(KXjxef9O-ufP9(kyV7DnYZ}l=urnMtZG@|VvK10{5<|nrh@|T;RJ%*f}!oLNbMu+ z`Ifg!*n8(cU6dxG3lyZYPg0w&pH3A!Zav%$W^fjJDt-;@M2q^Lx2Qk8xjf3|w7fZz z+T!M9%bTAJZTSFod+=t|JMhLkQ4#ge+jVnTUSZU9I>KV&lsys9CavTDx@uuRtm<|I zSP{uZY+)*S9jB@oDw=u+US2+c%#B6iU~y{@;347M64I0X0)K2Rar{!gGIu{FC3<)% z2O=rozP&{@Ipe1#{7mLuUA&!AP1zN##k#o35UbQKu@MP`cAOzPMol5fCz+4EJG>hJ* z_H17r*P@NVstw-UMmZS>2V>pav7dFR=KGUUfYFNwi`!9Wvi%NBiJU*gMi-L>gc|pl zZqx<*_Qm69$mEhuWCt>_<~l~s40bTM$zq03ZIz3IY@^sbF4$;xzQo?^+9y7;y&N0l z(AHb8E(4OQeUFDhQM?qj1Mtdqoo=Rzyr)&b#Gt}+uP&hz+4gcgd?~eGW5-&II!$B^ z20$7C^es{QI`YLr{_)MUU82!a^N5$KtNL(#RHO_B7{n}TW|d8e>)hZKI)gbmTzxoJ zivg0TbZn5V4v3E`(U>9FP-ok=i)K1c2B^0PI)iu*8*O-6fe*L%51&oqXUP3A#A1Z< zSCf@aT@s}wfN?!sMX7amIQlf|?Y`ip2DgBp!gwKUb2r`k8!i`nCQ*D@0+kE)0NtE& z=Yd?2Tq4;&O7)JC10)0O_+SI~si|#uMup?37L?O64Phf`#sh*vbSu4>!a!3H!;Og& zhEh}Ya20X=ILFa?){x*~hL!%sGycVX$&YQod>5C&^kAyJ+cBRGjKk&uowd8zU~HRT zcddWX=wE!C!dKoAC=nNzh(W>9$R$qRm<~h63=w~uz}}>QM=wzPqYAs4y_u}h#)215 zt)t@ufxK_2U4^{ZE>w6)b~>^&v$1n$kzXS2EPpEIRu$V3sK8!IgSoC%E6#Sby!je$ z8oiqnEpMJk7mwe$hwMTu$yee5tH{QLVmcpcaCE4iORDzQy6KH>;qL(y$_qOevR~3P zdQD+jD^K#~dgj$;N4FGK_J%@sHdR-UN>TgqFvvoIU^HqK^+U7Bc#m(zyhN;_rw(v% zB;0~U3V10o4MbsfqX~=rJ6c|#@Yj+&XBdH)YhHr|=oJI&tYg?3kAFdw;GJpLO7SKj zX(=acqa=s)^}~SI-Gf{Z>ilV~+zR$Md0$m0H3y)4mDq=`==y18(~0Tu*ds&`r=@r( zyQXRvkV2qroQ8e1C@v6x3IZzLI-9?jY1iT5O116Aq=p>fBq@MBv`wi4{|8_xkpUFh z!LE&k08<|KC;l3|xU8AFegF z*e52RlzwnKC2~S81d5Ogu|jNpy0-m}m3MgLt=tm7sRVfp=H_ffxAHBkQS!;CGqvq| z%$`!Lew-4YOGz2qTnhvC!XRLiiObLGP@jgrw<=X^70mDn8K5Yy2lI$iK*gtS*cE{*B zJh&^@C(Dd&n*mg>C3E+Trg<{u{o66Unsx5n@xw8mn;w(tKth52PJZ`xz3Bv$bx4Qe zdTA^lpdXJpSVweNrY8?Q*CbPcDCgxhH8Ir8FKLCyCx_<+14RIvU;VXbfyM1ml>*1GN zX47J9S(4n|-&?){(F*fY+SYma8bdNv_tCGmrF;gc%TO`A+(*NRb}`NxY(Z9=Ah-Ap zr8)WR9|14QqmAJbqr}B3uXGa&mLxRyn`Y;;?-RYF+-RD8Q#+IWkl@A1YY_a^wSMWFDJ)Rnx@?z})zrEg1jsKts#atI*Se5`#(xX^ zPXTYAE-o7^24Et!LlJ-_`C3H3Ffo#?4kcZHOH9&d@nEKDiF+rA^ddjE8d|BlKxb`3 z1Mq3C!UiBK9TcOBs>YQyv0u1Y)j*65;L&$`=y`U&F4<(EPu<49+se21+}87FN@bE! zBt}jUnFV4*Fl0*pWPiOQP=yu!b?Y)QtN@S}Zu6g&7lQE%NE%U$2kOcIA)+WH#DY&E zxl~G|FFZ+Vs9a%d{>OL8cvlJ(n=g2G3FlM$sq6%pAq+$L(BET%h$qUE*r09dtb03y zop~Amn148DAZDrlmUWpDpB{B60eGBC}&@VWA1~ zUUESs61iWTVU^}4rB$h}whKejiS$aqdN8jE4LzoEGjdYqOh>!=9d=ZvpB;&T%Cpe4 z_^{|uAU=5j?c|g6bUjPY0sPpp$VkFWz($(Y&k`BsrqK$ve`}BhJWPsN7@?b(k>tu; zqL78Ikt(te!INAgAp*5?F8RHYZe)qH%9T>??X4e?8I4uC+33p5m#XwKJyYCO0#q-< z=515E8xppMcSXrs53&jD+a&o>>G&P|Ec&toy8iE{0D8T%i?Kk9K2G8@Bbb7gtmFJ- z>nO3$7~Ytz62gC$#24IxuV-er@m^(X4W%I7RW&KIurvgK;z3MZz|*L(6X;OrSdJM{ zISDB6a~fMpzse8oExMjTwnQ^jBuru_j$w(L&wix8g(~G1+(!fIuW~!1h?{^4Nwvv- zqBr+aTSpaZLf7j&-~7RMyRJJ#YTw?b*Gchtj{~_KfpaW*EXR`idzcX3I1nKrDIIg-K1P4oG(waVWE`+0H$#m#(K<}^-brgh-(={n20ce# zH9Y$VG)}?g@H9YxuJG&XiSiggFf_7Ro-35nb*yRkwX2{L8&mQqAF53t&UGh8CqJI# zat+VHRjAFmnC->c*A6|k>xhs{);v$EhcwSatqDjAx?!=WHP0jDxb&zPn`n6HPT1lA zKR$)Z=1Kn8GP-(E@B`D7@!J{Qi*9<<_n|zd@u;fSApBU!pK6{$SF%+UR5xUrAvB^^ z&lPA!?U3tsXEoCA`Wt^Z7Mt&V8|9~%OuDS`0J0^elvmA`iLaq(TUA|lxlBS#QD(^m zKow@aNGU%qe$TVg#JX{`=WXDClJfN=*s)310GK4?UtE9h#d?BG*Lnh!Cv@sUH8Cmp z6-I*NbUqv@{rbyrW5^bLW?tCHGru%8xg7_4x8pbrUH9t zegC#Gwm{=QZl%b*h^9orl25p^eWRmSHoVv)*I`IYgO!$x5)eI zhifl{wy%Cw@;=r4oPIy1-$$#RTjj*U?3F88%#Iriu{W-We>U8mxpLBI3;0i8_joxdBH6g$`TTN`HGSGBW|^QWpF5CiKE0cri+hRIoFKz3&aIsBaO}CTFM#HyW4!{ z&M9|Bv-laVl4fz=gOc*-@pU?pg0SgNXqYGO07H|gUP-`j-9euaRP;YjYiOC}SY=*>ecPVSD%qBc_`Km{1k85U!Xy>#Dt&*FcEB!1x&nLhlcw() z@UQ+pgAa17+pBt_WFPlGQn*YrPR9=yPVZJC#ZNcPX>ZyZ|M7-~qSw0dvk=~V_zg@`B$<;LqPc3Q* zf7~klgI3|U3fU83v1$q*hdyZ>_T1UT*7EVgbjt&BwdBS_1&$Q~HfwGtoJhdVT9$R( z@shD>=vqb1NDnb7^?AdO=kdZU)a<1WM$;x@6QlMuy?|WxekIRA^Wf`b+O)WFD^(rG zLE2v}5Y!IFo-2waqOkBAo~sT+Z5jFjY22T#fVyZKSbx(AZLBTVN%pd5*%im3))%pCXL7Ldcn>ezg)xhe)sDV#$rM3YBW~@)Z?cSymp_559^U0BAf`?m6e(TF1TW*tUGRZP?0b{KHtN935N!HQdckK;A_#O6w)t)>E%B@i2mL5sD3dmBHxjn7!We zVClhwjwABR#T}^Cp2dr^#oeXn@GklACx-Jb+3ZyNV8G6))axzDk4@!h@u$v(7Iz@G zFYsI1%NgtrN=SCR_j5(Ob7A5=59B_b)!{+k`Q6yoTn)JM2j(Dy{vdh^2SNHtL z**O=$Z~L4Jk`YlIrr>3i%$|fnQrhf^J;115g+3j`_F>SBB5T+9UXyfjj^wL`9nU*m zUo7RctD?&Rytgy$QmbO9=TPZj$I?%%=N*5UL`Ha0eblr*LQn8R(uLZy~W|8zb) z`5Hp#4%=A}GtuPpNFK+npAT#kMsH2JY<9ERn83gkp7Zt7QHe8+niB^7Ix&DTCa0lLw$Lt7h zJUl*w@5?hyCt}yd9gEGw`lEsRH@PXd-llas{Miw4N0@?aX#t)-tska|M-ayDr*5I_ zrU;vpiQZpe-9MEfzN;dXvk_j@9AsG?*c)jiWZHEg?H2m-=8?=)+TpN#z4pLdzKOVO zSPkC`%X!0t1PfD67O0~=*BoENCKsk6)%J&MdKblzyFJ+yEbz`fY(>f&Y7WsABjRF{|3<-J^A6C&vA=IZ7;{2%>}WRZ(8OLQq0 z!@`peR>OMW*zOg!B}P`>4ma3@vjxbwhd^Y{NnF!gqGYUN0G*UrZ0%(}KQCxKvfLOR z-tN1eEOyA7h*HK_{C~`Mv;*zqcc?`V027?J<>2_ZrxJ$#a;F!Y(7&}i_bL5b+_{hK ze}+5v)BW1Gb6<46zd=5@!j9PpcpSWyeSe;Yf zYqAS++P}h+zw;=10cx-Fyj=FEMyk{%hFB=lFq@=i;%aFXZE2@^_ZMY;$k|ljSSXd83Bz6#wo;sWltlhzbE_**uY#RpaR3)%q zI~M|-7SFMAJzH!W6*jWHjgr4{9RW)=4t=QLR^W=);;8bXlCAHF-bRkYYGFmYpnX>| zAwz0uq+=I9RS%iSdOivHB4qGNmJVWY_yV=V3A`;cv@T>*sGSd85h_NO9Fj!4uqwci zRsu#P`n=S=8u8a#Y}*2c1*C{13JP+d$37~?*6~CQ0o#`SFjOS^?;1{9S4Zep>E6!4&4Xv=-KwJOr!GM<4K16W zm&aCzQZOiNdkep0u^F_eKYJcN5+*xeSPw-(DJ(X;FgIdK0V^XOI(}c3n$ym4SSrPc znOCt#=$w2#9h$A6-vbws7c}++osJ*vLLh#W>#zbrrHXvtk1WN{r$fe7xN|M`1DEqO z&bS170iT+J4p~N6Y|q(rAYVcXxdmkEPAO}02-1`aYRFO}wofOA%_ycthqqdE{OLKP z2X63e@AB^!CGTojlq`p>K95eW&SdKzs$kxEeA_RjKU0$0JNTtypRq-}3THltl_y!^ z@5}hp7-eTXMk^-u=JTaC@h-j1{924Up(%~fVgvp-5kRF9Y7hQXA2h^cZ;v2xENOAPxD^ zL>;p8G4ZETHv2p^)|UF$*9(-YFUVVUjuVSI5%wmn2ia}cg9_GoHfaHGq03;)im>{# zP;;P^R9eEly!!FxASs^O3@S)yHejg7~0p^HW>OY{gJh}!127C z68bSkd|bER`c_l~7&jJg+y>|iMQrxOSw2HjX^Y)ZyQfAG1N=210J42| z>M_ap;l6*O#_i$Q6@xs}d$7We)cE-ND{Lqw;`TKw>=jnR5_jI>+{7L$5Ff@C;Hg1P z341x+=M{brxeJ=l1E^Y{!8zW-IsLIp4Lk{l%y^-0{8<|bKQw|U3H_Hs_jq`JR9hBMF8^>iX z_J$`z&>8hI4LSoPiKZqf6T!&N&TB4~S=2YspXP)T^=r=2vzoDk^K+q(XElkNKR2>g zq4jc>Xg7{v$1?P6J$F!JF|cUOahdb=Hm)@%WZwAgT;pAGW{DA1dXAn~X5?I@=ZJ?# zRk67pi01?@JdFI)r@dilHvz}Prp1jIlAW(e$!mxmAK|d^8NTv8;^RC*E)pdtuFDys zbGI|w9R`Wz#on#cb!tpjDXMap__Psl^jXq;r+F+7f=-|4om0Lt0^u~B}wXd#_v`;18{3c=^^2{xo)s8@|7S3(uTzzDUc2QKbX%S zz}?$di)hc%l|t=K1Tf9GJMmvV5J7k%l4Y+)C-!zW--Z^seabE?i$WJf?5-}G^m9q! zQNMbkuKW+cL~qGTAr*p1SnC`1&=Dg%ha3jbeB>}}r3t1RD8Cs7#@O_BQay|ge387K z+(>Ynr#31R>WKsN5-BDP&@Grpj+rcjKb%lr#jHfaJk+?&j<^wV_bqYr&``EMRg>&G zcE7*!C^pdo_MSb^fz+UG?Tp@@zwSwgd>@DK91`wZ?5RvXyFV^fCVR3Ujuj7&1Wcz( zXNS!U@fFt-RGbC9xU@^k8JP9Ul>7!*um-XE5dWACCLcYUpTI%mRGa9gB13IaJM5tx zzVhZ!x$OXrkD#yhTHH_CJe?bLGVQbLRumvU;h1#g>-2(3F(_OSwPSG*QR|%U@Q^L) z_^+~uJN7__9qUIYaB;RFollxc2Z}Fe`pWTNb>ZKrfXDgIMkn#}5z>JzDP6>!NTXTG} zWV1av5`$|{PhaHL0=L`CEAdKfmh`&@eR|px*ysHSGK_uIk4}ak$|VPY?9Gt)yz(%K z$87I;_8cq%lCO8cybE zN?VuJyop^%sDV;ry9TUY&z~O_DmBGDz-%lnt52B>nl%>s%_Gm5ro|Q!54b|vDMb

    xn#}#9xr^wVp~(zP!*?N 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

    )?I) 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 EAImuiX#fBK literal 0 HcmV?d00001 From ccd1783923a80cf3e4ef138b798b41ad9eaf98d3 Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 10 Apr 2020 05:04:42 +0800 Subject: [PATCH 050/122] see 04/10 log --- .../java/com/blankj/utilcode/pkg/feature/file/FileActivity.kt | 4 ++-- .../src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/file/FileActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/file/FileActivity.kt index 693d1a4ec2..1c1b211fa8 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/file/FileActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/file/FileActivity.kt @@ -42,13 +42,13 @@ class FileActivity : CommonActivity() { CommonItemTitle("isFileExists: " + PathUtils.getExternalAppFilesPath(), "" + FileUtils.isFileExists(PathUtils.getExternalAppFilesPath())), CommonItemTitle("isFileExists: " + PathUtils.getExternalStoragePath(), "" + FileUtils.isFileExists(PathUtils.getExternalStoragePath())), CommonItemTitle("isFileExists: " + PathUtils.getDownloadCachePath(), "" + FileUtils.isFileExists(PathUtils.getDownloadCachePath())), - CommonItemTitle("isFileExists: " + PathUtils.getExternalDownloadsPath(), "" + FileUtils.isFileExists(PathUtils.getExternalDownloadsPath() + "/" + "app-release.apk1")), + CommonItemTitle("isFileExists: " + PathUtils.getExternalDownloadsPath(), "" + FileUtils.isFileExists(PathUtils.getExternalDownloadsPath())), CommonItemTitle("isFileExists: " + PathUtils.getInternalAppFilesPath(), "" + FileUtils.isFileExists(File(PathUtils.getInternalAppFilesPath()))), CommonItemTitle("isFileExists: " + PathUtils.getExternalAppFilesPath(), "" + FileUtils.isFileExists(File(PathUtils.getExternalAppFilesPath()))), CommonItemTitle("isFileExists: " + PathUtils.getExternalStoragePath(), "" + FileUtils.isFileExists(File(PathUtils.getExternalStoragePath()))), CommonItemTitle("isFileExists: " + PathUtils.getDownloadCachePath(), "" + FileUtils.isFileExists(File(PathUtils.getDownloadCachePath()))), - CommonItemTitle("isFileExists: " + PathUtils.getExternalDownloadsPath(), "" + FileUtils.isFileExists(File(PathUtils.getExternalDownloadsPath() + "/" + "app-release.apk1"))) + CommonItemTitle("isFileExists: " + PathUtils.getExternalDownloadsPath(), "" + FileUtils.isFileExists(File(PathUtils.getExternalDownloadsPath()))) ) } diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java index b905785f2a..349eaab933 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/TimeUtilsTest.java @@ -36,7 +36,7 @@ public class TimeUtilsTest extends BaseTest { private final Date tomorrowTimeDate = new Date(tomorrowTimeMillis); private final String tomorrowTimeString = defaultFormat.format(tomorrowTimeDate); private final String tomorrowTimeStringFormat = mFormat.format(tomorrowTimeDate); - private final long delta = 10;// 允许误差 10ms + private final long delta = 20;// 允许误差 10ms @Test public void millis2String() { From deb9f5c9c43031dcad5c01f043b4de046078c6e6 Mon Sep 17 00:00:00 2001 From: Blankj Date: Mon, 13 Apr 2020 03:27:08 +0800 Subject: [PATCH 051/122] see 04/13 log --- CHANGELOG.md | 3 + buildSrc/src/main/groovy/Config.groovy | 2 +- .../pkg/feature/device/DeviceActivity.kt | 2 - .../pkg/feature/sdcard/SDCardActivity.kt | 16 +- lib/utilcode/README-CN.md | 22 +- lib/utilcode/README.md | 22 +- .../blankj/utilcode/util/ConvertUtils.java | 26 ++- .../com/blankj/utilcode/util/FileUtils.java | 56 ++++- .../blankj/utilcode/util/KeyboardUtils.java | 2 +- .../com/blankj/utilcode/util/NumberUtils.java | 198 ++++++++++++++++++ .../com/blankj/utilcode/util/SDCardUtils.java | 73 ++++--- .../com/blankj/utilcode/util/TimeUtils.java | 34 +-- .../com/blankj/utilcode/util/UtilsBridge.java | 12 ++ .../com/blankj/utilcode/util/BaseTest.java | 6 +- .../blankj/utilcode/util/NumberUtilsTest.java | 45 ++++ 15 files changed, 441 insertions(+), 78 deletions(-) create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/NumberUtils.java create mode 100644 lib/utilcode/src/test/java/com/blankj/utilcode/util/NumberUtilsTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b2d1261dc..25524c6004 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +* `20/04/13` [add] NumberUtils. Publish v1.28.0. +* `20/04/12` [opt] TimeUtils#SDF_THREAD_LOCAL. +* `20/04/11` [add] SDCardUtils#getXxTotalSize, SDCardUtils#getXxAvailableSize. FileUtils#getFsTotalSize, FileUtils#getFsAvailableSize. * `20/04/10` [fix] FileUtils#isFileExists; FragmentUtils#getTop bug. Publish v1.27.6. * `20/04/09` [add] UriUtils#res2Uri, UriUtils#uri2File support QQBrowser; ThreadUtils#getMainHandler; PathUtils#getxxPathExternalFirst. * `20/04/08` [fix] ActivityUtils#finish bug. Publish v1.27.5. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 6d63dbc373..fbaeaa926e 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.27.6'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.28.0'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt index ea68079605..1df423ded3 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt @@ -4,8 +4,6 @@ import android.content.Context import android.content.Intent import android.os.Build import com.blankj.common.activity.CommonActivity -import com.blankj.common.activity.CommonActivityItemsView -import com.blankj.common.activity.CommonActivityTitleView import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemTitle import com.blankj.utilcode.pkg.R diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/sdcard/SDCardActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/sdcard/SDCardActivity.kt index ad09fff804..0c51475952 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/sdcard/SDCardActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/sdcard/SDCardActivity.kt @@ -32,19 +32,15 @@ class SDCardActivity : CommonActivity() { } override fun bindItems(): MutableList> { - val mountedSDCardPath = SDCardUtils.getMountedSDCardPath() - val sizeItems = CollectionUtils.collect(mountedSDCardPath) { input -> - val totalInfo = "total: " + ConvertUtils.byte2FitMemorySize(SDCardUtils.getTotalSize(input)) - val availableInfo = "available: " + ConvertUtils.byte2FitMemorySize(SDCardUtils.getAvailableSize(input)) - CommonItemTitle(input, "$totalInfo, $availableInfo") - } - val result: ArrayList> = CollectionUtils.newArrayList( + return CollectionUtils.newArrayList( CommonItemTitle("isSDCardEnableByEnvironment", SDCardUtils.isSDCardEnableByEnvironment().toString()), CommonItemTitle("getSDCardPathByEnvironment", SDCardUtils.getSDCardPathByEnvironment()), CommonItemTitle("getSDCardInfo", SDCardUtils.getSDCardInfo().toString()), - CommonItemTitle("getMountedSDCardPath", mountedSDCardPath.toString()) + CommonItemTitle("getMountedSDCardPath", SDCardUtils.getMountedSDCardPath().toString()), + CommonItemTitle("getExternalTotalSize", ConvertUtils.byte2FitMemorySize(SDCardUtils.getExternalTotalSize(), 2)), + CommonItemTitle("getExternalAvailableSize", ConvertUtils.byte2FitMemorySize(SDCardUtils.getExternalAvailableSize(), 2)), + CommonItemTitle("getInternalTotalSize", ConvertUtils.byte2FitMemorySize(SDCardUtils.getInternalTotalSize(), 2)), + CommonItemTitle("getInternalAvailableSize", ConvertUtils.byte2FitMemorySize(SDCardUtils.getInternalAvailableSize(), 2)) ) - result.addAll(sizeItems) - return result } } diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index aa98d9ac5e..43dad16553 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.6' +implementation 'com.blankj:utilcode:1.28.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.6' +implementation 'com.blankj:utilcodex:1.28.0' ``` @@ -487,6 +487,8 @@ getFileName : 根据全路径获取文件名 getFileNameNoExtension : 根据全路径获取文件名不带拓展名 getFileExtension : 根据全路径获取文件拓展名 notifySystemToScan : 通知系统扫描文件 +getFsTotalSize : 获取文件系统总大小 +getFsAvailableSize : 获取文件系统可用大小 ``` * ### Fragment 相关 -> [FragmentUtils.java][fragment.java] -> [Demo][fragment.demo] @@ -695,6 +697,12 @@ cancelAll : 取消所有通知 setNotificationBarVisibility: 设置通知栏是否可见 ``` +* ### 数字相关 -> [NumberUtils.java][number.java] -> [Test][number.test] +``` +format : 格式化 +float2Double: 浮点转双精度 +``` + * ### 对象相关 -> [ObjectUtils.java][object.java] -> [Test][object.test] ``` isEmpty : 判断对象是否为空 @@ -913,8 +921,10 @@ isSDCardEnableByEnvironment: 根据 Environment 判断 SD 卡是否可用 getSDCardPathByEnvironment : 根据 Environment 获取 SD 卡路径 getSDCardInfo : 获取 SD 卡信息 getMountedSDCardPath : 获取已挂载的 SD 卡路径 -getTotalSize : 获取 SD 卡总大小 -getAvailableSize : 获取 SD 卡可用大小 +getExternalTotalSize : 获取外置 SD 卡总大小 +getExternalAvailableSize : 获取外置 SD 卡可用大小 +getInternalTotalSize : 获取内置 SD 卡总大小 +getInternalAvailableSize : 获取内置 SD 卡可用大小 ``` * ### 服务相关 -> [ServiceUtils.java][service.java] @@ -1086,6 +1096,7 @@ setDeliver : 设置任务结束后交付的线程 * ### 时间相关 -> [TimeUtils.java][time.java] -> [Test][time.test] ``` +getSafeDateFormat : 获取安全的日期格式 millis2String : 将时间戳转为时间字符串 string2Millis : 将时间字符串转为时间戳 string2Date : 将时间字符串转为 Date 类型 @@ -1306,6 +1317,9 @@ getComments : 获取压缩文件中的注释链表 [notification.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/NotificationUtils.java [notification.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/notification/NotificationActivity.kt +[number.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/NumberUtils.java +[number.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/NumberUtilsTest.java + [object.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ObjectUtils.java [object.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index ed5ee22da0..6a3adf119e 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.27.6' +implementation 'com.blankj:utilcode:1.28.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.27.6' +implementation 'com.blankj:utilcodex:1.28.0' ``` @@ -487,6 +487,8 @@ getFileName getFileNameNoExtension getFileExtension notifySystemToScan +getFsTotalSize +getFsAvailableSize ``` * ### About Fragment -> [FragmentUtils.java][fragment.java] -> [Demo][fragment.demo] @@ -695,6 +697,12 @@ cancelAll setNotificationBarVisibility ``` +* ### About Number -> [NumberUtils.java][number.java] -> [Test][number.test] +``` +format +float2Double +``` + * ### About Object -> [ObjectUtils.java][object.java] -> [Test][object.test] ``` isEmpty @@ -913,8 +921,10 @@ isSDCardEnableByEnvironment getSDCardPathByEnvironment getSDCardInfo getMountedSDCardPath -getTotalSize -getAvailableSize +getExternalTotalSize +getExternalAvailableSize +getInternalTotalSize +getInternalAvailableSize ``` * ### About Service -> [ServiceUtils.java][service.java] @@ -1086,6 +1096,7 @@ setDeliver * ### About Time -> [TimeUtils.java][time.java] -> [Test][time.test] ``` +getSafeDateFormat millis2String string2Millis string2Date @@ -1303,6 +1314,9 @@ getComments [notification.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/NotificationUtils.java [notification.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/notification/NotificationActivity.kt +[number.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/NumberUtils.java +[number.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/NumberUtilsTest.java + [object.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ObjectUtils.java [object.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java index 1ff359395c..630321ce69 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java @@ -418,16 +418,32 @@ public static double byte2MemorySize(final long byteSize, */ @SuppressLint("DefaultLocale") public static String byte2FitMemorySize(final long byteSize) { + return byte2FitMemorySize(byteSize, 3); + } + + /** + * Size of byte to fit size of memory. + *

    to three decimal places

    + * + * @param byteSize Size of byte. + * @param precision The precision + * @return fit size of memory + */ + @SuppressLint("DefaultLocale") + public static String byte2FitMemorySize(final long byteSize, int precision) { + if (precision < 0) { + throw new IllegalArgumentException("precision shouldn't be less than zero!"); + } if (byteSize < 0) { - return "shouldn't be less than zero!"; + throw new IllegalArgumentException("byteSize shouldn't be less than zero!"); } else if (byteSize < MemoryConstants.KB) { - return String.format("%.3fB", (double) byteSize); + return String.format("%." + precision + "fB", (double) byteSize); } else if (byteSize < MemoryConstants.MB) { - return String.format("%.3fKB", (double) byteSize / MemoryConstants.KB); + return String.format("%." + precision + "fKB", (double) byteSize / MemoryConstants.KB); } else if (byteSize < MemoryConstants.GB) { - return String.format("%.3fMB", (double) byteSize / MemoryConstants.MB); + return String.format("%." + precision + "fMB", (double) byteSize / MemoryConstants.MB); } else { - return String.format("%.3fGB", (double) byteSize / MemoryConstants.GB); + return String.format("%." + precision + "fGB", (double) byteSize / MemoryConstants.GB); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java index d182f9b9f2..217af05fa8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java @@ -5,6 +5,8 @@ import android.content.res.AssetFileDescriptor; import android.net.Uri; import android.os.Build; +import android.os.StatFs; +import android.text.TextUtils; import java.io.BufferedInputStream; import java.io.File; @@ -76,10 +78,10 @@ public static boolean isFileExists(final String filePath) { if (file.exists()) { return true; } - return isFileExists29(filePath); + return isFileExistsApi29(filePath); } - private static boolean isFileExists29(String filePath) { + private static boolean isFileExistsApi29(String filePath) { if (Build.VERSION.SDK_INT >= 29) { try { Uri uri = Uri.parse(filePath); @@ -1379,6 +1381,15 @@ public static String getFileExtension(final String filePath) { return filePath.substring(lastPoi + 1); } + /** + * Notify system to scan the file. + * + * @param filePath The path of file. + */ + public static void notifySystemToScan(final String filePath) { + notifySystemToScan(getFileByPath(filePath)); + } + /** * Notify system to scan the file. * @@ -1393,12 +1404,45 @@ public static void notifySystemToScan(final File file) { } /** - * Notify system to scan the file. + * Return the total size of file system. * - * @param filePath The path of file. + * @param anyPathInFs Any path in file system. + * @return the total size of file system */ - public static void notifySystemToScan(final String filePath) { - notifySystemToScan(getFileByPath(filePath)); + public static long getFsTotalSize(String anyPathInFs) { + if (TextUtils.isEmpty(anyPathInFs)) return 0; + StatFs statFs = new StatFs(anyPathInFs); + long blockSize; + long totalSize; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { + blockSize = statFs.getBlockSizeLong(); + totalSize = statFs.getBlockCountLong(); + } else { + blockSize = statFs.getBlockSize(); + totalSize = statFs.getBlockCount(); + } + return blockSize * totalSize; + } + + /** + * Return the available size of file system. + * + * @param anyPathInFs Any path in file system. + * @return the available size of file system + */ + public static long getFsAvailableSize(final String anyPathInFs) { + if (TextUtils.isEmpty(anyPathInFs)) return 0; + StatFs statFs = new StatFs(anyPathInFs); + long blockSize; + long availableSize; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { + blockSize = statFs.getBlockSizeLong(); + availableSize = statFs.getAvailableBlocksLong(); + } else { + blockSize = statFs.getBlockSize(); + availableSize = statFs.getAvailableBlocks(); + } + return blockSize * availableSize; } /////////////////////////////////////////////////////////////////////////// diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index 892a428e92..7ab11b7981 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -243,7 +243,7 @@ public static void fixAndroidBug5497(@NonNull final Activity activity) { /** * Fix the bug of 5497 in Android. - *

    Don't set adjustResize

    + *

    It will clean the adjustResize

    * * @param window The window. */ diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NumberUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NumberUtils.java new file mode 100644 index 0000000000..5828927cd2 --- /dev/null +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NumberUtils.java @@ -0,0 +1,198 @@ +package com.blankj.utilcode.util; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; +import java.text.NumberFormat; + +/** + *
    + *     author: blankj
    + *     blog  : http://blankj.com
    + *     time  : 2020/04/12
    + *     desc  : utils about number
    + * 
    + */ +public final class NumberUtils { + + private static final ThreadLocal DF_THREAD_LOCAL = new ThreadLocal() { + @Override + protected DecimalFormat initialValue() { + return (DecimalFormat) NumberFormat.getInstance(); + } + }; + + public static DecimalFormat getSafeDecimalFormat() { + return DF_THREAD_LOCAL.get(); + } + + private NumberUtils() { + throw new UnsupportedOperationException("u can't instantiate me..."); + } + + /** + * Format the value. + * + * @param value The value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @return the format value + */ + public static String format(float value, int fractionDigits) { + return format(value, false, 1, fractionDigits, true); + } + + /** + * Format the value. + * + * @param value The value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(float value, int fractionDigits, boolean isHalfUp) { + return format(value, false, 1, fractionDigits, isHalfUp); + } + + /** + * Format the value. + * + * @param value The value. + * @param minIntegerDigits The minimum number of digits allowed in the integer portion of value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(float value, int minIntegerDigits, int fractionDigits, boolean isHalfUp) { + return format(value, false, minIntegerDigits, fractionDigits, isHalfUp); + } + + /** + * Format the value. + * + * @param value The value. + * @param isGrouping True to set grouping will be used in this format, false otherwise. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @return the format value + */ + public static String format(float value, boolean isGrouping, int fractionDigits) { + return format(value, isGrouping, 1, fractionDigits, true); + } + + /** + * Format the value. + * + * @param value The value. + * @param isGrouping True to set grouping will be used in this format, false otherwise. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(float value, boolean isGrouping, int fractionDigits, boolean isHalfUp) { + return format(value, isGrouping, 1, fractionDigits, isHalfUp); + } + + /** + * Format the value. + * + * @param value The value. + * @param isGrouping True to set grouping will be used in this format, false otherwise. + * @param minIntegerDigits The minimum number of digits allowed in the integer portion of value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(float value, boolean isGrouping, int minIntegerDigits, int fractionDigits, boolean isHalfUp) { + return format(float2Double(value), isGrouping, minIntegerDigits, fractionDigits, isHalfUp); + } + + /** + * Format the value. + * + * @param value The value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @return the format value + */ + public static String format(double value, int fractionDigits) { + return format(value, false, 1, fractionDigits, true); + } + + /** + * Format the value. + * + * @param value The value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(double value, int fractionDigits, boolean isHalfUp) { + return format(value, false, 1, fractionDigits, isHalfUp); + } + + /** + * Format the value. + * + * @param value The value. + * @param minIntegerDigits The minimum number of digits allowed in the integer portion of value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(double value, int minIntegerDigits, int fractionDigits, boolean isHalfUp) { + return format(value, false, minIntegerDigits, fractionDigits, isHalfUp); + } + + /** + * Format the value. + * + * @param value The value. + * @param isGrouping True to set grouping will be used in this format, false otherwise. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @return the format value + */ + public static String format(double value, boolean isGrouping, int fractionDigits) { + return format(value, isGrouping, 1, fractionDigits, true); + } + + /** + * Format the value. + * + * @param value The value. + * @param isGrouping True to set grouping will be used in this format, false otherwise. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(double value, boolean isGrouping, int fractionDigits, boolean isHalfUp) { + return format(value, isGrouping, 1, fractionDigits, isHalfUp); + } + + /** + * Format the value. + * + * @param value The value. + * @param isGrouping True to set grouping will be used in this format, false otherwise. + * @param minIntegerDigits The minimum number of digits allowed in the integer portion of value. + * @param fractionDigits The number of digits allowed in the fraction portion of value. + * @param isHalfUp True to rounded towards the nearest neighbor. + * @return the format value + */ + public static String format(double value, boolean isGrouping, int minIntegerDigits, int fractionDigits, boolean isHalfUp) { + DecimalFormat nf = getSafeDecimalFormat(); + nf.setGroupingUsed(isGrouping); + nf.setRoundingMode(isHalfUp ? RoundingMode.HALF_UP : RoundingMode.DOWN); + nf.setMinimumIntegerDigits(minIntegerDigits); + nf.setMinimumFractionDigits(fractionDigits); + nf.setMaximumFractionDigits(fractionDigits); + return nf.format(value); + } + + /** + * Float to double. + * + * @param value The value. + * @return the number of double + */ + public static double float2Double(float value) { + return new BigDecimal(String.valueOf(value)).doubleValue(); + } +} diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java index 2db6c16ed0..10952e779d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SDCardUtils.java @@ -2,9 +2,9 @@ import android.content.Context; import android.os.Environment; -import android.os.StatFs; import android.os.storage.StorageManager; import android.os.storage.StorageVolume; +import android.text.format.Formatter; import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; @@ -125,44 +125,41 @@ public static List getMountedSDCardPath() { return path; } + /** - * Return the total size of sdcard. + * Return the total size of external storage * - * @param path The path. - * @return the total size of sdcard + * @return the total size of external storage */ - public static long getTotalSize(String path) { - StatFs statFs = new StatFs(path); - long blockSize; - long totalSize; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { - blockSize = statFs.getBlockSizeLong(); - totalSize = statFs.getBlockCountLong(); - } else { - blockSize = statFs.getBlockSize(); - totalSize = statFs.getBlockCount(); - } - return blockSize * totalSize; + public static long getExternalTotalSize() { + return UtilsBridge.getFsTotalSize(getSDCardPathByEnvironment()); } /** - * Return the available size of sdcard. + * Return the available size of external storage. * - * @param path The path. - * @return the available size of sdcard + * @return the available size of external storage */ - public static long getAvailableSize(final String path) { - StatFs statFs = new StatFs(path); - long blockSize; - long availableSize; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { - blockSize = statFs.getBlockSizeLong(); - availableSize = statFs.getAvailableBlocksLong(); - } else { - blockSize = statFs.getBlockSize(); - availableSize = statFs.getAvailableBlocks(); - } - return blockSize * availableSize; + public static long getExternalAvailableSize() { + return UtilsBridge.getFsAvailableSize(getSDCardPathByEnvironment()); + } + + /** + * Return the total size of internal storage + * + * @return the total size of internal storage + */ + public static long getInternalTotalSize() { + return UtilsBridge.getFsTotalSize(Environment.getDataDirectory().getAbsolutePath()); + } + + /** + * Return the available size of internal storage. + * + * @return the available size of internal storage + */ + public static long getInternalAvailableSize() { + return UtilsBridge.getFsAvailableSize(Environment.getDataDirectory().getAbsolutePath()); } public static class SDCardInfo { @@ -170,11 +167,15 @@ public static class SDCardInfo { private String path; private String state; private boolean isRemovable; + private long totalSize; + private long availableSize; SDCardInfo(String path, String state, boolean isRemovable) { this.path = path; this.state = state; this.isRemovable = isRemovable; + this.totalSize = UtilsBridge.getFsTotalSize(path); + this.availableSize = UtilsBridge.getFsAvailableSize(path); } public String getPath() { @@ -189,12 +190,22 @@ public boolean isRemovable() { return isRemovable; } + public long getTotalSize() { + return totalSize; + } + + public long getAvailableSize() { + return availableSize; + } + @Override public String toString() { return "SDCardInfo {" + "path = " + path + ", state = " + state + ", isRemovable = " + isRemovable + + ", totalSize = " + Formatter.formatFileSize(Utils.getApp(), totalSize) + + ", availableSize = " + Formatter.formatFileSize(Utils.getApp(), availableSize) + '}'; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java index dde92562c2..d328524c36 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java @@ -1,5 +1,6 @@ package com.blankj.utilcode.util; +import android.annotation.SuppressLint; import android.support.annotation.NonNull; import com.blankj.utilcode.constant.TimeConstants; @@ -10,7 +11,9 @@ import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; +import java.util.HashMap; import java.util.Locale; +import java.util.Map; /** *
    @@ -22,19 +25,26 @@
      */
     public final class TimeUtils {
     
    -    private static final ThreadLocal SDF_THREAD_LOCAL = new ThreadLocal<>();
    +    private static final ThreadLocal> SDF_THREAD_LOCAL
    +            = new ThreadLocal>() {
    +        @Override
    +        protected Map initialValue() {
    +            return new HashMap<>();
    +        }
    +    };
     
         private static SimpleDateFormat getDefaultFormat() {
    -        return getDateFormat("yyyy-MM-dd HH:mm:ss");
    +        return getSafeDateFormat("yyyy-MM-dd HH:mm:ss");
         }
     
    -    private static SimpleDateFormat getDateFormat(String pattern) {
    -        SimpleDateFormat simpleDateFormat = SDF_THREAD_LOCAL.get();
    +    @SuppressLint("SimpleDateFormat")
    +    public static SimpleDateFormat getSafeDateFormat(String pattern) {
    +        Map sdfMap = SDF_THREAD_LOCAL.get();
    +        //noinspection ConstantConditions
    +        SimpleDateFormat simpleDateFormat = sdfMap.get(pattern);
             if (simpleDateFormat == null) {
    -            simpleDateFormat = new SimpleDateFormat(pattern, Locale.getDefault());
    -            SDF_THREAD_LOCAL.set(simpleDateFormat);
    -        } else {
    -            simpleDateFormat.applyPattern(pattern);
    +            simpleDateFormat = new SimpleDateFormat(pattern);
    +            sdfMap.put(pattern, simpleDateFormat);
             }
             return simpleDateFormat;
         }
    @@ -62,7 +72,7 @@ public static String millis2String(final long millis) {
          * @return the formatted time string
          */
         public static String millis2String(long millis, @NonNull final String pattern) {
    -        return millis2String(millis, getDateFormat(pattern));
    +        return millis2String(millis, getSafeDateFormat(pattern));
         }
     
         /**
    @@ -95,7 +105,7 @@ public static long string2Millis(final String time) {
          * @return the milliseconds
          */
         public static long string2Millis(final String time, @NonNull final String pattern) {
    -        return string2Millis(time, getDateFormat(pattern));
    +        return string2Millis(time, getSafeDateFormat(pattern));
         }
     
         /**
    @@ -133,7 +143,7 @@ public static Date string2Date(final String time) {
          * @return the date
          */
         public static Date string2Date(final String time, @NonNull final String pattern) {
    -        return string2Date(time, getDateFormat(pattern));
    +        return string2Date(time, getSafeDateFormat(pattern));
         }
     
         /**
    @@ -171,7 +181,7 @@ public static String date2String(final Date date) {
          * @return the formatted time string
          */
         public static String date2String(final Date date, @NonNull final String pattern) {
    -        return getDateFormat(pattern).format(date);
    +        return getSafeDateFormat(pattern).format(date);
         }
     
         /**
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
    index 5ce1d4f7b2..41e052a5e9 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
    @@ -276,6 +276,14 @@ static boolean createFileByDeleteOldFile(final File file) {
             return FileUtils.createFileByDeleteOldFile(file);
         }
     
    +    static long getFsTotalSize(String path) {
    +        return FileUtils.getFsTotalSize(path);
    +    }
    +
    +    static long getFsAvailableSize(String path) {
    +        return FileUtils.getFsAvailableSize(path);
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // GsonUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -402,6 +410,10 @@ static String getCurrentProcessName() {
         ///////////////////////////////////////////////////////////////////////////
         // SDCardUtils
         ///////////////////////////////////////////////////////////////////////////
    +    static String getSDCardPathByEnvironment() {
    +        return SDCardUtils.getSDCardPathByEnvironment();
    +    }
    +
         static boolean isSDCardEnableByEnvironment() {
             return SDCardUtils.isSDCardEnableByEnvironment();
         }
    diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java
    index 6e097938bf..36a5fa9f3c 100644
    --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java
    +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java
    @@ -1,7 +1,7 @@
     package com.blankj.utilcode.util;
     
     import android.support.annotation.NonNull;
    -import java.util.concurrent.Executor;
    +
     import org.junit.Test;
     import org.junit.runner.RunWith;
     import org.robolectric.RobolectricTestRunner;
    @@ -9,6 +9,8 @@
     import org.robolectric.annotation.Config;
     import org.robolectric.shadows.ShadowLog;
     
    +import java.util.concurrent.Executor;
    +
     /**
      * 
      *     author: Blankj
    @@ -18,7 +20,7 @@
      * 
    */ @RunWith(RobolectricTestRunner.class) -@Config(manifest = Config.NONE,shadows = { ShadowLog.class }) +@Config(manifest = Config.NONE, shadows = {ShadowLog.class}) public class BaseTest { @BusUtils.Bus(tag = "base") diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/NumberUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/NumberUtilsTest.java new file mode 100644 index 0000000000..a2fa94f0c6 --- /dev/null +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/NumberUtilsTest.java @@ -0,0 +1,45 @@ +package com.blankj.utilcode.util; + +import org.junit.Assert; +import org.junit.Test; + +/** + *
    + *     author: blankj
    + *     blog  : http://blankj.com
    + *     time  : 2020/04/13
    + *     desc  : test NumberUtils
    + * 
    + */ +public class NumberUtilsTest { + + @Test + public void format() { + double val = Math.PI * 100000;// 314159.2653589793 + + Assert.assertEquals("314159.27", NumberUtils.format(val, 2)); + Assert.assertEquals("314159.265", NumberUtils.format(val, 3)); + + Assert.assertEquals("314159.27", NumberUtils.format(val, 2, true)); + Assert.assertEquals("314159.26", NumberUtils.format(val, 2, false)); + + Assert.assertEquals("00314159.27", NumberUtils.format(val, 8, 2, true)); + Assert.assertEquals("0000314159.27", NumberUtils.format(val, 10, 2, true)); + + Assert.assertEquals("314,159.27", NumberUtils.format(val, true, 2)); + Assert.assertEquals("314159.27", NumberUtils.format(val, false, 2)); + + Assert.assertEquals("314159.27", NumberUtils.format(val, false, 2, true)); + Assert.assertEquals("314159.26", NumberUtils.format(val, false, 2, false)); + + Assert.assertEquals("314159.27", NumberUtils.format(val, false, 2, true)); + Assert.assertEquals("314159.265", NumberUtils.format(val, false, 3, false)); + } + + @Test + public void float2Double() { + float val = 3.14f; + System.out.println((double) val); + System.out.println(NumberUtils.float2Double(val)); + } +} \ No newline at end of file From ed567e117cec4c3d5e3e8d4afcb894ad2d73399e Mon Sep 17 00:00:00 2001 From: Blankj Date: Sun, 19 Apr 2020 02:30:39 +0800 Subject: [PATCH 052/122] see 04/19 log --- CHANGELOG.md | 4 + buildSrc/src/main/groovy/Config.groovy | 2 +- .../utilcode/pkg/src/main/AndroidManifest.xml | 4 + .../utilcode/pkg/feature/CoreUtilActivity.kt | 4 + .../pkg/feature/bus/BusCompareActivity.kt | 66 +++++++++------- .../feature/uiMessage/UiMessageActivity.kt | 78 +++++++++++++++++++ .../utilcode/pkg/src/main/res/values/ids.xml | 4 + .../pkg/src/main/res/values/strings.xml | 9 ++- .../common/activity/CommonActivity.java | 2 +- lib/utilcode/README-CN.md | 8 +- lib/utilcode/README.md | 8 +- lib/utilcode/src/main/AndroidManifest.xml | 3 +- .../blankj/utilcode/util/ConvertUtils.java | 39 +++++++++- .../com/blankj/utilcode/util/FileUtils.java | 2 +- .../com/blankj/utilcode/util/ImageUtils.java | 19 ++++- .../blankj/utilcode/util/MessengerUtils.java | 3 +- .../blankj/utilcode/util/PermissionUtils.java | 4 +- .../blankj/utilcode/util/UiMessageUtils.java | 6 +- .../main/res/xml/util_code_provider_paths.xml | 6 +- 19 files changed, 216 insertions(+), 55 deletions(-) create mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/uiMessage/UiMessageActivity.kt create mode 100644 feature/utilcode/pkg/src/main/res/values/ids.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index 25524c6004..c1e9c80d00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +* `20/04/18` [fix] PermissionUtils#callback. Publish v1.28.1. +* `20/04/17` [fix] ImageUtils#view2Bitmap, ImageUtils.getBitmap(InputStream). +* `20/04/16` [add] ConvertUtils#int2HexString, hexString2Int. +* `20/04/15` [add] UiMessageUtils' demo. * `20/04/13` [add] NumberUtils. Publish v1.28.0. * `20/04/12` [opt] TimeUtils#SDF_THREAD_LOCAL. * `20/04/11` [add] SDCardUtils#getXxTotalSize, SDCardUtils#getXxAvailableSize. FileUtils#getFsTotalSize, FileUtils#getFsAvailableSize. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index fbaeaa926e..c9b0873123 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_026_001 - static versionName = '1.28.0'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.28.1'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/AndroidManifest.xml b/feature/utilcode/pkg/src/main/AndroidManifest.xml index e7ce02afb7..3a2c50225e 100644 --- a/feature/utilcode/pkg/src/main/AndroidManifest.xml +++ b/feature/utilcode/pkg/src/main/AndroidManifest.xml @@ -255,6 +255,10 @@ android:name=".feature.toast.ToastActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:launchMode="singleTop" /> + () - for (i in 0..9999) { - val test = BusEvent() - EventBus.getDefault().register(test) - BusUtils.register(test) - tests.add(test) - } - - compareWithEventBus("Unregister 10000 times.", 10, 1, object : CompareCallback { - override fun runEventBus() { - for (test in tests) { - EventBus.getDefault().unregister(test) - } - } - - override fun runBusUtils() { - for (test in tests) { - BusUtils.unregister(test) - } - } - - override fun restState() { - for (test in tests) { + showLoading() + ThreadUtils.executeBySingle(object : ThreadUtils.SimpleTask>() { + override fun doInBackground(): List { + val tests = ArrayList() + for (i in 0..9999) { + val test = BusEvent() EventBus.getDefault().register(test) BusUtils.register(test) + tests.add(test) } + return tests } - }, object : OnFinishCallback { - override fun onFinish() { - for (test in tests) { - EventBus.getDefault().unregister(test) - BusUtils.unregister(test) - } + + override fun onSuccess(tests: List) { + compareWithEventBus("Unregister 10000 times.", 10, 1, object : CompareCallback { + override fun runEventBus() { + for (test in tests) { + EventBus.getDefault().unregister(test) + } + } + + override fun runBusUtils() { + for (test in tests) { + BusUtils.unregister(test) + } + } + + override fun restState() { + for (test in tests) { + EventBus.getDefault().register(test) + BusUtils.register(test) + } + } + }, object : OnFinishCallback { + override fun onFinish() { + for (test in tests) { + EventBus.getDefault().unregister(test) + BusUtils.unregister(test) + } + } + }) } }) } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/uiMessage/UiMessageActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/uiMessage/UiMessageActivity.kt new file mode 100644 index 0000000000..a486645654 --- /dev/null +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/uiMessage/UiMessageActivity.kt @@ -0,0 +1,78 @@ +package com.blankj.utilcode.pkg.feature.uiMessage + +import android.content.Context +import android.content.Intent +import com.blankj.common.activity.CommonActivity +import com.blankj.common.item.CommonItem +import com.blankj.common.item.CommonItemClick +import com.blankj.common.item.CommonItemTitle +import com.blankj.utilcode.pkg.R +import com.blankj.utilcode.util.CollectionUtils +import com.blankj.utilcode.util.UiMessageUtils + + +/** + * ``` + * author: Blankj + * blog : http://blankj.com + * time : 2020/04/14 + * desc : demo about UiMessageUtils + * ``` + */ +class UiMessageActivity : CommonActivity(), UiMessageUtils.UiMessageCallback { + + private val titleItem: CommonItemTitle = CommonItemTitle("", true); + private var sendContent: String = "" + + companion object { + fun start(context: Context) { + val starter = Intent(context, UiMessageActivity::class.java) + context.startActivity(starter) + } + } + + override fun bindTitleRes(): Int { + return R.string.demo_uiMessage + } + + override fun bindItems(): List> { + return CollectionUtils.newArrayList( + titleItem, + CommonItemClick(R.string.uiMessage_add_listener_id) { + UiMessageUtils.getInstance().addListener(R.id.utilCodeUiMessageAddListenerId, this) + }, + CommonItemClick(R.string.uiMessage_remove_all_id) { + UiMessageUtils.getInstance().removeListeners(R.id.utilCodeUiMessageAddListenerId) + }, + CommonItemClick(R.string.uiMessage_add_listener) { + UiMessageUtils.getInstance().addListener(this) + }, + CommonItemClick(R.string.uiMessage_remove_listener) { + UiMessageUtils.getInstance().removeListener(this) + }, + CommonItemClick(R.string.uiMessage_send) { + sendContent = "send: UiMessageActivity#${UiMessageActivity.hashCode()}" + titleItem.title = "" + UiMessageUtils.getInstance().send(R.id.utilCodeUiMessageAddListenerId, UiMessageActivity) + } + ) + } + + override fun handleMessage(localMessage: UiMessageUtils.UiMessage) { + if (localMessage.id == R.id.utilCodeUiMessageAddListenerId) { + var content: String = sendContent + content += "\nreceive: UiMessageActivity#${localMessage.getObject().hashCode()}" + titleItem.title = if (titleItem.title.toString().isEmpty()) { + content + } else { + titleItem.title.toString() + "\n" + content + } + } + } + + override fun onDestroy() { + super.onDestroy() + UiMessageUtils.getInstance().removeListeners(R.id.utilCodeUiMessageAddListenerId) + UiMessageUtils.getInstance().removeListener(this) + } +} \ No newline at end of file diff --git a/feature/utilcode/pkg/src/main/res/values/ids.xml b/feature/utilcode/pkg/src/main/res/values/ids.xml new file mode 100644 index 0000000000..00728ce459 --- /dev/null +++ b/feature/utilcode/pkg/src/main/res/values/ids.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml index 57ece0868a..9eb712d8f3 100644 --- a/feature/utilcode/pkg/src/main/res/values/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml @@ -37,6 +37,7 @@ SPStaticUtils Demo SpanUtils Demo ToastUtils Demo + UiMessage Demo TransActivity Demo VibrateUtils Demo @@ -337,7 +338,6 @@ Show Middle Cancel Show Toast Dialog - Short Long Green Font @@ -346,6 +346,13 @@ Spannable String Middle + + Add Listener Id + Remove All Id + Add Listener + Remove Listener + Send + Vibrate 1000ms Vibrate Custom diff --git a/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java b/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java index 85ea261138..e7e4c0475d 100644 --- a/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java +++ b/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java @@ -209,7 +209,7 @@ public void showLoading() { public void showLoading(Runnable listener) { if (mDialogLoading != null) { - dismissLoading(); + return; } mDialogLoading = new CommonDialogLoading().init(this, listener); mDialogLoading.show(); diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 43dad16553..95b518f120 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.0' +implementation 'com.blankj:utilcode:1.28.1' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.0' +implementation 'com.blankj:utilcodex:1.28.1' ``` @@ -346,6 +346,7 @@ getRandomColor : 获取随机色 * ### 转换相关 -> [ConvertUtils.java][convert.java] -> [Test][convert.test] ``` +int2HexString, hexString2Int : int 与 hexString 互转 bytes2Bits, bits2Bytes : bytes 与 bits 互转 bytes2Chars, chars2Bytes : bytes 与 chars 互转 bytes2HexString, hexString2Bytes : bytes 与 hexString 互转 @@ -1147,7 +1148,7 @@ cancel : 取消吐司显示 setOnTouchListener: 设置触摸事件 ``` -* ### UI 消息相关 -> [UiMessageUtils.java][uiMessage.java] +* ### UI 消息相关 -> [UiMessageUtils.java][uiMessage.java] -> [Demo][uiMessage.demo] ``` send : 发送消息 addListener : 新增消息监听器 @@ -1388,6 +1389,7 @@ getComments : 获取压缩文件中的注释链表 [touch.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/TouchUtils.java [uiMessage.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java +[uiMessage.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/uiMessage/UiMessageActivity.kt [uri.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 6a3adf119e..7bd01fb7d9 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.0' +implementation 'com.blankj:utilcode:1.28.1' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.0' +implementation 'com.blankj:utilcodex:1.28.1' ``` @@ -346,6 +346,7 @@ getRandomColor * ### About Convert -> [ConvertUtils.java][convert.java] -> [Test][convert.test] ``` +int2HexString, hexString2Int bytes2Bits, bits2Bytes bytes2Chars, chars2Bytes bytes2HexString, hexString2Bytes @@ -1147,7 +1148,7 @@ cancel setOnTouchListener ``` -* ### About UiMessage -> [UiMessageUtils.java][uiMessage.java] +* ### About UiMessage -> [UiMessageUtils.java][uiMessage.java] -> [Demo][uiMessage.demo] ``` send addListener @@ -1385,6 +1386,7 @@ getComments [touch.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/TouchUtils.java [uiMessage.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java +[uiMessage.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/uiMessage/UiMessageActivity.kt [uri.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml index 47b2c9a887..07e9b61c0d 100644 --- a/lib/utilcode/src/main/AndroidManifest.xml +++ b/lib/utilcode/src/main/AndroidManifest.xml @@ -14,8 +14,7 @@ android:name="com.blankj.utilcode.util.UtilsFileProvider" android:authorities="${applicationId}.utilcode.provider" android:exported="false" - android:grantUriPermissions="true" - android:multiprocess="true"> + android:grantUriPermissions="true"> diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java index 630321ce69..26e59fd330 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java @@ -38,14 +38,36 @@ */ public final class ConvertUtils { - private static final int BUFFER_SIZE = 8192; - private static final char[] hexDigits = + private static final int BUFFER_SIZE = 8192; + private static final char[] HEX_DIGITS_UPPER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + private static final char[] HEX_DIGITS_LOWER = + {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; private ConvertUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } + /** + * Int to hex string. + * + * @param num The int number. + * @return the hex string + */ + public static String int2HexString(int num) { + return Integer.toHexString(num); + } + + /** + * Hex string to int. + * + * @param hexString The hex string. + * @return the int + */ + public static int hexString2Int(String hexString) { + return Integer.parseInt(hexString, 16); + } + /** * Bytes to bits. * @@ -130,7 +152,20 @@ public static byte[] chars2Bytes(final char[] chars) { * @return hex string */ public static String bytes2HexString(final byte[] bytes) { + return bytes2HexString(bytes, true); + } + + /** + * Bytes to hex string. + *

    e.g. bytes2HexString(new byte[] { 0, (byte) 0xa8 }, true) returns "00A8"

    + * + * @param bytes The bytes. + * @param isUpperCase True to use upper case, false otherwise. + * @return hex string + */ + public static String bytes2HexString(final byte[] bytes, boolean isUpperCase) { if (bytes == null) return ""; + char[] hexDigits = isUpperCase ? HEX_DIGITS_UPPER : HEX_DIGITS_LOWER; int len = bytes.length; if (len <= 0) return ""; char[] ret = new char[len << 1]; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java index 217af05fa8..f329e36b13 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java @@ -649,7 +649,7 @@ public static List listFilesInDir(final File dir) { * @return the files in directory */ public static List listFilesInDir(final String dirPath, Comparator comparator) { - return listFilesInDir(getFileByPath(dirPath), false); + return listFilesInDir(getFileByPath(dirPath), false, comparator); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index 7a10fb532e..a57c4e410a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -183,14 +183,21 @@ public static Bitmap view2Bitmap(final View view) { boolean willNotCacheDrawing = view.willNotCacheDrawing(); view.setDrawingCacheEnabled(true); view.setWillNotCacheDrawing(false); - final Bitmap drawingCache = view.getDrawingCache(); + Bitmap drawingCache = view.getDrawingCache(); Bitmap bitmap; if (null == drawingCache) { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); - bitmap = Bitmap.createBitmap(view.getDrawingCache()); + drawingCache = view.getDrawingCache(); + if (drawingCache != null) { + bitmap = Bitmap.createBitmap(drawingCache); + } else { + bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + } } else { bitmap = Bitmap.createBitmap(drawingCache); } @@ -279,8 +286,12 @@ public static Bitmap getBitmap(final InputStream is) { */ public static Bitmap getBitmap(final InputStream is, final int maxWidth, final int maxHeight) { if (is == null) return null; - byte[] bytes = UtilsBridge.inputStream2Bytes(is); - return getBitmap(bytes, 0, maxWidth, maxHeight); + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeStream(is, null, options); + options.inSampleSize = calculateInSampleSize(options, maxWidth, maxHeight); + options.inJustDecodeBounds = false; + return BitmapFactory.decodeStream(is, null, options); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java index 9f16830ecc..d172079785 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java @@ -197,7 +197,8 @@ boolean bind() { } void unbind() { - Message msg = Message.obtain(mReceiveServeMsgHandler, WHAT_UNSUBSCRIBE); + int key = UtilsBridge.getCurrentProcessName().hashCode(); + Message msg = Message.obtain(mReceiveServeMsgHandler, WHAT_UNSUBSCRIBE, key, 0); msg.replyTo = mClient; try { mServer.send(msg); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index e76a8bcd5e..0d8254ad8a 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -428,10 +428,10 @@ public void onRequestPermissionsResult(UtilsTransActivity activity, int requestCode, String[] permissions, int[] grantResults) { + activity.finish(); if (sInstance != null && sInstance.mPermissionsRequest != null) { sInstance.onRequestPermissionsResult(activity); } - activity.finish(); } @@ -443,6 +443,7 @@ public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) { @Override public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) { + activity.finish(); if (requestCode == TYPE_WRITE_SETTINGS) { if (sSimpleCallback4WriteSettings == null) return; if (isGrantedWriteSettings()) { @@ -465,7 +466,6 @@ public void run() { } }, 100); } - activity.finish(); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java index 7717b44dae..c69240a963 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java @@ -271,10 +271,8 @@ public String toString() { b.append("{ id="); b.append(getId()); - if (getObject() != null) { - b.append(" obj="); - b.append(getObject()); - } + b.append(", obj="); + b.append(getObject()); b.append(" }"); return b.toString(); diff --git a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml index 0c40bb34af..ce405066c0 100644 --- a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml +++ b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml @@ -1,7 +1,7 @@ + + \ No newline at end of file From 337662632e482292f0a50c7f2ce9f9ec4c86dad3 Mon Sep 17 00:00:00 2001 From: Blankj Date: Sat, 25 Apr 2020 15:01:51 +0800 Subject: [PATCH 053/122] see 04/25 log --- CHANGELOG.md | 5 + buildSrc/src/main/groovy/Config.groovy | 4 +- .../utilcode/pkg/feature/bus/BusActivity.kt | 1 + .../pkg/feature/image/ImageActivity.kt | 16 ++- .../pkg/feature/snackbar/SnackbarActivity.kt | 39 +++++--- .../pkg/src/main/res/values/strings.xml | 25 ++--- .../blankj/common/item/CommonItemTitle.java | 19 +++- lib/utilcode/README-CN.md | 11 ++- lib/utilcode/README.md | 5 +- .../com/blankj/utilcode/util/BusUtils.java | 4 +- .../com/blankj/utilcode/util/GsonUtils.java | 23 ++--- .../com/blankj/utilcode/util/ImageUtils.java | 8 +- .../blankj/utilcode/util/KeyboardUtils.java | 2 +- .../com/blankj/utilcode/util/PhoneUtils.java | 20 +++- .../blankj/utilcode/util/SnackbarUtils.java | 97 ++++++++++++++++++- .../blankj/utilcode/util/UiMessageUtils.java | 23 +---- .../com/blankj/utilcode/util/UriUtils.java | 71 +++++++++++--- lib/utilcode/src/main/res/values/styles.xml | 17 ++++ plugin/api-gradle-plugin/README.md | 15 ++- plugin/bus-gradle-plugin/README.md | 15 ++- 20 files changed, 322 insertions(+), 98 deletions(-) create mode 100644 lib/utilcode/src/main/res/values/styles.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e9c80d00..aa379c40f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +* `20/04/25` [fix] UriUtils#uri2File Unknown URI. Publish 1.28.2. +* `20/04/24` [add] SnackbarUtils support show on the top; UriUtils#uri2InputStream. +* `20/04/23` [fix] UriUtils#uri2File not support HW; TransActivity crash below 21. +* `20/04/23` [fix] PhoneUtils#getSerial, PhoneUtils#getSerial crash on Android 10. +* `20/04/20` [fix] ImageUtils#isImage. * `20/04/18` [fix] PermissionUtils#callback. Publish v1.28.1. * `20/04/17` [fix] ImageUtils#view2Bitmap, ImageUtils.getBitmap(InputStream). * `20/04/16` [add] ConvertUtils#int2HexString, hexString2Int. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index c9b0873123..4d2aee3aad 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_026_001 - static versionName = '1.28.1'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_028_002 + static versionName = '1.28.2'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt index 4343463169..e11a5081f7 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt @@ -2,6 +2,7 @@ package com.blankj.utilcode.pkg.feature.bus import android.content.Context import android.content.Intent +import android.os.Bundle import android.support.annotation.Keep import com.blankj.common.activity.CommonActivity import com.blankj.common.item.CommonItem diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt index 19e76f398f..40fc81016b 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt @@ -11,6 +11,7 @@ import com.blankj.common.activity.CommonActivity import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemImage +import com.blankj.common.item.CommonItemTitle import com.blankj.utilcode.pkg.Config import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.* @@ -26,6 +27,9 @@ import java.util.* */ class ImageActivity : CommonActivity() { + private val savePath = Config.CACHE_PATH + "lena.jpg" + private val titleItem: CommonItemTitle = CommonItemTitle("isImage: $savePath", ""); + companion object { fun start(context: Context) { val starter = Intent(context, ImageActivity::class.java) @@ -57,23 +61,27 @@ class ImageActivity : CommonActivity() { val width = src.width val height = src.height + titleItem.setContent(ImageUtils.isImage(savePath).toString()) + return CollectionUtils.newArrayList>().apply { - add(CommonItemClick(R.string.image_save) { - val savePath = Config.CACHE_PATH + "lena.jpg" + add(titleItem) + add(CommonItemClick("Save to $savePath") { ThreadUtils.executeBySingle(object : ThreadUtils.SimpleTask() { override fun doInBackground(): Boolean { return ImageUtils.save(src, savePath, Bitmap.CompressFormat.JPEG) } override fun onSuccess(result: Boolean) { + titleItem.setContent(ImageUtils.isImage(savePath).toString()) + titleItem.update() SnackbarUtils.with(mContentView) .setDuration(SnackbarUtils.LENGTH_LONG) .apply { if (result) { - setMessage("save to \"$savePath\" successful.") + setMessage("save successful.") .showSuccess() } else { - setMessage("save to \"$savePath\" failed.") + setMessage("save failed.") .showError() } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt index bf50677739..568caecff2 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/snackbar/SnackbarActivity.kt @@ -39,22 +39,37 @@ class SnackbarActivity : CommonActivity() { override fun bindItems(): MutableList> { return CollectionUtils.newArrayList( - CommonItemClick(R.string.snackbar_show_short) { + CommonItemClick(R.string.snackbar_short) { SnackbarUtils.with(mContentView) .setMessage(getMsg(R.string.snackbar_short)) .setMessageColor(Color.WHITE) .setBgResource(R.drawable.snackbar_custom_bg) .show() }, - CommonItemClick(R.string.snackbar_show_short_with_action) { + CommonItemClick(R.string.snackbar_short_top) { SnackbarUtils.with(mContentView) - .setMessage(getMsg(R.string.snackbar_short)) + .setMessage(getMsg(R.string.snackbar_short_top)) + .setMessageColor(Color.WHITE) + .setBgResource(R.drawable.snackbar_custom_bg) + .show(true) + }, + CommonItemClick(R.string.snackbar_short_with_action) { + SnackbarUtils.with(mContentView) + .setMessage(getMsg(R.string.snackbar_short_with_action)) .setMessageColor(Color.WHITE) .setBgResource(R.drawable.snackbar_custom_bg) .setAction(getString(R.string.snackbar_click), Color.YELLOW) { ToastUtils.showShort(getString(R.string.snackbar_click)) } .show() }, - CommonItemClick(R.string.snackbar_show_long) { + CommonItemClick(R.string.snackbar_short_with_action_top) { + SnackbarUtils.with(mContentView) + .setMessage(getMsg(R.string.snackbar_short_with_action_top)) + .setMessageColor(Color.WHITE) + .setBgResource(R.drawable.snackbar_custom_bg) + .setAction(getString(R.string.snackbar_click), Color.YELLOW) { ToastUtils.showShort(getString(R.string.snackbar_click)) } + .show(true) + }, + CommonItemClick(R.string.snackbar_long) { SnackbarUtils.with(mContentView) .setMessage(getMsg(R.string.snackbar_long)) .setMessageColor(Color.WHITE) @@ -62,16 +77,16 @@ class SnackbarActivity : CommonActivity() { .setBgResource(R.drawable.snackbar_custom_bg) .show() }, - CommonItemClick(R.string.snackbar_show_long_with_action) { + CommonItemClick(R.string.snackbar_long_with_action) { SnackbarUtils.with(mContentView) - .setMessage(getMsg(R.string.snackbar_long)) + .setMessage(getMsg(R.string.snackbar_long_with_action)) .setMessageColor(Color.WHITE) .setBgResource(R.drawable.snackbar_custom_bg) .setDuration(SnackbarUtils.LENGTH_LONG) .setAction(getString(R.string.snackbar_click), Color.YELLOW) { ToastUtils.showShort(getString(R.string.snackbar_click)) } .show() }, - CommonItemClick(R.string.snackbar_show_indefinite) { + CommonItemClick(R.string.snackbar_indefinite) { SnackbarUtils.with(mContentView) .setMessage(getMsg(R.string.snackbar_indefinite)) .setMessageColor(Color.WHITE) @@ -79,9 +94,9 @@ class SnackbarActivity : CommonActivity() { .setBgResource(R.drawable.snackbar_custom_bg) .show() }, - CommonItemClick(R.string.snackbar_show_indefinite_with_action) { + CommonItemClick(R.string.snackbar_indefinite_with_action) { SnackbarUtils.with(mContentView) - .setMessage(getMsg(R.string.snackbar_indefinite)) + .setMessage(getMsg(R.string.snackbar_indefinite_with_action)) .setMessageColor(Color.WHITE) .setDuration(SnackbarUtils.LENGTH_INDEFINITE) .setBgResource(R.drawable.snackbar_custom_bg) @@ -113,17 +128,17 @@ class SnackbarActivity : CommonActivity() { snackbarView.setOnClickListener { SnackbarUtils.dismiss() } } }, - CommonItemClick(R.string.snackbar_show_success) { + CommonItemClick(R.string.snackbar_success) { SnackbarUtils.with(mContentView) .setMessage(getMsg(R.string.snackbar_success)) .showSuccess() }, - CommonItemClick(R.string.snackbar_show_warning) { + CommonItemClick(R.string.snackbar_warning) { SnackbarUtils.with(mContentView) .setMessage(getMsg(R.string.snackbar_warning)) .showWarning() }, - CommonItemClick(R.string.snackbar_show_error) { + CommonItemClick(R.string.snackbar_error) { SnackbarUtils.with(mContentView) .setMessage(getMsg(R.string.snackbar_error)) .showError() diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml index 9eb712d8f3..02f2622ab2 100644 --- a/feature/utilcode/pkg/src/main/res/values/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml @@ -207,7 +207,6 @@ Fast Blur Render Script Blur Stack Blur - Save Compress By Scale Compress By Quality Half Compress By Quality Max Size @@ -295,26 +294,22 @@ Screenshot - Show Short Snackbar - Show Short Snackbar With Action - Show Long Snackbar - Show Long Snackbar With Action - Show Indefinite Snackbar - Show Indefinite Snackbar With Action - Add View - Add View With Action - Show Success - Show Warning - Show Error - Dismiss Snackbar Short Snackbar + Short Snackbar Top + Short Snackbar With Action + Short Snackbar With Action Top Long Snackbar + Long Snackbar With Action Indefinite Snackbar - Click - Custom View + Indefinite Snackbar With Action + Add View + Add View With Action Success Warning Error + Dismiss Snackbar + Click + Custom View Click To Dismiss diff --git a/lib/common/src/main/java/com/blankj/common/item/CommonItemTitle.java b/lib/common/src/main/java/com/blankj/common/item/CommonItemTitle.java index 53f87b090a..a8f1a060cb 100644 --- a/lib/common/src/main/java/com/blankj/common/item/CommonItemTitle.java +++ b/lib/common/src/main/java/com/blankj/common/item/CommonItemTitle.java @@ -74,8 +74,25 @@ public void bind(@NonNull ItemViewHolder holder, int position) { } public void setTitle(CharSequence title) { + setTitle(title, true); + } + + public void setContent(CharSequence content) { + setContent(content, true); + } + + public void setTitle(CharSequence title, boolean isUpdate) { mTitle = title; - update(); + if (isUpdate) { + update(); + } + } + + public void setContent(CharSequence content, boolean isUpdate) { + mContent = content; + if (isUpdate) { + update(); + } } public CharSequence getTitle() { diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 95b518f120..51853dceeb 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.1' +implementation 'com.blankj:utilcode:1.28.2' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.1' +implementation 'com.blankj:utilcodex:1.28.2' ``` @@ -1157,9 +1157,10 @@ removeListener: 移除消息监听器 * ### URI 相关 -> [UriUtils.java][uri.java] ``` -res2Uri : res 转 uri -file2Uri: file 转 uri -uri2File: uri 转 file +res2Uri : res 转 uri +file2Uri : file 转 uri +uri2File : uri 转 file +uri2InputStream: uri 转 InputStream ``` * ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java] diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 7bd01fb7d9..8c47c39797 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.1' +implementation 'com.blankj:utilcode:1.28.2' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.1' +implementation 'com.blankj:utilcodex:1.28.2' ``` @@ -1160,6 +1160,7 @@ removeListener res2Uri file2Uri uri2File +uri2InputStream ``` * ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java] diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java index 28da63090b..811470c648 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java @@ -34,7 +34,7 @@ public final class BusUtils { private final Map> mTag_BusInfoListMap = new HashMap<>(); private final Map> mClassName_BusesMap = new ConcurrentHashMap<>(); - private final Map> mClassName_TagsMap = new HashMap<>(); + private final Map> mClassName_TagsMap = new ConcurrentHashMap<>(); private final Map> mClassName_Tag_Arg4StickyMap = new ConcurrentHashMap<>(); private BusUtils() { @@ -122,7 +122,7 @@ private void registerInner(final Object bus) { synchronized (mClassName_TagsMap) { tags = mClassName_TagsMap.get(className); if (tags == null) { - tags = new ArrayList<>(); + tags = new CopyOnWriteArrayList<>(); for (Map.Entry> entry : mTag_BusInfoListMap.entrySet()) { for (BusInfo busInfo : entry.getValue()) { try { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java index 53ba83a6ee..ecaef68676 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; /** @@ -29,7 +30,7 @@ public final class GsonUtils { private static final String KEY_DELEGATE = "delegateGson"; private static final String KEY_LOG_UTILS = "logUtilsGson"; - private static final Map GSONS = new HashMap<>(); + private static final Map GSONS = new ConcurrentHashMap<>(); private GsonUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); @@ -85,7 +86,7 @@ public static Gson getGson() { * @param object The object to serialize. * @return object serialized into json. */ - public static String toJson(@NonNull final Object object) { + public static String toJson(final Object object) { return toJson(getGson(), object); } @@ -96,7 +97,7 @@ public static String toJson(@NonNull final Object object) { * @param typeOfSrc The specific genericized type of src. * @return object serialized into json. */ - public static String toJson(@NonNull final Object src, @NonNull final Type typeOfSrc) { + public static String toJson(final Object src, @NonNull final Type typeOfSrc) { return toJson(getGson(), src, typeOfSrc); } @@ -107,7 +108,7 @@ public static String toJson(@NonNull final Object src, @NonNull final Type typeO * @param object The object to serialize. * @return object serialized into json. */ - public static String toJson(@NonNull final Gson gson, @NonNull final Object object) { + public static String toJson(@NonNull final Gson gson, final Object object) { return gson.toJson(object); } @@ -119,7 +120,7 @@ public static String toJson(@NonNull final Gson gson, @NonNull final Object obje * @param typeOfSrc The specific genericized type of src. * @return object serialized into json. */ - public static String toJson(@NonNull final Gson gson, @NonNull final Object src, @NonNull final Type typeOfSrc) { + public static String toJson(@NonNull final Gson gson, final Object src, @NonNull final Type typeOfSrc) { return gson.toJson(src, typeOfSrc); } @@ -130,7 +131,7 @@ public static String toJson(@NonNull final Gson gson, @NonNull final Object src, * @param type Type json will be converted to. * @return instance of type */ - public static T fromJson(@NonNull final String json, @NonNull final Class type) { + public static T fromJson(final String json, @NonNull final Class type) { return fromJson(getGson(), json, type); } @@ -141,7 +142,7 @@ public static T fromJson(@NonNull final String json, @NonNull final Class * @param type type type json will be converted to. * @return instance of type */ - public static T fromJson(@NonNull final String json, @NonNull final Type type) { + public static T fromJson(final String json, @NonNull final Type type) { return fromJson(getGson(), json, type); } @@ -175,7 +176,7 @@ public static T fromJson(@NonNull final Reader reader, @NonNull final Type t * @param type Type json will be converted to. * @return instance of type */ - public static T fromJson(@NonNull final Gson gson, @NonNull final String json, @NonNull final Class type) { + public static T fromJson(@NonNull final Gson gson, final String json, @NonNull final Class type) { return gson.fromJson(json, type); } @@ -187,7 +188,7 @@ public static T fromJson(@NonNull final Gson gson, @NonNull final String jso * @param type type type json will be converted to. * @return instance of type */ - public static T fromJson(@NonNull final Gson gson, @NonNull final String json, @NonNull final Type type) { + public static T fromJson(@NonNull final Gson gson, final String json, @NonNull final Type type) { return gson.fromJson(json, type); } @@ -199,7 +200,7 @@ public static T fromJson(@NonNull final Gson gson, @NonNull final String jso * @param type type type json will be converted to. * @return instance of type */ - public static T fromJson(@NonNull final Gson gson, @NonNull final Reader reader, @NonNull final Class type) { + public static T fromJson(@NonNull final Gson gson, final Reader reader, @NonNull final Class type) { return gson.fromJson(reader, type); } @@ -211,7 +212,7 @@ public static T fromJson(@NonNull final Gson gson, @NonNull final Reader rea * @param type type type json will be converted to. * @return instance of type */ - public static T fromJson(@NonNull final Gson gson, @NonNull final Reader reader, @NonNull final Type type) { + public static T fromJson(@NonNull final Gson gson, final Reader reader, @NonNull final Type type) { return gson.fromJson(reader, type); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index a57c4e410a..c7603ea601 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -1589,11 +1589,11 @@ public static boolean isImage(final File file) { * @return {@code true}: yes
    {@code false}: no */ public static boolean isImage(final String filePath) { - BitmapFactory.Options options = new BitmapFactory.Options(); - options.inJustDecodeBounds = true; try { - Bitmap bitmap = BitmapFactory.decodeFile(filePath, options); - return bitmap != null && options.outWidth != -1 && options.outHeight != -1; + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(filePath, options); + return options.outWidth > 0 && options.outHeight > 0; } catch (Exception e) { return false; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index 7ab11b7981..e4c41a1214 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -135,7 +135,7 @@ public static void hideSoftInput(@NonNull final View view) { public static void hideSoftInputByToggle(final Activity activity) { long nowMillis = System.currentTimeMillis(); long delta = nowMillis - millis; - if (KeyboardUtils.isSoftInputVisible(activity) && Math.abs(delta) > 500) { + if (Math.abs(delta) > 500 && KeyboardUtils.isSoftInputVisible(activity)) { KeyboardUtils.toggleSoftInput(); } millis = nowMillis; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java index 8a9952fea0..1e5e2982a3 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java @@ -47,7 +47,7 @@ public static boolean isPhone() { @SuppressLint("HardwareIds") @RequiresPermission(READ_PHONE_STATE) public static String getDeviceId() { - if (Build.VERSION.SDK_INT >= 29) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return ""; } TelephonyManager tm = getTelephonyManager(); @@ -70,6 +70,14 @@ public static String getDeviceId() { @SuppressLint("HardwareIds") @RequiresPermission(READ_PHONE_STATE) public static String getSerial() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + try { + return Build.getSerial(); + } catch (SecurityException e) { + e.printStackTrace(); + return ""; + } + } return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? Build.getSerial() : Build.SERIAL; } @@ -100,7 +108,7 @@ public static String getMEID() { @SuppressLint("HardwareIds") @RequiresPermission(READ_PHONE_STATE) public static String getImeiOrMeid(boolean isImei) { - if (Build.VERSION.SDK_INT >= 29) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return ""; } TelephonyManager tm = getTelephonyManager(); @@ -200,6 +208,14 @@ private static String getSystemPropertyByReflect(String key) { @SuppressLint("HardwareIds") @RequiresPermission(READ_PHONE_STATE) public static String getIMSI() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + try { + getTelephonyManager().getSubscriberId(); + } catch (SecurityException e) { + e.printStackTrace(); + return ""; + } + } return getTelephonyManager().getSubscriberId(); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java index b164e6154e..fbc3ff02ff 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java @@ -1,11 +1,13 @@ package com.blankj.utilcode.util; +import android.os.Build; import android.support.annotation.ColorInt; import android.support.annotation.DrawableRes; import android.support.annotation.IntDef; import android.support.annotation.IntRange; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; +import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.text.SpannableString; import android.text.Spanned; @@ -13,6 +15,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.ViewParent; +import android.widget.FrameLayout; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -186,8 +190,33 @@ public SnackbarUtils setBottomMargin(@IntRange(from = 1) final int bottomMargin) * Show the snackbar. */ public Snackbar show() { - final View view = this.view; + return show(false); + } + + /** + * Show the snackbar. + * + * @param isShowTop True to show the snack bar on the top, false otherwise. + */ + public Snackbar show(boolean isShowTop) { + View view = this.view; if (view == null) return null; + if (isShowTop) { + ViewGroup suitableParent = findSuitableParentCopyFromSnackbar(view); + View topSnackBarContainer = suitableParent.findViewWithTag("topSnackBarCoordinatorLayout"); + if (topSnackBarContainer == null) { + CoordinatorLayout topSnackBarCoordinatorLayout = new CoordinatorLayout(view.getContext()); + topSnackBarCoordinatorLayout.setTag("topSnackBarCoordinatorLayout"); + topSnackBarCoordinatorLayout.setRotation(180); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + // bring to front + topSnackBarCoordinatorLayout.setElevation(100); + } + suitableParent.addView(topSnackBarCoordinatorLayout, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + topSnackBarContainer = topSnackBarCoordinatorLayout; + } + view = topSnackBarContainer; + } if (messageColor != COLOR_DEFAULT) { SpannableString spannableString = new SpannableString(message); ForegroundColorSpan colorSpan = new ForegroundColorSpan(messageColor); @@ -199,7 +228,13 @@ public Snackbar show() { sReference = new WeakReference<>(Snackbar.make(view, message, duration)); } final Snackbar snackbar = sReference.get(); - final View snackbarView = snackbar.getView(); + final Snackbar.SnackbarLayout snackbarView = (Snackbar.SnackbarLayout) snackbar.getView(); + if (isShowTop) { + for (int i = 0; i < snackbarView.getChildCount(); i++) { + View child = snackbarView.getChildAt(i); + child.setRotation(180); + } + } if (bgResource != -1) { snackbarView.setBackgroundResource(bgResource); } else if (bgColor != COLOR_DEFAULT) { @@ -224,30 +259,57 @@ public Snackbar show() { * Show the snackbar with success style. */ public void showSuccess() { + showSuccess(false); + } + + /** + * Show the snackbar with success style. + * + * @param isShowTop True to show the snack bar on the top, false otherwise. + */ + public void showSuccess(boolean isShowTop) { bgColor = COLOR_SUCCESS; messageColor = COLOR_MESSAGE; actionTextColor = COLOR_MESSAGE; - show(); + show(isShowTop); } /** * Show the snackbar with warning style. */ public void showWarning() { + showWarning(false); + } + + /** + * Show the snackbar with warning style. + * + * @param isShowTop True to show the snackbar on the top, false otherwise. + */ + public void showWarning(boolean isShowTop) { bgColor = COLOR_WARNING; messageColor = COLOR_MESSAGE; actionTextColor = COLOR_MESSAGE; - show(); + show(isShowTop); } /** * Show the snackbar with error style. */ public void showError() { + showError(false); + } + + /** + * Show the snackbar with error style. + * + * @param isShowTop True to show the snackbar on the top, false otherwise. + */ + public void showError(boolean isShowTop) { bgColor = COLOR_ERROR; messageColor = COLOR_MESSAGE; actionTextColor = COLOR_MESSAGE; - show(); + show(isShowTop); } /** @@ -305,4 +367,29 @@ public static void addView(@NonNull final View child, layout.addView(child, params); } } + + private static ViewGroup findSuitableParentCopyFromSnackbar(View view) { + ViewGroup fallback = null; + + do { + if (view instanceof CoordinatorLayout) { + return (ViewGroup) view; + } + + if (view instanceof FrameLayout) { + if (view.getId() == android.R.id.content) { + return (ViewGroup) view; + } + + fallback = (ViewGroup) view; + } + + if (view != null) { + ViewParent parent = view.getParent(); + view = parent instanceof View ? (View) parent : null; + } + } while (view != null); + + return fallback; + } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java index c69240a963..9ccd063afc 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UiMessageUtils.java @@ -248,34 +248,19 @@ private void setMessage(final Message message) { } public int getId() { - isUiThread(); return mMessage.what; } public Object getObject() { - isUiThread(); return mMessage.obj; } - private void isUiThread() { - if (null == mMessage) { - throw new IllegalStateException("You can't use LocalMessage instance from a non-UI thread. " + - "Extract the data from LocalMessage and don't hold a reference to it outside of handleMessage()"); - } - } - @Override public String toString() { - isUiThread(); - final StringBuilder b = new StringBuilder(); - b.append("{ id="); - b.append(getId()); - - b.append(", obj="); - b.append(getObject()); - - b.append(" }"); - return b.toString(); + return "{ " + + "id=" + getId() + + ", obj=" + getObject() + + " }"; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java index faf5cb9506..59a58919cd 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java @@ -16,6 +16,9 @@ import android.util.Log; import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import java.lang.reflect.Array; import java.lang.reflect.Method; @@ -144,21 +147,36 @@ else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT }// end 1_0 else if ("com.android.providers.downloads.documents".equals(authority)) { final String id = DocumentsContract.getDocumentId(uri); - if (!TextUtils.isEmpty(id)) { + if (TextUtils.isEmpty(id)) { + Log.d("UriUtils", uri.toString() + " parse failed(id is null). -> 1_1"); + return null; + } + if (id.startsWith("raw:")) { + return new File(id.substring(4)); + } + + String[] contentUriPrefixesToTry = new String[]{ + "content://downloads/public_downloads", + "content://downloads/all_downloads", + "content://downloads/my_downloads" + }; + + for (String contentUriPrefix : contentUriPrefixesToTry) { + Uri contentUri = ContentUris.withAppendedId(Uri.parse(contentUriPrefix), Long.valueOf(id)); try { - final Uri contentUri = ContentUris.withAppendedId( - Uri.parse("content://downloads/public_downloads"), - Long.valueOf(id) - ); - return getFileFromUri(contentUri, "1_1"); - } catch (NumberFormatException e) { - if (id.startsWith("raw:")) { - return new File(id.substring(4)); + File file = getFileFromUri(contentUri, "1_1"); + if (file != null) { + return file; } + } catch (Exception ignore) { } } - Log.d("UriUtils", uri.toString() + " parse failed. -> 1_1"); - return null; + + // copy file to accessible cache using streams + InputStream is = uri2InputStream(uri); + File file = new File(Utils.getApp().getCacheDir(), "" + System.currentTimeMillis()); + UtilsBridge.writeFileFromIS(file.getAbsolutePath(), is); + return file; }// end 1_1 else if ("com.android.providers.media.documents".equals(authority)) { final String docId = DocumentsContract.getDocumentId(uri); @@ -214,6 +232,11 @@ private static File getFileFromUri(final Uri uri, File fileDir = Environment.getExternalStorageDirectory(); return new File(fileDir, path.substring("/QQBrowser".length(), path.length())); } + } else if ("com.huawei.hidisk.fileprovider".equals(uri.getAuthority())) { + String path = uri.getPath(); + if (!TextUtils.isEmpty(path)) { + return new File(path.replace("/root", "")); + } } final Cursor cursor = Utils.getApp().getContentResolver().query( @@ -242,4 +265,30 @@ private static File getFileFromUri(final Uri uri, cursor.close(); } } + + /** + * uri to input stream. + * + * @param uri The uri. + * @return the input stream + */ + public static InputStream uri2InputStream(Uri uri) { + StringBuilder stringBuilder = new StringBuilder(); + InputStream is = null; + try { + is = Utils.getApp().getContentResolver().openInputStream(uri); + return is; + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } } diff --git a/lib/utilcode/src/main/res/values/styles.xml b/lib/utilcode/src/main/res/values/styles.xml new file mode 100644 index 0000000000..0fcfe9b91d --- /dev/null +++ b/lib/utilcode/src/main/res/values/styles.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/plugin/api-gradle-plugin/README.md b/plugin/api-gradle-plugin/README.md index ed1b71a750..7a6141b980 100644 --- a/plugin/api-gradle-plugin/README.md +++ b/plugin/api-gradle-plugin/README.md @@ -6,7 +6,7 @@ 组件化方案中各业务是相互隔离的,所以两个业务模块要通信的话,就需要通过路由或者接口下沉来完成,业界的方案都无法与 **[AucFrame](https://github.com/Blankj/AucFrameTemplate)** 完美融合,所以我就只好自己动手来完成一个更方便、精简、完美的 `ApiUtils`。 -它功能类似 SPI,但比 SPI 更适合于 Android,而且功能更强大,这里也吐槽下 Android 中使用 ServiceLoader 会引起的 ANR 的问题,虽然 kotlinx 中 R8 加入了 FastServiceLoader,但如果不用 kotlinx 的项目还是无法解决 ANR 的问题;我也试过把 AutoService 中生成的内容放入到 assets 文件中,仅仅只有些许提升,还是无法从根上解决问题。 +它功能类似 SPI,但比 SPI 更适合于 Android,而且功能更强大,这里也吐槽下 Android 中使用 ServiceLoader 会引起的 ANR 的问题,虽然 kotlinx 中 R8 加入了 FastServiceLoader,但如果不用 kotlinx 的项目还是无法解决 ANR 的问题;解决方案肯定是有的,这里就不展开讨论这个问题了。 在 **[AucFrame](https://github.com/Blankj/AucFrameTemplate)** 架构中,我们可以通过 `ApiUtils` 来自由调用各模块的 `apis`,各业务通过对外提供的 `export` 模块来供其他业务方使用,自身只需要实现自身的 `export` 中的 `apis` 即可。其 **[AucFrame](https://github.com/Blankj/AucFrameTemplate)** 的架构图如下所示: @@ -63,6 +63,19 @@ android { 当然,如果你项目是开启混淆的话,全量引入 **[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode)** 也是可以的,混淆会帮你去除未使用到的类和方法。 +api 完整的 DSL 如下所示: + +```groovy +api { + abortOnError boolean // api 扫描有问题是否终止编译,默认 true + apiUtilsClass String // ApiUtils 类的路径,默认 'com.blankj.utilcode.util.ApiUtils' + onlyScanLibRegex String// 设置 transform 只扫描库的正则,比如 auc 配置的 '^([:]|(com\\.blankj)).+$', + // [:] 表示扫描本地 module,因为本地 module 在 transform 中的 jar 包名是以 : 开头的,比如 :feature:utilcode:feature_utilcode_pkg, + // com.blankj 表示扫描远端仓库以 com.blankj 开头的,比如 com.blankj:utilcode:xx + jumpScanLibRegex String// 和 onlyScanLibRegex 类似,不过是指要跳过哪些扫描的,和 onlyScanLibRegex 不能共存,onlyScanLibRegex 优先级更高 +} +``` + ### 例子 插件和依赖都配置完毕,下面就让我们在项目中使用吧,举一个实际的例子,比如 `login` 模块中存在 `LoginActivity`,`main` 模块存在 `MainActivity`,这两个模块是平行的关系,两者互不依赖,现在我们通过 `ApiUtils` 让 `LoginActivity` 来启动 `MainActivity`,在 **[AucFrame](https://github.com/Blankj/AucFrameTemplate)** 中每个业务模块下都有 `export` 模块,类似于你们自己项目中的底层公共模块,因为是 `login` 来调用 `main` 模块,所以是 `mian` 模块需要提供 `api` 来供 `login` 来调,所以我们在 `main` 的 `export` 中加入一个继承自 `ApiUtils.BaseApi` 的抽象类 `MainApi`,并添加启动 `MainActivity` 的抽象方法,我们把方法搞得更复杂点,带上自定义的参数和返回值,具体如下所示: diff --git a/plugin/bus-gradle-plugin/README.md b/plugin/bus-gradle-plugin/README.md index 0071e2e33c..5d90973b6b 100644 --- a/plugin/bus-gradle-plugin/README.md +++ b/plugin/bus-gradle-plugin/README.md @@ -61,6 +61,19 @@ android { 当然,如果你项目是开启混淆的话,全量引入 **[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode)** 也是可以的,混淆会帮你去除未使用到的类和方法。 +bus 完整的 DSL 如下所示: + +```groovy +bus { + abortOnError boolean // bus 扫描有问题是否终止编译,默认 true + busUtilsClass String // BusUtils 类的路径,默认 'com.blankj.utilcode.util.BusUtils' + onlyScanLibRegex String// 设置 transform 只扫描库的正则,比如 auc 配置的 '^([:]|(com\\.blankj)).+$', + // [:] 表示扫描本地 module,因为本地 module 在 transform 中的 jar 包名是以 : 开头的,比如 :feature:utilcode:feature_utilcode_pkg, + // com.blankj 表示扫描远端仓库以 com.blankj 开头的,比如 com.blankj:utilcode:xx + jumpScanLibRegex String// 和 onlyScanLibRegex 类似,不过是指要跳过哪些扫描的,和 onlyScanLibRegex 不能共存,onlyScanLibRegex 优先级更高 +} +``` + 好了,插件和依赖都配置完毕,下面介绍基本使用。 ### 基本使用 @@ -412,7 +425,7 @@ public void compareUnregister10000Times() { } ``` -修改 `oneParamFun` 为两个参数的话,为了确保项目不会因为 `BusUtils` 在运行时崩溃,`api` 插件会使其在编译时就不过,此时 `__bus__.json` 文件如下所示,提示你参数个数不对: +修改 `oneParamFun` 为两个参数的话,为了确保项目不会因为 `BusUtils` 在运行时崩溃,`bus` 插件会使其在编译时就不过,此时 `__bus__.json` 文件如下所示,提示你参数个数不对: ```json { From 4acdc6b240b5faec91a9805b680c406814550d8e Mon Sep 17 00:00:00 2001 From: Blankj Date: Sat, 25 Apr 2020 15:29:56 +0800 Subject: [PATCH 054/122] see 04/25 log --- .../com/blankj/utilcode/util/GsonUtils.java | 1 - .../com/blankj/utilcode/util/UriUtils.java | 27 +++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java index ecaef68676..6576ee2801 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/GsonUtils.java @@ -9,7 +9,6 @@ import java.io.Reader; import java.lang.reflect.Type; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java index 59a58919cd..db30030354 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java @@ -70,6 +70,18 @@ public static Uri file2Uri(@NonNull final File file) { * @return file */ public static File uri2File(@NonNull final Uri uri) { + File file = uri2FileReal(uri); + if (file != null) return file; + return copyUri2Cache(uri); + } + + /** + * Uri to file. + * + * @param uri The uri. + * @return file + */ + private static File uri2FileReal(@NonNull final Uri uri) { Log.d("UriUtils", uri.toString()); String authority = uri.getAuthority(); String scheme = uri.getScheme(); @@ -172,11 +184,8 @@ else if ("com.android.providers.downloads.documents".equals(authority)) { } } - // copy file to accessible cache using streams - InputStream is = uri2InputStream(uri); - File file = new File(Utils.getApp().getCacheDir(), "" + System.currentTimeMillis()); - UtilsBridge.writeFileFromIS(file.getAbsolutePath(), is); - return file; + Log.d("UriUtils", uri.toString() + " parse failed. -> 1_1"); + return null; }// end 1_1 else if ("com.android.providers.media.documents".equals(authority)) { final String docId = DocumentsContract.getDocumentId(uri); @@ -266,6 +275,14 @@ private static File getFileFromUri(final Uri uri, } } + private static File copyUri2Cache(Uri uri) { + Log.d("UriUtils", "copyUri2Cache() called"); + InputStream is = uri2InputStream(uri); + File file = new File(Utils.getApp().getCacheDir(), "" + System.currentTimeMillis()); + UtilsBridge.writeFileFromIS(file.getAbsolutePath(), is); + return file; + } + /** * uri to input stream. * From 1fb408022f5213231067e36b0d291a41a6961c08 Mon Sep 17 00:00:00 2001 From: Blankj Date: Sun, 26 Apr 2020 14:01:50 +0800 Subject: [PATCH 055/122] see 04/26 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 2 +- lib/utilcode/README-CN.md | 4 ++-- lib/utilcode/README.md | 4 ++-- .../main/java/com/blankj/utilcode/util/Utils.java | 15 +++++++++++++-- .../utilcode/util/UtilsActivityLifecycleImpl.java | 8 ++++++-- .../com/blankj/utilcode/util/UtilsBridge.java | 11 +++++++++-- 7 files changed, 34 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa379c40f7..07fad4777f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/04/26` [fix] Utils#init fit tinker. Publish 1.28.3. * `20/04/25` [fix] UriUtils#uri2File Unknown URI. Publish 1.28.2. * `20/04/24` [add] SnackbarUtils support show on the top; UriUtils#uri2InputStream. * `20/04/23` [fix] UriUtils#uri2File not support HW; TransActivity crash below 21. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 4d2aee3aad..9a6e8d1b2a 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_028_002 - static versionName = '1.28.2'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.28.3'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 51853dceeb..c9697914d9 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.2' +implementation 'com.blankj:utilcode:1.28.3' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.2' +implementation 'com.blankj:utilcodex:1.28.3' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 8c47c39797..e2ad859e60 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.2' +implementation 'com.blankj:utilcode:1.28.3' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.2' +implementation 'com.blankj:utilcodex:1.28.3' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java index dd957b5a51..eca5e40317 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/Utils.java @@ -42,9 +42,20 @@ private Utils() { * @param app application */ public static void init(final Application app) { - if (sApp != null) return; + if (app == null) { + Log.e("Utils", "app is null."); + return; + } + if (sApp == null) { + sApp = app; + UtilsBridge.init(sApp); + UtilsBridge.preLoad(); + return; + } + if (sApp.equals(app)) return; + UtilsBridge.unInit(sApp); sApp = app; - UtilsBridge.init(); + UtilsBridge.init(sApp); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index af57bc14bd..eed6d88747 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -40,9 +40,13 @@ final class UtilsActivityLifecycleImpl implements Application.ActivityLifecycleC private int mConfigCount = 0; private boolean mIsBackground = false; - void init() { + void init(Application app) { + app.registerActivityLifecycleCallbacks(this); + } + + void unInit(Application app) { mActivityList.clear(); - Utils.getApp().registerActivityLifecycleCallbacks(this); + app.unregisterActivityLifecycleCallbacks(this); } Activity getTopActivity() { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 41e052a5e9..30e9c23acd 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -35,8 +35,15 @@ */ class UtilsBridge { - static void init() { - UtilsActivityLifecycleImpl.INSTANCE.init(); + static void init(Application app) { + UtilsActivityLifecycleImpl.INSTANCE.init(app); + } + + static void unInit(Application app) { + UtilsActivityLifecycleImpl.INSTANCE.unInit(app); + } + + static void preLoad() { preLoad(AdaptScreenUtils.getPreLoadRunnable()); } From 14fcb20ebd3acb05370c8d98737d1226a249085a Mon Sep 17 00:00:00 2001 From: vector Date: Tue, 28 Apr 2020 16:39:19 +0800 Subject: [PATCH 056/122] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=9A=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E6=98=AFunity=E7=94=B3=E8=AF=B7=E6=82=AC=E6=B5=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=EF=BC=8C=E5=BD=93=E6=9D=83=E9=99=90=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2=E6=89=93=E5=BC=80=E6=97=B6=EF=BC=8C?= =?UTF-8?q?app=E5=88=87=E6=8D=A2=E5=88=B0=E5=90=8E=E5=8F=B0=E5=86=8D?= =?UTF-8?q?=E5=88=87=E5=9B=9E=EF=BC=8C=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BC=9A=E8=A2=AB=E5=BC=BA=E5=88=B6=E5=85=B3=E9=97=AD=EF=BC=8C?= =?UTF-8?q?=E6=AD=A4=E6=97=B6=E6=AD=A3=E5=B8=B8=E6=B5=81=E7=A8=8B=E4=B8=8D?= =?UTF-8?q?=E4=BC=9A=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blankj/utilcode/util/PermissionUtils.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index e76a8bcd5e..ec496c1f97 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -368,6 +368,8 @@ static final class PermissionActivityImpl extends UtilsTransActivity.TransActivi private static final int TYPE_WRITE_SETTINGS = 0x02; private static final int TYPE_DRAW_OVERLAYS = 0x03; + private static int currentRequestCode = -1; + private static PermissionActivityImpl INSTANCE = new PermissionActivityImpl(); public static void start(final int type) { @@ -403,8 +405,10 @@ public void run() { } requestPermissions(activity); } else if (type == TYPE_WRITE_SETTINGS) { + currentRequestCode = TYPE_WRITE_SETTINGS; startWriteSettingsActivity(activity, TYPE_WRITE_SETTINGS); } else if (type == TYPE_DRAW_OVERLAYS) { + currentRequestCode = TYPE_DRAW_OVERLAYS; startOverlayPermissionActivity(activity, TYPE_DRAW_OVERLAYS); } else { activity.finish(); @@ -441,8 +445,22 @@ public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) { return true; } + @Override + public void onDestroy(final UtilsTransActivity activity) { + //如果是unity调用,app从后台切回,当前activity会被强制关闭,此时正常流程不会触发,所以在这里检测 + if (currentRequestCode != -1) { + checkRequestCallback(currentRequestCode); + currentRequestCode = -1; + } + super.onDestroy(activity); + } + @Override public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) { + activity.finish(); + } + + private void checkRequestCallback(int requestCode) { if (requestCode == TYPE_WRITE_SETTINGS) { if (sSimpleCallback4WriteSettings == null) return; if (isGrantedWriteSettings()) { @@ -465,7 +483,6 @@ public void run() { } }, 100); } - activity.finish(); } } From f6367ba8cdafc77de0ed499728cddcce0d401253 Mon Sep 17 00:00:00 2001 From: Blankj Date: Sun, 3 May 2020 04:46:55 +0800 Subject: [PATCH 057/122] see 05/03 log --- CHANGELOG.md | 5 + buildSrc/src/main/groovy/Config.groovy | 19 +- buildSrc/src/main/groovy/ConfigUtils.groovy | 2 +- .../src/main/groovy/TaskDurationUtils.groovy | 2 +- config.json | 5 +- .../utilcode/pkg/helper/DialogHelper.kt | 1 + gradle/publish.gradle | 1 + .../java/com/blankj/base/rv/BaseItem.java | 3 + .../com/blankj/base/rv/BaseItemAdapter.java | 42 +- lib/utilcode/README-CN.md | 4 +- lib/utilcode/README.md | 4 +- .../com/blankj/utilcode/util/BarUtils.java | 12 +- .../blankj/utilcode/util/KeyboardUtils.java | 17 +- .../blankj/utilcode/util/LanguageUtils.java | 58 ++- .../blankj/utilcode/util/PermissionUtils.java | 18 +- plugin/api-gradle-plugin/CHANGELOG.md | 5 +- plugin/api-gradle-plugin/build.gradle | 24 +- .../main/java/com/blankj/api/ApiInject.groovy | 2 +- .../main/java/com/blankj/api/ApiPlugin.groovy | 119 ++++- .../main/java/com/blankj/api/ApiScan.groovy | 72 --- .../java/com/blankj/api/ApiTransform.groovy | 163 ------- .../main/java/com/blankj/api/Config.groovy | 4 +- .../java/com/blankj/api/util/JsonUtils.groovy | 21 - .../java/com/blankj/api/util/LogUtils.groovy | 34 -- plugin/bus-gradle-plugin/CHANGELOG.md | 3 + plugin/bus-gradle-plugin/build.gradle | 24 +- .../main/java/com/blankj/bus/BusInject.groovy | 12 +- .../main/java/com/blankj/bus/BusPlugin.groovy | 138 +++++- .../main/java/com/blankj/bus/BusScan.groovy | 70 --- .../java/com/blankj/bus/BusTransform.groovy | 180 ------- .../main/java/com/blankj/bus/Config.groovy | 4 +- .../java/com/blankj/bus/util/LogUtils.groovy | 34 -- .../java/com/blankj/bus/util/ZipUtils.java | 453 ------------------ plugin/lib/base-transform/.gitignore | 2 + plugin/lib/base-transform/CHANGELOG.md | 4 + plugin/lib/base-transform/README.md | 50 ++ plugin/lib/base-transform/build.gradle | 31 ++ .../BaseTransformCallback.groovy | 15 + .../base_transform/BaseTransformConfig.groovy | 5 + .../base_transform/BaseTransformPlugin.groovy | 162 +++++++ .../base_transform}/util/JsonUtils.groovy | 2 +- .../base_transform/util/LogUtils.groovy | 60 +++ .../blankj/base_transform}/util/ZipUtils.java | 2 +- 43 files changed, 728 insertions(+), 1160 deletions(-) delete mode 100755 plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy delete mode 100755 plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy delete mode 100755 plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/JsonUtils.groovy delete mode 100755 plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/LogUtils.groovy delete mode 100755 plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy delete mode 100755 plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy delete mode 100755 plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/LogUtils.groovy delete mode 100755 plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/ZipUtils.java create mode 100755 plugin/lib/base-transform/.gitignore create mode 100644 plugin/lib/base-transform/CHANGELOG.md create mode 100644 plugin/lib/base-transform/README.md create mode 100755 plugin/lib/base-transform/build.gradle create mode 100644 plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformCallback.groovy create mode 100755 plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformConfig.groovy create mode 100755 plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformPlugin.groovy rename plugin/{bus-gradle-plugin/src/main/java/com/blankj/bus => lib/base-transform/src/main/java/com/blankj/base_transform}/util/JsonUtils.groovy (90%) create mode 100755 plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/LogUtils.groovy rename plugin/{api-gradle-plugin/src/main/java/com/blankj/api => lib/base-transform/src/main/java/com/blankj/base_transform}/util/ZipUtils.java (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07fad4777f..132d7fad7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +* `20/05/03` [add] Publish bus plugin v2.5. Publish api plugin v1.3. Publish. Publish 1.28.4. +* `20/04/30` [add] BaseItem support partialUpdate. +* `20/04/29` [add] Publish plugin lib com.blankj:base-transform:1.0. +* `20/04/28` [fix] LanguageUtils#applyLanguage. +* `20/04/27` [fix] BarUtils#isNavBarVisible. * `20/04/26` [fix] Utils#init fit tinker. Publish 1.28.3. * `20/04/25` [fix] UriUtils#uri2File Unknown URI. Publish 1.28.2. * `20/04/24` [add] SnackbarUtils support show on the top; UriUtils#uri2InputStream. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 9a6e8d1b2a..99a93fb4d8 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,7 +15,7 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_028_002 - static versionName = '1.28.3'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.28.4'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' @@ -25,8 +25,9 @@ class Config { static depConfig = [ /*Never delete this line*/ /*Generated by "config.json"*/ - plugin_api_gradle_plugin : new DepConfig(true , true , ":plugin:api-gradle-plugin"), - plugin_bus_gradle_plugin : new DepConfig(true , true , ":plugin:bus-gradle-plugin"), + plugin_api_gradle_plugin : new DepConfig(false, true , ":plugin:api-gradle-plugin"), + plugin_bus_gradle_plugin : new DepConfig(false, true , ":plugin:bus-gradle-plugin"), + plugin_lib_base_transform : new DepConfig(false, true , ":plugin:lib:base-transform", "com.blankj:base-transform:1.0"), feature_mock : new DepConfig(false, true , ":feature:mock"), feature_launcher_app : new DepConfig(true , true , ":feature:launcher:app"), feature_main_app : new DepConfig(false, true , ":feature:main:app"), @@ -52,12 +53,12 @@ class Config { // 上传新版本插件更新 pluginPath 中的版本号,并设置 isApply = false // 通过 mavenLocal 上传本地版本,设置 isApply = true 即可应用插件来调试,最后通过 bintrayUpload 来发布插件 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.2", pluginId: "com.blankj.api"), - //./gradlew plugin:plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal - //./gradlew plugin:plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter - plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.4", pluginId: "com.blankj.bus"), - //./gradlew plugin:plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal - //./gradlew plugin:plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter + plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.3", pluginId: "com.blankj.api"), + //./gradlew clean plugin:plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal + //./gradlew clean plugin:plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter + plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.5", pluginId: "com.blankj.bus"), + //./gradlew clean plugin:plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal + //./gradlew clean plugin:plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$supportVersion"), support_design : new DepConfig("com.android.support:design:$supportVersion"), diff --git a/buildSrc/src/main/groovy/ConfigUtils.groovy b/buildSrc/src/main/groovy/ConfigUtils.groovy index e5fa63146c..d60518fac5 100644 --- a/buildSrc/src/main/groovy/ConfigUtils.groovy +++ b/buildSrc/src/main/groovy/ConfigUtils.groovy @@ -47,7 +47,7 @@ class ConfigUtils { void beforeEvaluate(Project project) { // 在 project 的 build.gradle 前 do sth. if (project.subprojects.isEmpty()) { - if (project.name.startsWith("plugin")) { + if (project.path.startsWith(":plugin")) { return } if (project.name.endsWith("_app")) { diff --git a/buildSrc/src/main/groovy/TaskDurationUtils.groovy b/buildSrc/src/main/groovy/TaskDurationUtils.groovy index 48b2d2b6cc..9ff2722345 100644 --- a/buildSrc/src/main/groovy/TaskDurationUtils.groovy +++ b/buildSrc/src/main/groovy/TaskDurationUtils.groovy @@ -32,7 +32,7 @@ class TaskDurationUtils { @Override void afterExecute(Task task, TaskState state) { def exeDuration = System.currentTimeMillis() - task.ext.startTime - if (exeDuration >= 100) { + if (exeDuration >= 500) { taskInfoList.add(new TaskInfo(task: task, exeDuration: exeDuration)) } } diff --git a/config.json b/config.json index 040dc5ce1f..5f5ff16fdd 100644 --- a/config.json +++ b/config.json @@ -5,8 +5,9 @@ "pkgConfig": [], "proConfigDesc": "proConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig", "proConfig": [ - {"isApply": true, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, - {"isApply": true, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, + {"isApply": false, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, + {"isApply": false, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, + {"isApply": false, "useLocal": true, "localPath": ":plugin:lib:base-transform", "remotePath": "com.blankj:base-transform:1.0"}, {"isApply": true, "useLocal": true, "localPath": ":feature:mock"}, {"isApply": true, "useLocal": true, "localPath": ":feature:launcher:app"}, {"isApply": true, "useLocal": true, "localPath": ":feature:main:app"}, diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt index 081ae6f071..623f01c95f 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt @@ -86,6 +86,7 @@ object DialogHelper { dialog.dialog.setOnShowListener(DialogInterface.OnShowListener { KeyboardUtils.fixAndroidBug5497(dialog.dialog.window!!) + KeyboardUtils.showSoftInput() }) } diff --git a/gradle/publish.gradle b/gradle/publish.gradle index 542c0ff516..f6fdfb4dda 100644 --- a/gradle/publish.gradle +++ b/gradle/publish.gradle @@ -54,6 +54,7 @@ def configMaven(Project project, PublishExtension ext) { } project.tasks.create("mavenLocal", Upload) { + group("publishing") configuration = project.configurations.archives repositories.mavenDeployer { diff --git a/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java b/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java index c981fe58fc..cb93770b3a 100644 --- a/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java +++ b/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java @@ -38,6 +38,9 @@ static ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType public abstract void bind(@NonNull final ItemViewHolder holder, final int position); + public void partialUpdate(List payloads) { + } + void bindViewHolder(@NonNull final ItemViewHolder holder, final int position) { if (mOnItemClickListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { diff --git a/lib/base/src/main/java/com/blankj/base/rv/BaseItemAdapter.java b/lib/base/src/main/java/com/blankj/base/rv/BaseItemAdapter.java index 6b99194cd1..19a65a078e 100644 --- a/lib/base/src/main/java/com/blankj/base/rv/BaseItemAdapter.java +++ b/lib/base/src/main/java/com/blankj/base/rv/BaseItemAdapter.java @@ -53,6 +53,15 @@ public final void onBindViewHolder(@NonNull ItemViewHolder holder, int position) mItems.get(position).bindViewHolder(holder, position); } + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position, @NonNull List payloads) { + if (payloads.isEmpty()) { + super.onBindViewHolder(holder, position, payloads); + return; + } + mItems.get(position).partialUpdate(payloads); + } + @Override public int getItemCount() { return mItems.size(); @@ -151,14 +160,41 @@ public int removeItemById(final long id, boolean notifyRemoved) { /////////////////////////////////////////////////////////////////////////// public void updateItem(@NonNull final Item item) { + updateItems(item, 1, null); + } + + public void updateItem(@IntRange(from = 0) final int index) { + updateItems(index, 1, null); + } + + public void updateItem(@NonNull final Item item, Object payload) { + updateItems(item, 1, payload); + } + + public void updateItem(@IntRange(from = 0) final int index, Object payload) { + updateItems(index, 1, payload); + } + + public void updateItems(@NonNull final Item item, int itemCount) { int itemIndex = mItems.indexOf(item); if (itemIndex != -1) { - notifyItemChanged(itemIndex); + updateItems(itemIndex, itemCount); } } - public void updateItem(@IntRange(from = 0) final int index) { - notifyItemChanged(index); + public void updateItems(@IntRange(from = 0) final int index, int itemCount) { + updateItems(index, itemCount, null); + } + + public void updateItems(@NonNull final Item item, int itemCount, Object payload) { + int itemIndex = mItems.indexOf(item); + if (itemIndex != -1) { + updateItems(itemIndex, itemCount, payload); + } + } + + public void updateItems(@IntRange(from = 0) final int index, int itemCount, Object payload) { + notifyItemRangeChanged(index, itemCount, payload); } public void addItem(@NonNull final Item item) { diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index c9697914d9..6253bd84a3 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.3' +implementation 'com.blankj:utilcode:1.28.4' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.3' +implementation 'com.blankj:utilcodex:1.28.4' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index e2ad859e60..6b62ef533c 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.3' +implementation 'com.blankj:utilcode:1.28.4' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.3' +implementation 'com.blankj:utilcodex:1.28.4' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index 0350dacdbb..37596cd9eb 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -515,7 +515,7 @@ public static void setNavBarVisibility(@NonNull final Window window, boolean isV final View child = decorView.getChildAt(i); final int id = child.getId(); if (id != View.NO_ID) { - String resourceEntryName = Resources.getSystem().getResourceEntryName(id); + String resourceEntryName = getResNameById(id); if ("navigationBarBackground".equals(resourceEntryName)) { child.setVisibility(isVisible ? View.VISIBLE : View.INVISIBLE); } @@ -556,7 +556,7 @@ public static boolean isNavBarVisible(@NonNull final Window window) { final View child = decorView.getChildAt(i); final int id = child.getId(); if (id != View.NO_ID) { - String resourceEntryName = Resources.getSystem().getResourceEntryName(id); + String resourceEntryName = getResNameById(id); if ("navigationBarBackground".equals(resourceEntryName) && child.getVisibility() == View.VISIBLE) { isVisible = true; @@ -571,6 +571,14 @@ public static boolean isNavBarVisible(@NonNull final Window window) { return isVisible; } + private static String getResNameById(int id) { + try { + return Utils.getApp().getResources().getResourceEntryName(id); + } catch (Exception ignore) { + return ""; + } + } + /** * Set the navigation bar's color. * diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index e4c41a1214..9f7791923d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -97,14 +97,23 @@ protected void onReceiveResult(int resultCode, Bundle resultData) { * @param activity The activity. */ public static void hideSoftInput(@NonNull final Activity activity) { - View view = activity.getCurrentFocus(); + hideSoftInput(activity.getWindow()); + } + + /** + * Hide the soft input. + * + * @param window The window. + */ + public static void hideSoftInput(@NonNull final Window window) { + View view = window.getCurrentFocus(); if (view == null) { - View decorView = activity.getWindow().getDecorView(); + View decorView = window.getDecorView(); View focusView = decorView.findViewWithTag("keyboardTagView"); if (focusView == null) { - view = new EditText(activity); + view = new EditText(window.getContext()); view.setTag("keyboardTagView"); - ((ViewGroup) decorView).addView(view, 1, 1); + ((ViewGroup) decorView).addView(view, 0, 0); } else { view = focusView; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java index f73dc14828..d0ba85d243 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java @@ -69,7 +69,7 @@ public static void applySystemLanguage(final String activityClassName) { * @param locale The language of locale. */ public static void applyLanguage(@NonNull final Locale locale) { - if (isAppliedLanguage()) return; + if (isAppliedLanguage(locale)) return; applyLanguage(locale, "", false, false); } @@ -115,9 +115,7 @@ private static void applyLanguage(@NonNull final Locale locale, if (isFollowSystem) { UtilsBridge.getSpUtils4Utils().put(KEY_LOCALE, VALUE_FOLLOW_SYSTEM); } else { - String localLanguage = locale.getLanguage(); - String localCountry = locale.getCountry(); - UtilsBridge.getSpUtils4Utils().put(KEY_LOCALE, localLanguage + "$" + localCountry); + UtilsBridge.getSpUtils4Utils().put(KEY_LOCALE, locale2String(locale)); } updateLanguage(Utils.getApp(), locale); @@ -149,6 +147,25 @@ public static boolean isAppliedLanguage() { return !TextUtils.isEmpty(UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE)); } + /** + * Return whether applied the language by {@link LanguageUtils}. + * + * @param locale The locale. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isAppliedLanguage(Locale locale) { + final String spLocale = UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE); + if (TextUtils.isEmpty(spLocale)) { + return false; + } + if (VALUE_FOLLOW_SYSTEM.equals(spLocale)) { + return false; + } + Locale settingLocale = string2Locale(spLocale); + if (settingLocale == null) return false; + return isSameLocale(settingLocale, locale); + } + /** * Return the locale. * @@ -159,7 +176,7 @@ public static Locale getCurrentLocale() { } static void applyLanguage(@NonNull final Activity activity) { - final String spLocale = UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE); + String spLocale = UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE); if (TextUtils.isEmpty(spLocale)) { return; } @@ -171,17 +188,28 @@ static void applyLanguage(@NonNull final Activity activity) { return; } - String[] language_country = spLocale.split("\\$"); - if (language_country.length != 2) { - Log.e("LanguageUtils", "The string of " + spLocale + " is not in the correct format."); - return; - } - - Locale settingLocale = new Locale(language_country[0], language_country[1]); + Locale settingLocale = string2Locale(spLocale); + if (settingLocale == null) return; updateLanguage(Utils.getApp(), settingLocale); updateLanguage(activity, settingLocale); } + private static String locale2String(Locale locale) { + String localLanguage = locale.getLanguage(); + String localCountry = locale.getCountry(); + return localLanguage + "$" + localCountry; + } + + private static Locale string2Locale(String str) { + String[] language_country = str.split("\\$"); + if (language_country.length != 2) { + Log.e("LanguageUtils", "The string of " + str + " is not in the correct format."); + return null; + } + return new Locale(language_country[0], language_country[1]); + } + + private static void updateLanguage(final Context context, Locale locale) { Resources resources = context.getResources(); Configuration config = resources.getConfiguration(); @@ -207,8 +235,8 @@ private static void updateLanguage(final Context context, Locale locale) { resources.updateConfiguration(config, dm); } - private static boolean isSameLocale(Locale locale, Locale contextLocale) { - return UtilsBridge.equals(contextLocale.getLanguage(), locale.getLanguage()) - && UtilsBridge.equals(contextLocale.getCountry(), locale.getCountry()); + private static boolean isSameLocale(Locale l0, Locale l1) { + return UtilsBridge.equals(l1.getLanguage(), l0.getLanguage()) + && UtilsBridge.equals(l1.getCountry(), l0.getCountry()); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index 5b411ec370..3884ad1c9f 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -447,7 +447,6 @@ public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) { @Override public void onDestroy(final UtilsTransActivity activity) { - //如果是unity调用,app从后台切回,当前activity会被强制关闭,此时正常流程不会触发,所以在这里检测 if (currentRequestCode != -1) { checkRequestCallback(currentRequestCode); currentRequestCode = -1; @@ -471,17 +470,12 @@ private void checkRequestCallback(int requestCode) { sSimpleCallback4WriteSettings = null; } else if (requestCode == TYPE_DRAW_OVERLAYS) { if (sSimpleCallback4DrawOverlays == null) return; - UtilsBridge.runOnUiThreadDelayed(new Runnable() { - @Override - public void run() { - if (isGrantedDrawOverlays()) { - sSimpleCallback4DrawOverlays.onGranted(); - } else { - sSimpleCallback4DrawOverlays.onDenied(); - } - sSimpleCallback4DrawOverlays = null; - } - }, 100); + if (isGrantedDrawOverlays()) { + sSimpleCallback4DrawOverlays.onGranted(); + } else { + sSimpleCallback4DrawOverlays.onDenied(); + } + sSimpleCallback4DrawOverlays = null; } } } diff --git a/plugin/api-gradle-plugin/CHANGELOG.md b/plugin/api-gradle-plugin/CHANGELOG.md index 0dd62f9cb2..696e1f83ef 100644 --- a/plugin/api-gradle-plugin/CHANGELOG.md +++ b/plugin/api-gradle-plugin/CHANGELOG.md @@ -1,6 +1,9 @@ # Change Log -## v1.2(2020/11/30) +## v1.3(2020/04/29) +重构使用 base-transform + +## v1.2(2019/11/30) 去除 gradle 版本依赖的问题 ## v1.1(2019/10/30) diff --git a/plugin/api-gradle-plugin/build.gradle b/plugin/api-gradle-plugin/build.gradle index 9f40e0ca74..e948a5e5c3 100755 --- a/plugin/api-gradle-plugin/build.gradle +++ b/plugin/api-gradle-plugin/build.gradle @@ -1,7 +1,3 @@ -plugins { - id 'com.gradle.plugin-publish' version "0.10.0" -} - apply { plugin "groovy" plugin "java-gradle-plugin" @@ -19,6 +15,7 @@ gradlePlugin { dependencies { compileOnly Config.depConfig.plugin_gradle.dep implementation Config.depConfig.commons_io.dep + implementation Config.depConfig.plugin_lib_base_transform.dep implementation gradleApi() implementation localGroovy() @@ -34,20 +31,6 @@ sourceSets { } } -pluginBundle { - website = 'https://github.com/Blankj/AndroidUtilCode' - vcsUrl = 'https://github.com/Blankj/AndroidUtilCode.git' - description = 'Plugin for ApiUtils.' - tags = ['gradle', 'plugin', 'api', 'ApiUtils', 'asm'] - - plugins { - apiPlugin { - // id is captured from java-gradle-plugin configuration - displayName = 'Plugin for ApiUtils.' - } - } -} - apply from: "${rootDir.path}/gradle/publish.gradle" publish { name = "ApiPlugin" @@ -57,6 +40,5 @@ publish { website = "https://github.com/Blankj/AndroidUtilCode" } -//./gradlew plugin:plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal -//./gradlew plugin:plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter -//./gradlew plugin:plugin_api-gradle-plugin:publishPlugins // 上传到 gradle 插件库中 +//./gradlew clean plugin:plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal +//./gradlew clean plugin:plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy index e5755f5cfe..c5a1e674d9 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiInject.groovy @@ -1,6 +1,6 @@ package com.blankj.api -import com.blankj.api.util.ZipUtils +import com.blankj.base_transform.util.ZipUtils import org.apache.commons.io.FileUtils import org.objectweb.asm.ClassReader import org.objectweb.asm.ClassVisitor diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy index 3f79f72b56..9a5212c250 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiPlugin.groovy @@ -1,22 +1,115 @@ package com.blankj.api -import com.android.build.gradle.AppExtension -import com.android.build.gradle.AppPlugin -import com.blankj.api.util.LogUtils +import com.android.build.api.transform.JarInput +import com.blankj.base_transform.BaseTransformPlugin +import com.blankj.base_transform.util.JsonUtils import org.apache.commons.io.FileUtils -import org.gradle.api.Plugin -import org.gradle.api.Project +import org.objectweb.asm.ClassReader +import org.objectweb.asm.ClassVisitor +import org.objectweb.asm.ClassWriter -class ApiPlugin implements Plugin { +import java.util.regex.Pattern + +class ApiPlugin extends BaseTransformPlugin { + + String apiUtilsClass + File jsonFile + File apiUtilsTransformFile + Map apiImplMap = [:] + List apiClasses = [] + + @Override + String getPluginName() { + return Config.EXT_NAME + } + + @Override + void onScanStarted() { + apiUtilsClass = ext.apiUtilsClass + if (apiUtilsClass.trim().equals("")) { + throw new Exception("ApiExtension's apiUtilsClass is empty.") + } + + jsonFile = new File(mProject.projectDir.getAbsolutePath(), "__api__.json") + FileUtils.write(jsonFile, "{}") + } @Override - void apply(Project project) { - if (project.plugins.hasPlugin(AppPlugin)) { - LogUtils.init(project) - LogUtils.l('project(' + project.toString() + ') apply api gradle plugin!') - project.extensions.create(Config.EXT_NAME, ApiExtension) - def android = project.extensions.getByType(AppExtension) - android.registerTransform(new ApiTransform(project)) + boolean isIgnoreScan(JarInput input) { + def jarName = input.name + if (jarName.contains("utilcode")) { + return false + } + + if (ext.onlyScanLibRegex != null && ext.onlyScanLibRegex.trim().length() > 0) { + return !Pattern.matches(ext.onlyScanLibRegex, jarName) + } + + if (ext.jumpScanLibRegex != null && ext.jumpScanLibRegex.trim().length() > 0) { + if (Pattern.matches(ext.jumpScanLibRegex, jarName)) { + return true + } + } + + for (exclude in Config.EXCLUDE_LIBS_START_WITH) { + if (jarName.startsWith(exclude)) { + return true + } + } + return false + } + + @Override + void scanClassFile(File classFile, String className, File originScannedJarOrDir) { + if (apiUtilsClass == className) { + apiUtilsTransformFile = originScannedJarOrDir + log(": $originScannedJarOrDir") + } + + ClassReader cr = new ClassReader(classFile.bytes); + ClassWriter cw = new ClassWriter(cr, 0); + ClassVisitor cv = new ApiClassVisitor(cw, apiImplMap, apiClasses, apiUtilsClass); + try { + cr.accept(cv, ClassReader.SKIP_FRAMES); + } catch (Exception ignore) { + ignore.printStackTrace() + } + } + + @Override + void onScanFinished() { + if (apiUtilsTransformFile != null) { + if (apiClasses.isEmpty()) { + log("no api.") + } else { + Map implApis = [:] + List noImplApis = [] + apiImplMap.each { key, value -> + implApis.put(key, value.toString()) + } + apiClasses.each { + if (!apiImplMap.containsKey(it)) { + noImplApis.add(it) + } + } + Map apiDetails = [:] + apiDetails.put("ApiUtilsClass", apiUtilsClass) + apiDetails.put("implApis", implApis) + apiDetails.put("noImplApis", noImplApis) + String apiJson = JsonUtils.getFormatJson(apiDetails) + log(jsonFile.toString() + ": " + apiJson) + FileUtils.write(jsonFile, apiJson) + + if (noImplApis.size() > 0) { + if (ext.abortOnError) { + throw new Exception("u should impl these apis: " + noImplApis + + "\n u can check it in file: " + jsonFile.toString()) + } + } + ApiInject.start(apiImplMap, apiUtilsTransformFile, apiUtilsClass) + } + } else { + throw new Exception("No ApiUtils of ${apiUtilsClass} in $mProject.") } } } \ No newline at end of file diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy deleted file mode 100755 index ad2525d063..0000000000 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiScan.groovy +++ /dev/null @@ -1,72 +0,0 @@ -package com.blankj.api - -import com.blankj.api.util.LogUtils -import com.blankj.api.util.ZipUtils -import groovy.io.FileType -import org.apache.commons.io.FileUtils -import org.objectweb.asm.ClassReader -import org.objectweb.asm.ClassVisitor -import org.objectweb.asm.ClassWriter - -class ApiScan { - - Map apiImplMap = [:] - List apiClasses = [] - File apiUtilsTransformFile - String apiUtilsClass - - ApiScan(String apiUtilsClass) { - this.apiUtilsClass = apiUtilsClass - } - - - void scanJar(File jar) { - File tmp = new File(jar.getParent(), "temp_" + jar.getName()) - List unzipFile = ZipUtils.unzipFile(jar, tmp) - if (unzipFile != null && unzipFile.size() > 0) { - scanDir(tmp, jar) - FileUtils.forceDelete(tmp) - } - } - - void scanDir(File root) { - scanDir(root, root) - } - - void scanDir(File root, File source) { - if (!root.isDirectory()) return - String rootPath = root.getAbsolutePath() - if (!rootPath.endsWith(Config.FILE_SEP)) { - rootPath += Config.FILE_SEP - } - - root.eachFileRecurse(FileType.FILES) { File file -> - def fileName = file.name - if (!fileName.endsWith('.class') - || fileName.startsWith('R$') - || fileName == 'R.class' - || fileName == 'BuildConfig.class') { - return - } - - def filePath = file.absolutePath - def packagePath = filePath.replace(rootPath, '') - def className = packagePath.replace(Config.FILE_SEP, ".") - // delete .class - className = className.substring(0, className.length() - 6) - if (apiUtilsClass == className) { - apiUtilsTransformFile = source - LogUtils.l(": $source") - } - - ClassReader cr = new ClassReader(file.bytes); - ClassWriter cw = new ClassWriter(cr, 0); - ClassVisitor cv = new ApiClassVisitor(cw, apiImplMap, apiClasses, apiUtilsClass); - try { - cr.accept(cv, ClassReader.SKIP_FRAMES); - } catch (Exception ignore) { - ignore.printStackTrace() - } - } - } -} diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy deleted file mode 100755 index 34ce323c81..0000000000 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiTransform.groovy +++ /dev/null @@ -1,163 +0,0 @@ -package com.blankj.api - -import com.android.build.api.transform.* -import com.android.build.gradle.internal.pipeline.TransformManager -import com.blankj.api.util.JsonUtils -import com.blankj.api.util.LogUtils -import org.apache.commons.io.FileUtils -import org.gradle.api.Project - -import java.util.regex.Pattern - -class ApiTransform extends Transform { - - Project mProject; - - ApiTransform(Project project) { - mProject = project - } - - @Override - String getName() { - return "apiTransform" - } - - @Override - Set getInputTypes() { - return TransformManager.CONTENT_CLASS - } - - @Override - Set getScopes() { - return TransformManager.SCOPE_FULL_PROJECT - } - - @Override - boolean isIncremental() { - return false - } - - @Override - void transform(TransformInvocation transformInvocation) - throws TransformException, InterruptedException, IOException { - super.transform(transformInvocation) - LogUtils.l(getName() + " started") - long stTime = System.currentTimeMillis() - - def ext = mProject[Config.EXT_NAME] as ApiExtension - LogUtils.l("apiExtension: $ext") - if (ext.apiUtilsClass.trim().equals("")) { - throw new Exception("ApiExtension's apiUtilsClass is empty.") - } - - File jsonFile = new File(mProject.projectDir.getAbsolutePath(), "__api__.json") - FileUtils.write(jsonFile, "{}") - - def inputs = transformInvocation.getInputs() - def referencedInputs = transformInvocation.getReferencedInputs() - def outputProvider = transformInvocation.getOutputProvider() - def isIncremental = transformInvocation.isIncremental() - - outputProvider.deleteAll() - - ApiScan apiScan = new ApiScan(ext.apiUtilsClass) - - inputs.each { TransformInput input -> - input.directoryInputs.each { DirectoryInput dirInput ->// 遍历文件夹 - File dir = dirInput.file - - def dest = outputProvider.getContentLocation( - dirInput.name, - dirInput.contentTypes, - dirInput.scopes, - Format.DIRECTORY - ) - FileUtils.copyDirectory(dir, dest) - - LogUtils.l("scan dir: ${dirInput.file} -> $dest") - - apiScan.scanDir(dest) - } - input.jarInputs.each { JarInput jarInput ->// 遍历 jar 文件 - File jar = jarInput.file - - def jarName = jarInput.name - def dest = outputProvider.getContentLocation( - jarName, - jarInput.contentTypes, - jarInput.scopes, - Format.JAR - ) - FileUtils.copyFile(jar, dest) - - if (jumpScan(jarName, ext)) { - LogUtils.l("jump jar: $jarName -> $dest") - return - } - - LogUtils.l("scan jar: $jarName -> $dest") - apiScan.scanJar(dest) - - } - } - - if (apiScan.apiUtilsTransformFile != null) { - if (apiScan.apiClasses.isEmpty()) { - LogUtils.l("no api.") - } else { - Map implApis = [:] - List noImplApis = [] - apiScan.apiImplMap.each { key, value -> - implApis.put(key, value.toString()) - } - apiScan.apiClasses.each { - if (!apiScan.apiImplMap.containsKey(it)) { - noImplApis.add(it) - } - } - Map apiDetails = [:] - apiDetails.put("ApiUtilsClass", ext.apiUtilsClass) - apiDetails.put("implApis", implApis) - apiDetails.put("noImplApis", noImplApis) - String apiJson = JsonUtils.getFormatJson(apiDetails) - LogUtils.l(jsonFile.toString() + ": " + apiJson) - FileUtils.write(jsonFile, apiJson) - - if (noImplApis.size() > 0) { - if (ext.abortOnError) { - throw new Exception("u should impl these apis: " + noImplApis + - "\n u can check it in file: " + jsonFile.toString()) - } - } - ApiInject.start(apiScan.apiImplMap, apiScan.apiUtilsTransformFile, ext.apiUtilsClass) - } - } else { - throw new Exception("No ApiUtils of ${ext.apiUtilsClass} in $mProject.") - } - - LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms") - } - - private static jumpScan(String jarName, ApiExtension ext) { - if (jarName.contains("utilcode")) { - return false - } - - if (ext.onlyScanLibRegex != null && ext.onlyScanLibRegex.trim().length() > 0) { - return !Pattern.matches(ext.onlyScanLibRegex, jarName) - } - - if (ext.jumpScanLibRegex != null && ext.jumpScanLibRegex.trim().length() > 0) { - if (Pattern.matches(ext.jumpScanLibRegex, jarName)) { - return true - } - } - - for (exclude in Config.EXCLUDE_LIBS_START_WITH) { - if (jarName.startsWith(exclude)) { - return true - } - } - return false - } -} \ No newline at end of file diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy index fcf51fec4e..6414767cf7 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/Config.groovy @@ -1,5 +1,7 @@ package com.blankj.api +import com.blankj.base_transform.BaseTransformConfig + class Config { public static final String EXT_NAME = 'api' @@ -15,5 +17,5 @@ class Config { 'com.github.bumptech.glide' ] - public static final String FILE_SEP = System.getProperty("file.separator") + public static final String FILE_SEP = BaseTransformConfig.FILE_SEP } diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/JsonUtils.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/JsonUtils.groovy deleted file mode 100755 index 52893e2fe3..0000000000 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/JsonUtils.groovy +++ /dev/null @@ -1,21 +0,0 @@ -package com.blankj.api.util - -import com.google.gson.Gson -import com.google.gson.GsonBuilder - -/** - *
    - *     author: Blankj
    - *     blog  : http://blankj.com
    - *     time  : 2018/10/08
    - *     desc  :
    - * 
    - */ -final class JsonUtils { - - static final Gson GSON = new GsonBuilder().setPrettyPrinting().create() - - static String getFormatJson(Object object) { - return GSON.toJson(object) - } -} diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/LogUtils.groovy b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/LogUtils.groovy deleted file mode 100755 index 0c351ef384..0000000000 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/LogUtils.groovy +++ /dev/null @@ -1,34 +0,0 @@ -package com.blankj.api.util - -import org.gradle.api.Project -import org.gradle.api.logging.Logger - -final class LogUtils { - - private static Logger sLogger - private static String PREFIX = "PLUGIN-API >>> " - - static void init(Project project) { - sLogger = project.getLogger() - } - - static void l(Object content) { - sLogger.lifecycle(PREFIX + content) - } - - static void d(Object content) { - sLogger.debug(PREFIX + content) - } - - static void i(Object content) { - sLogger.info(PREFIX + content) - } - - static void w(Object content) { - sLogger.warn(PREFIX + content) - } - - static void e(Object content) { - sLogger.error(PREFIX + content) - } -} \ No newline at end of file diff --git a/plugin/bus-gradle-plugin/CHANGELOG.md b/plugin/bus-gradle-plugin/CHANGELOG.md index b5e650c18a..f1abc3b131 100644 --- a/plugin/bus-gradle-plugin/CHANGELOG.md +++ b/plugin/bus-gradle-plugin/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## v2.5(2020/04/29) +重构使用 base-transform + ## v2.4 去除 gradle 版本依赖的问题 diff --git a/plugin/bus-gradle-plugin/build.gradle b/plugin/bus-gradle-plugin/build.gradle index 366c5e61db..14f04d072a 100755 --- a/plugin/bus-gradle-plugin/build.gradle +++ b/plugin/bus-gradle-plugin/build.gradle @@ -1,7 +1,3 @@ -plugins { - id 'com.gradle.plugin-publish' version "0.10.0" -} - apply { plugin "groovy" plugin "java-gradle-plugin" @@ -19,6 +15,7 @@ gradlePlugin { dependencies { compileOnly Config.depConfig.plugin_gradle.dep implementation Config.depConfig.commons_io.dep + implementation Config.depConfig.plugin_lib_base_transform.dep implementation gradleApi() implementation localGroovy() @@ -34,20 +31,6 @@ sourceSets { } } -pluginBundle { - website = 'https://github.com/Blankj/AndroidUtilCode' - vcsUrl = 'https://github.com/Blankj/AndroidUtilCode.git' - description = 'Plugin for BusUtils used as EventBus.' - tags = ['gradle', 'plugin', 'bus', 'eventbus', 'BusUtils', 'asm'] - - plugins { - busPlugin { - // id is captured from java-gradle-plugin configuration - displayName = 'Plugin for BusUtils used as EventBus.' - } - } -} - apply from: "${rootDir.path}/gradle/publish.gradle" publish { name = "BusPlugin" @@ -57,6 +40,5 @@ publish { website = "https://github.com/Blankj/AndroidUtilCode" } -//./gradlew plugin:lib_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal -//./gradlew plugin:lib_bus-gradle-plugin:bintrayUpload // 上传到 jcenter -//./gradlew plugin:lib_bus-gradle-plugin:publishPlugins // 上传到 gradle 插件库中 \ No newline at end of file +//./gradlew clean plugin:plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal +//./gradlew clean plugin:plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter \ No newline at end of file diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy index b0727700bc..10eb979335 100755 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy +++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusInject.groovy @@ -1,6 +1,6 @@ package com.blankj.bus -import com.blankj.bus.util.ZipUtils +import com.blankj.base_transform.util.ZipUtils import org.apache.commons.io.FileUtils import org.objectweb.asm.ClassReader import org.objectweb.asm.ClassVisitor @@ -26,20 +26,20 @@ class BusInject { ZipUtils.zipFiles(Arrays.asList(decompressedJar.listFiles()), busUtilsTransformFile) FileUtils.forceDelete(decompressedJar) } else { - File apiUtilsFile = new File( + File busUtilsFile = new File( busUtilsTransformFile.getAbsolutePath() + Config.FILE_SEP + busUtilsClass.replace('.', Config.FILE_SEP) + '.class' ) - inject2BusUtils(apiUtilsFile, busMap, busUtilsClass) + inject2BusUtils(busUtilsFile, busMap, busUtilsClass) } } - private static void inject2BusUtils(File apiUtilsFile, Map busMap, String busUtilsClass) { - ClassReader cr = new ClassReader(apiUtilsFile.bytes); + private static void inject2BusUtils(File busUtilsFile, Map busMap, String busUtilsClass) { + ClassReader cr = new ClassReader(busUtilsFile.bytes); ClassWriter cw = new ClassWriter(cr, 0); ClassVisitor cv = new BusUtilsClassVisitor(cw, busMap, busUtilsClass); cr.accept(cv, ClassReader.SKIP_FRAMES); - FileUtils.writeByteArrayToFile(apiUtilsFile, cw.toByteArray()) + FileUtils.writeByteArrayToFile(busUtilsFile, cw.toByteArray()) } } \ No newline at end of file diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy index c06c8bf499..4a4286fe3e 100755 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy +++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusPlugin.groovy @@ -1,21 +1,133 @@ package com.blankj.bus -import com.android.build.gradle.AppExtension -import com.android.build.gradle.AppPlugin -import com.blankj.bus.util.LogUtils -import org.gradle.api.Plugin -import org.gradle.api.Project +import com.android.build.api.transform.JarInput +import com.blankj.base_transform.BaseTransformPlugin +import com.blankj.base_transform.util.JsonUtils +import org.apache.commons.io.FileUtils +import org.objectweb.asm.ClassReader +import org.objectweb.asm.ClassVisitor +import org.objectweb.asm.ClassWriter -class BusPlugin implements Plugin { +import java.util.regex.Pattern + +class BusPlugin extends BaseTransformPlugin { + + String busUtilsClass + File jsonFile + Map> busMap = [:] + File busUtilsTransformFile + + @Override + String getPluginName() { + return Config.EXT_NAME + } @Override - void apply(Project project) { - if (project.plugins.hasPlugin(AppPlugin)) { - LogUtils.init(project) - LogUtils.l('project(' + project.toString() + ') apply bus gradle plugin!') - project.extensions.create(Config.EXT_NAME, BusExtension) - def android = project.extensions.getByType(AppExtension) - android.registerTransform(new BusTransform(project)) + void onScanStarted() { + busUtilsClass = ext.busUtilsClass + if (busUtilsClass.trim().equals("")) { + throw new Exception("BusExtension's busUtilsClass is empty.") + } + + jsonFile = new File(mProject.projectDir.getAbsolutePath(), "__bus__.json") + FileUtils.write(jsonFile, "{}") + } + + @Override + boolean isIgnoreScan(JarInput input) { + def jarName = input.name + if (jarName.contains("utilcode")) { + return false + } + + if (ext.onlyScanLibRegex != null && ext.onlyScanLibRegex.trim().length() > 0) { + return !Pattern.matches(ext.onlyScanLibRegex, jarName) + } + + if (ext.jumpScanLibRegex != null && ext.jumpScanLibRegex.trim().length() > 0) { + if (Pattern.matches(ext.jumpScanLibRegex, jarName)) { + return true + } + } + + for (exclude in Config.EXCLUDE_LIBS_START_WITH) { + if (jarName.startsWith(exclude)) { + return true + } + } + return false + } + + @Override + void scanClassFile(File classFile, String className, File originScannedJarOrDir) { + if (busUtilsClass == className) { + busUtilsTransformFile = originScannedJarOrDir + log(": $originScannedJarOrDir") + } + + ClassReader cr = new ClassReader(classFile.bytes); + ClassWriter cw = new ClassWriter(cr, 0); + ClassVisitor cv = new BusClassVisitor(cw, busMap, busUtilsClass); + try { + cr.accept(cv, ClassReader.SKIP_FRAMES); + } catch (Exception ignore) { + ignore.printStackTrace() + } + } + + @Override + void onScanFinished() { + if (busUtilsTransformFile != null) { + if (busMap.isEmpty()) { + log("no bus.") + } else { + busMap.each { String tag, List infoList -> + infoList.sort(new Comparator() { + @Override + int compare(BusInfo t0, BusInfo t1) { + return t1.priority - t0.priority + } + }) + } + + Map> rightBus = [:] + Map> wrongBus = [:] + busMap.each { String tag, List infoList -> + List rightInfoString = [] + List wrongInfoString = [] + infoList.each { BusInfo info -> + if (info.isParamSizeNoMoreThanOne) { + rightInfoString.add(info.toString()) + } else { + wrongInfoString.add(info.toString()) + } + } + if (!rightInfoString.isEmpty()) { + rightBus.put(tag, rightInfoString) + } + if (!wrongInfoString.isEmpty()) { + wrongBus.put(tag, wrongInfoString) + } + } + Map busDetails = [:] + busDetails.put("BusUtilsClass", ext.busUtilsClass) + busDetails.put("rightBus", rightBus) + busDetails.put("wrongBus", wrongBus) + String busJson = JsonUtils.getFormatJson(busDetails) + log(jsonFile.toString() + ": " + busJson) + FileUtils.write(jsonFile, busJson) + + if (wrongBus.size() > 0) { + if (ext.abortOnError) { + throw new Exception("These buses is not right: " + wrongBus + + "\n u can check it in file: " + jsonFile.toString()) + } + } + + BusInject.start(busMap, busUtilsTransformFile, ext.busUtilsClass) + } + } else { + throw new Exception("No BusUtils of ${ext.busUtilsClass} in $mProject.") } } } \ No newline at end of file diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy deleted file mode 100755 index a08d53f202..0000000000 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusScan.groovy +++ /dev/null @@ -1,70 +0,0 @@ -package com.blankj.bus - -import com.blankj.bus.util.LogUtils -import com.blankj.bus.util.ZipUtils -import groovy.io.FileType -import org.apache.commons.io.FileUtils -import org.objectweb.asm.ClassReader -import org.objectweb.asm.ClassVisitor -import org.objectweb.asm.ClassWriter - -class BusScan { - - Map> busMap = [:] - File busUtilsTransformFile - String busUtilsClass - - BusScan(String busUtilsClass) { - this.busUtilsClass = busUtilsClass - } - - void scanJar(File jar) { - File tmp = new File(jar.getParent(), "temp_" + jar.getName()) - List unzipFile = ZipUtils.unzipFile(jar, tmp) - if (unzipFile != null && unzipFile.size() > 0) { - scanDir(tmp, jar) - FileUtils.forceDelete(tmp) - } - } - - void scanDir(File root) { - scanDir(root, root) - } - - void scanDir(File root, File source) { - if (!root.isDirectory()) return - String rootPath = root.getAbsolutePath() - if (!rootPath.endsWith(Config.FILE_SEP)) { - rootPath += Config.FILE_SEP - } - - root.eachFileRecurse(FileType.FILES) { File file -> - def fileName = file.name - if (!fileName.endsWith('.class') - || fileName.startsWith('R$') - || fileName == 'R.class' - || fileName == 'BuildConfig.class') { - return - } - - def filePath = file.absolutePath - def packagePath = filePath.replace(rootPath, '') - def className = packagePath.replace(Config.FILE_SEP, ".") - // delete .class - className = className.substring(0, className.length() - 6) - if (busUtilsClass == className) { - busUtilsTransformFile = source - LogUtils.l(": $source") - } - - ClassReader cr = new ClassReader(file.bytes); - ClassWriter cw = new ClassWriter(cr, 0); - ClassVisitor cv = new BusClassVisitor(cw, busMap, busUtilsClass); - try { - cr.accept(cv, ClassReader.SKIP_FRAMES); - } catch (Exception ignore) { - ignore.printStackTrace() - } - } - } -} diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy deleted file mode 100755 index 1581a61fb7..0000000000 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/BusTransform.groovy +++ /dev/null @@ -1,180 +0,0 @@ -package com.blankj.bus - -import com.android.build.api.transform.* -import com.android.build.gradle.internal.pipeline.TransformManager -import com.blankj.bus.util.JsonUtils -import com.blankj.bus.util.LogUtils -import org.apache.commons.io.FileUtils -import org.gradle.api.Project - -import java.util.regex.Pattern - -class BusTransform extends Transform { - - Project mProject; - - BusTransform(Project project) { - mProject = project - } - - @Override - String getName() { - return "busTransform" - } - - @Override - Set getInputTypes() { - return TransformManager.CONTENT_CLASS - } - - @Override - Set getScopes() { - return TransformManager.SCOPE_FULL_PROJECT - } - - @Override - boolean isIncremental() { - return false - } - - @Override - void transform(TransformInvocation transformInvocation) - throws TransformException, InterruptedException, IOException { - super.transform(transformInvocation) - LogUtils.l(getName() + " started") - long stTime = System.currentTimeMillis() - - def ext = mProject[Config.EXT_NAME] as BusExtension - LogUtils.l("busExtension: $ext") - if (ext.busUtilsClass.trim().equals("")) { - throw new Exception("BusExtension's busUtilsClass is empty.") - } - File jsonFile = new File(mProject.projectDir.getAbsolutePath(), "__bus__.json") - FileUtils.write(jsonFile, "{}") - - def inputs = transformInvocation.getInputs() - def referencedInputs = transformInvocation.getReferencedInputs() - def outputProvider = transformInvocation.getOutputProvider() - def isIncremental = transformInvocation.isIncremental() - - outputProvider.deleteAll() - - BusScan busScan = new BusScan(ext.busUtilsClass) - - inputs.each { TransformInput input -> - input.directoryInputs.each { DirectoryInput dirInput ->// 遍历文件夹 - File dir = dirInput.file - - def dest = outputProvider.getContentLocation( - dirInput.name, - dirInput.contentTypes, - dirInput.scopes, - Format.DIRECTORY - ) - FileUtils.copyDirectory(dir, dest) - - LogUtils.l("scan dir: ${dirInput.file} -> $dest") - - busScan.scanDir(dest) - } - input.jarInputs.each { JarInput jarInput ->// 遍历 jar 文件 - File jar = jarInput.file - - def jarName = jarInput.name - def dest = outputProvider.getContentLocation( - jarName, - jarInput.contentTypes, - jarInput.scopes, - Format.JAR - ) - FileUtils.copyFile(jar, dest) - - if (jumpScan(jarName, ext)) { - LogUtils.l("jump jar: $jarName -> $dest") - return - } - - LogUtils.l("scan jar: $jarName -> $dest") - busScan.scanJar(dest) - } - } - - if (busScan.busUtilsTransformFile != null) { - if (busScan.busMap.isEmpty()) { - LogUtils.l("no bus.") - } else { - busScan.busMap.each { String tag, List infoList -> - infoList.sort(new Comparator() { - @Override - int compare(BusInfo t0, BusInfo t1) { - return t1.priority - t0.priority - } - }) - } - - Map> rightBus = [:] - Map> wrongBus = [:] - busScan.busMap.each { String tag, List infoList -> - List rightInfoString = [] - List wrongInfoString = [] - infoList.each { BusInfo info -> - if (info.isParamSizeNoMoreThanOne) { - rightInfoString.add(info.toString()) - } else { - wrongInfoString.add(info.toString()) - } - } - if (!rightInfoString.isEmpty()) { - rightBus.put(tag, rightInfoString) - } - if (!wrongInfoString.isEmpty()) { - wrongBus.put(tag, wrongInfoString) - } - } - Map busDetails = [:] - busDetails.put("BusUtilsClass", ext.busUtilsClass) - busDetails.put("rightBus", rightBus) - busDetails.put("wrongBus", wrongBus) - String busJson = JsonUtils.getFormatJson(busDetails) - LogUtils.l(jsonFile.toString() + ": " + busJson) - FileUtils.write(jsonFile, busJson) - - if (wrongBus.size() > 0) { - if (ext.abortOnError) { - throw new Exception("These buses is not right: " + wrongBus + - "\n u can check it in file: " + jsonFile.toString()) - } - } - - BusInject.start(busScan.busMap, busScan.busUtilsTransformFile, ext.busUtilsClass) - } - } else { - throw new Exception("No BusUtils of ${ext.busUtilsClass} in $mProject.") - } - - LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms") - } - - private static jumpScan(String jarName, BusExtension ext) { - if (jarName.contains("utilcode")) { - return false - } - - if (ext.onlyScanLibRegex != null && ext.onlyScanLibRegex.trim().length() > 0) { - return !Pattern.matches(ext.onlyScanLibRegex, jarName) - } - - if (ext.jumpScanLibRegex != null && ext.jumpScanLibRegex.trim().length() > 0) { - if (Pattern.matches(ext.jumpScanLibRegex, jarName)) { - return true - } - } - - for (exclude in Config.EXCLUDE_LIBS_START_WITH) { - if (jarName.startsWith(exclude)) { - return true - } - } - return false - } -} \ No newline at end of file diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy index e52424affa..a17b1c9c55 100755 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy +++ b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/Config.groovy @@ -1,5 +1,7 @@ package com.blankj.bus +import com.blankj.base_transform.BaseTransformConfig + class Config { public static final String EXT_NAME = 'bus' @@ -15,5 +17,5 @@ class Config { 'com.github.bumptech.glide' ] - public static final String FILE_SEP = System.getProperty("file.separator") + public static final String FILE_SEP = BaseTransformConfig.FILE_SEP } diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/LogUtils.groovy b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/LogUtils.groovy deleted file mode 100755 index 0e2ecb8b95..0000000000 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/LogUtils.groovy +++ /dev/null @@ -1,34 +0,0 @@ -package com.blankj.bus.util - -import org.gradle.api.Project -import org.gradle.api.logging.Logger - -final class LogUtils { - - private static Logger sLogger - private static String PREFIX = "PLUGIN-BUS >>> " - - static void init(Project project) { - sLogger = project.getLogger() - } - - static void l(Object content) { - sLogger.lifecycle(PREFIX + content) - } - - static void d(Object content) { - sLogger.debug(PREFIX + content) - } - - static void i(Object content) { - sLogger.info(PREFIX + content) - } - - static void w(Object content) { - sLogger.warn(PREFIX + content) - } - - static void e(Object content) { - sLogger.error(PREFIX + content) - } -} \ No newline at end of file diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/ZipUtils.java b/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/ZipUtils.java deleted file mode 100755 index 888a8d46c0..0000000000 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/ZipUtils.java +++ /dev/null @@ -1,453 +0,0 @@ -package com.blankj.bus.util; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.zip.ZipOutputStream; - -/** - *
    - *     author: Blankj
    - *     blog  : http://blankj.com
    - *     time  : 2016/08/27
    - *     desc  : utils about zip or jar
    - * 
    - */ -public final class ZipUtils { - - private static final int BUFFER_LEN = 8192; - - private ZipUtils() { - throw new UnsupportedOperationException("u can't instantiate me..."); - } - - /** - * Zip the files. - * - * @param srcFiles The source of files. - * @param zipFilePath The path of ZIP file. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFiles(final Collection srcFiles, - final String zipFilePath) - throws IOException { - return zipFiles(srcFiles, zipFilePath, null); - } - - /** - * Zip the files. - * - * @param srcFilePaths The paths of source files. - * @param zipFilePath The path of ZIP file. - * @param comment The comment. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFiles(final Collection srcFilePaths, - final String zipFilePath, - final String comment) - throws IOException { - if (srcFilePaths == null || zipFilePath == null) return false; - ZipOutputStream zos = null; - try { - zos = new ZipOutputStream(new FileOutputStream(zipFilePath)); - for (String srcFile : srcFilePaths) { - if (!zipFile(getFileByPath(srcFile), "", zos, comment)) return false; - } - return true; - } finally { - if (zos != null) { - zos.finish(); - zos.close(); - } - } - } - - /** - * Zip the files. - * - * @param srcFiles The source of files. - * @param zipFile The ZIP file. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFiles(final Collection srcFiles, final File zipFile) - throws IOException { - return zipFiles(srcFiles, zipFile, null); - } - - /** - * Zip the files. - * - * @param srcFiles The source of files. - * @param zipFile The ZIP file. - * @param comment The comment. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFiles(final Collection srcFiles, - final File zipFile, - final String comment) - throws IOException { - if (srcFiles == null || zipFile == null) return false; - ZipOutputStream zos = null; - try { - zos = new ZipOutputStream(new FileOutputStream(zipFile)); - for (File srcFile : srcFiles) { - if (!zipFile(srcFile, "", zos, comment)) return false; - } - return true; - } finally { - if (zos != null) { - zos.finish(); - zos.close(); - } - } - } - - /** - * Zip the file. - * - * @param srcFilePath The path of source file. - * @param zipFilePath The path of ZIP file. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFile(final String srcFilePath, - final String zipFilePath) - throws IOException { - return zipFile(getFileByPath(srcFilePath), getFileByPath(zipFilePath), null); - } - - /** - * Zip the file. - * - * @param srcFilePath The path of source file. - * @param zipFilePath The path of ZIP file. - * @param comment The comment. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFile(final String srcFilePath, - final String zipFilePath, - final String comment) - throws IOException { - return zipFile(getFileByPath(srcFilePath), getFileByPath(zipFilePath), comment); - } - - /** - * Zip the file. - * - * @param srcFile The source of file. - * @param zipFile The ZIP file. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFile(final File srcFile, - final File zipFile) - throws IOException { - return zipFile(srcFile, zipFile, null); - } - - /** - * Zip the file. - * - * @param srcFile The source of file. - * @param zipFile The ZIP file. - * @param comment The comment. - * @return {@code true}: success
    {@code false}: fail - * @throws IOException if an I/O error has occurred - */ - public static boolean zipFile(final File srcFile, - final File zipFile, - final String comment) - throws IOException { - if (srcFile == null || zipFile == null) return false; - ZipOutputStream zos = null; - try { - zos = new ZipOutputStream(new FileOutputStream(zipFile)); - return zipFile(srcFile, "", zos, comment); - } finally { - if (zos != null) { - zos.close(); - } - } - } - - private static boolean zipFile(final File srcFile, - String rootPath, - final ZipOutputStream zos, - final String comment) - throws IOException { - rootPath = rootPath + (isSpace(rootPath) ? "" : File.separator) + srcFile.getName(); - if (srcFile.isDirectory()) { - File[] fileList = srcFile.listFiles(); - if (fileList == null || fileList.length <= 0) { - ZipEntry entry = new ZipEntry(rootPath + '/'); - entry.setComment(comment); - zos.putNextEntry(entry); - zos.closeEntry(); - } else { - for (File file : fileList) { - if (!zipFile(file, rootPath, zos, comment)) return false; - } - } - } else { - InputStream is = null; - try { - is = new BufferedInputStream(new FileInputStream(srcFile)); - ZipEntry entry = new ZipEntry(rootPath); - entry.setComment(comment); - zos.putNextEntry(entry); - byte buffer[] = new byte[BUFFER_LEN]; - int len; - while ((len = is.read(buffer, 0, BUFFER_LEN)) != -1) { - zos.write(buffer, 0, len); - } - zos.closeEntry(); - } finally { - if (is != null) { - is.close(); - } - } - } - return true; - } - - /** - * Unzip the file. - * - * @param zipFilePath The path of ZIP file. - * @param destDirPath The path of destination directory. - * @return the unzipped files - * @throws IOException if unzip unsuccessfully - */ - public static List unzipFile(final String zipFilePath, - final String destDirPath) - throws IOException { - return unzipFileByKeyword(zipFilePath, destDirPath, null); - } - - /** - * Unzip the file. - * - * @param zipFile The ZIP file. - * @param destDir The destination directory. - * @return the unzipped files - * @throws IOException if unzip unsuccessfully - */ - public static List unzipFile(final File zipFile, - final File destDir) - throws IOException { - return unzipFileByKeyword(zipFile, destDir, null); - } - - /** - * Unzip the file by keyword. - * - * @param zipFilePath The path of ZIP file. - * @param destDirPath The path of destination directory. - * @param keyword The keyboard. - * @return the unzipped files - * @throws IOException if unzip unsuccessfully - */ - public static List unzipFileByKeyword(final String zipFilePath, - final String destDirPath, - final String keyword) - throws IOException { - return unzipFileByKeyword(getFileByPath(zipFilePath), getFileByPath(destDirPath), keyword); - } - - /** - * Unzip the file by keyword. - * - * @param zipFile The ZIP file. - * @param destDir The destination directory. - * @param keyword The keyboard. - * @return the unzipped files - * @throws IOException if unzip unsuccessfully - */ - public static List unzipFileByKeyword(final File zipFile, - final File destDir, - final String keyword) - throws IOException { - if (zipFile == null || destDir == null) return null; - List files = new ArrayList<>(); - ZipFile zip = new ZipFile(zipFile); - Enumeration entries = zip.entries(); - try { - if (isSpace(keyword)) { - while (entries.hasMoreElements()) { - ZipEntry entry = ((ZipEntry) entries.nextElement()); - String entryName = entry.getName(); - if (entryName.contains("../")) { - System.err.println("entryName: " + entryName + " is dangerous!"); - continue; - } - if (!unzipChildFile(destDir, files, zip, entry, entryName)) return files; - } - } else { - while (entries.hasMoreElements()) { - ZipEntry entry = ((ZipEntry) entries.nextElement()); - String entryName = entry.getName(); - if (entryName.contains("../")) { - System.out.println("entryName: " + entryName + " is dangerous!"); - continue; - } - if (entryName.contains(keyword)) { - if (!unzipChildFile(destDir, files, zip, entry, entryName)) return files; - } - } - } - } finally { - zip.close(); - } - return files; - } - - private static boolean unzipChildFile(final File destDir, - final List files, - final ZipFile zip, - final ZipEntry entry, - final String name) throws IOException { - File file = new File(destDir, name); - files.add(file); - if (entry.isDirectory()) { - return createOrExistsDir(file); - } else { - if (!createOrExistsFile(file)) return false; - InputStream in = null; - OutputStream out = null; - try { - in = new BufferedInputStream(zip.getInputStream(entry)); - out = new BufferedOutputStream(new FileOutputStream(file)); - byte buffer[] = new byte[BUFFER_LEN]; - int len; - while ((len = in.read(buffer)) != -1) { - out.write(buffer, 0, len); - } - } finally { - if (in != null) { - in.close(); - } - if (out != null) { - out.close(); - } - } - } - return true; - } - - /** - * Return the files' path in ZIP file. - * - * @param zipFilePath The path of ZIP file. - * @return the files' path in ZIP file - * @throws IOException if an I/O error has occurred - */ - public static List getFilesPath(final String zipFilePath) - throws IOException { - return getFilesPath(getFileByPath(zipFilePath)); - } - - /** - * Return the files' path in ZIP file. - * - * @param zipFile The ZIP file. - * @return the files' path in ZIP file - * @throws IOException if an I/O error has occurred - */ - public static List getFilesPath(final File zipFile) - throws IOException { - if (zipFile == null) return null; - List paths = new ArrayList<>(); - ZipFile zip = new ZipFile(zipFile); - Enumeration entries = zip.entries(); - while (entries.hasMoreElements()) { - String entryName = ((ZipEntry) entries.nextElement()).getName(); - if (entryName.contains("../")) { - System.out.println("entryName: " + entryName + " is dangerous!"); - paths.add(entryName); - } else { - paths.add(entryName); - } - } - zip.close(); - return paths; - } - - /** - * Return the files' comment in ZIP file. - * - * @param zipFilePath The path of ZIP file. - * @return the files' comment in ZIP file - * @throws IOException if an I/O error has occurred - */ - public static List getComments(final String zipFilePath) - throws IOException { - return getComments(getFileByPath(zipFilePath)); - } - - /** - * Return the files' comment in ZIP file. - * - * @param zipFile The ZIP file. - * @return the files' comment in ZIP file - * @throws IOException if an I/O error has occurred - */ - public static List getComments(final File zipFile) - throws IOException { - if (zipFile == null) return null; - List comments = new ArrayList<>(); - ZipFile zip = new ZipFile(zipFile); - Enumeration entries = zip.entries(); - while (entries.hasMoreElements()) { - ZipEntry entry = ((ZipEntry) entries.nextElement()); - comments.add(entry.getComment()); - } - zip.close(); - return comments; - } - - private static boolean createOrExistsDir(final File file) { - return file != null && (file.exists() ? file.isDirectory() : file.mkdirs()); - } - - private static boolean createOrExistsFile(final File file) { - if (file == null) return false; - if (file.exists()) return file.isFile(); - if (!createOrExistsDir(file.getParentFile())) return false; - try { - return file.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - return false; - } - } - - private static File getFileByPath(final String filePath) { - return isSpace(filePath) ? null : new File(filePath); - } - - private static boolean isSpace(final String s) { - if (s == null) return true; - for (int i = 0, len = s.length(); i < len; ++i) { - if (!Character.isWhitespace(s.charAt(i))) { - return false; - } - } - return true; - } -} diff --git a/plugin/lib/base-transform/.gitignore b/plugin/lib/base-transform/.gitignore new file mode 100755 index 0000000000..c351bdb35e --- /dev/null +++ b/plugin/lib/base-transform/.gitignore @@ -0,0 +1,2 @@ +/build +ApiUtils2333.class \ No newline at end of file diff --git a/plugin/lib/base-transform/CHANGELOG.md b/plugin/lib/base-transform/CHANGELOG.md new file mode 100644 index 0000000000..ce60000fe7 --- /dev/null +++ b/plugin/lib/base-transform/CHANGELOG.md @@ -0,0 +1,4 @@ +# Change Log + +## v1.0(2020/04/28) +发布初版本 \ No newline at end of file diff --git a/plugin/lib/base-transform/README.md b/plugin/lib/base-transform/README.md new file mode 100644 index 0000000000..a77feddcd8 --- /dev/null +++ b/plugin/lib/base-transform/README.md @@ -0,0 +1,50 @@ +# 基础 transform 库 + +## 背景 + +api 和 bus 插件存在大量重复代码,所以抽出这么一个基础 transform 库。 + + +## 使用 + +```groovy +implementation com.blankj:base-transform:1.0 +``` + +写插件直接继承 BaseTransformPlugin 即可,比如 ApiPlugin: +```groovy +class ApiPlugin extends BaseTransformPlugin { + + @Override + String getPluginName() { + // 获取插件名 + } + + @Override + void onScanStarted() { + // 扫描开始的处理 + } + + @Override + boolean isIgnoreScan(JarInput input) { + // 对 jar 包进行过滤扫描, + // 工程中的 module 就是以 : 开头的 jar 包 + // 远端仓库也是 jar 包 + } + + @Override + void scanClassFile(File classFile, String className, File originScannedJarOrDir) { + // 扫描到类文件的处理 + } + + @Override + void onScanFinished() { + // 扫描结束的处理 + } +} +``` + +更具体可以参考 ApiPlugin 及 BusPlugin 的源码。 + + +## [Change Log](https://github.com/Blankj/AndroidUtilCode/blob/master/plugin/lib/base-transform/CHANGELOG.md) \ No newline at end of file diff --git a/plugin/lib/base-transform/build.gradle b/plugin/lib/base-transform/build.gradle new file mode 100755 index 0000000000..72d0abe453 --- /dev/null +++ b/plugin/lib/base-transform/build.gradle @@ -0,0 +1,31 @@ +apply { + plugin "groovy" + plugin "java-gradle-plugin" +} + +dependencies { + compileOnly Config.depConfig.plugin_gradle.dep + implementation Config.depConfig.commons_io.dep + implementation gradleApi() + implementation localGroovy() +} + +sourceSets { + main { + groovy { + srcDirs += 'src/main/java' + } + } +} + +apply from: "${rootDir.path}/gradle/publish.gradle" +publish { + name = "BaseTransform" + groupId = Config.depConfig.plugin_lib_base_transform.groupId + artifactId = Config.depConfig.plugin_lib_base_transform.artifactId + version = Config.depConfig.plugin_lib_base_transform.version + website = "https://github.com/Blankj/AndroidUtilCode" +} + +//./gradlew clean plugin:lib:plugin_lib_base-transform:mavenLocal // 上传到本地 mavenLocal +//./gradlew clean plugin:lib:plugin_lib_base-transform:bintrayUpload // 上传到 gradle 插件库中 diff --git a/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformCallback.groovy b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformCallback.groovy new file mode 100644 index 0000000000..b1711c22d3 --- /dev/null +++ b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformCallback.groovy @@ -0,0 +1,15 @@ +package com.blankj.base_transform + +import com.android.build.api.transform.JarInput + +interface BaseTransformCallback { + String getPluginName(); + + void onScanStarted(); + + boolean isIgnoreScan(JarInput input); + + void scanClassFile(File classFile, String className, File originScannedJarOrDir); + + void onScanFinished(); +} \ No newline at end of file diff --git a/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformConfig.groovy b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformConfig.groovy new file mode 100755 index 0000000000..bed4381be2 --- /dev/null +++ b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformConfig.groovy @@ -0,0 +1,5 @@ +package com.blankj.base_transform + +class BaseTransformConfig { + public static final String FILE_SEP = System.getProperty("file.separator") +} \ No newline at end of file diff --git a/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformPlugin.groovy b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformPlugin.groovy new file mode 100755 index 0000000000..ba7869c066 --- /dev/null +++ b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/BaseTransformPlugin.groovy @@ -0,0 +1,162 @@ +package com.blankj.base_transform + +import com.android.build.api.transform.* +import com.android.build.gradle.AppExtension +import com.android.build.gradle.AppPlugin +import com.android.build.gradle.internal.pipeline.TransformManager +import com.blankj.base_transform.util.LogUtils +import com.blankj.base_transform.util.ZipUtils +import groovy.io.FileType +import org.apache.commons.io.FileUtils +import org.gradle.api.Plugin +import org.gradle.api.Project + +import java.lang.reflect.ParameterizedType + +abstract class BaseTransformPlugin implements Plugin, BaseTransformCallback { + + Project mProject + + T getExt() { + return mProject.getExtensions().getByName(getPluginName()) + } + + @Override + void apply(Project project) { + if (project.plugins.hasPlugin(AppPlugin)) { + mProject = project + LogUtils.init(project) + log('project(' + project.toString() + ') apply ' + getPluginName() + ' gradle plugin!') + project.extensions.create(getPluginName(), getGenericClass()) + def android = project.extensions.getByType(AppExtension) + android.registerTransform(new BaseTransform()) + } + } + + Class getGenericClass() { + return ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0] + } + + class BaseTransform extends Transform { + + @Override + String getName() { + return "${getPluginName()}Transform" + } + + @Override + Set getInputTypes() { + return TransformManager.CONTENT_CLASS + } + + @Override + Set getScopes() { + return TransformManager.SCOPE_FULL_PROJECT + } + + @Override + boolean isIncremental() { + return false + } + + @Override + void transform(TransformInvocation transformInvocation) + throws TransformException, InterruptedException, IOException { + super.transform(transformInvocation) + log(getName() + " started") + long stTime = System.currentTimeMillis() + + def inputs = transformInvocation.getInputs() + def referencedInputs = transformInvocation.getReferencedInputs() + def outputProvider = transformInvocation.getOutputProvider() + def isIncremental = transformInvocation.isIncremental() + outputProvider.deleteAll() + + log("${getPluginName()}Extension: $ext") + onScanStarted() + + inputs.each { TransformInput input -> + input.directoryInputs.each { DirectoryInput dirInput ->// 遍历文件夹 + File dir = dirInput.file + File dest = outputProvider.getContentLocation( + dirInput.name, + dirInput.contentTypes, + dirInput.scopes, + Format.DIRECTORY + ) + FileUtils.copyDirectory(dir, dest) + + log("scan dir: ${dirInput.file} -> $dest") + scanDir(dest) + } + input.jarInputs.each { JarInput jarInput ->// 遍历 jar 文件 + File jar = jarInput.file + + def jarName = jarInput.name + def dest = outputProvider.getContentLocation( + jarName, + jarInput.contentTypes, + jarInput.scopes, + Format.JAR + ) + FileUtils.copyFile(jar, dest) + + if (isIgnoreScan(jarInput)) { + log("jump jar: $jarName -> $dest") + return + } + + log("scan jar: $jarName -> $dest") + scanJar(dest) + } + } + + onScanFinished() + log(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms") + } + + + void scanJar(File jar) { + File tmp = new File(jar.getParent(), "temp_" + jar.getName()) + List unzipFile = ZipUtils.unzipFile(jar, tmp) + if (unzipFile != null && unzipFile.size() > 0) { + scanDir(tmp, jar) + FileUtils.forceDelete(tmp) + } + } + + void scanDir(File root) { + scanDir(root, root) + } + + void scanDir(File dir, File originScannedJarOrDir) { + if (!dir.isDirectory()) return + String rootPath = dir.getAbsolutePath() + if (!rootPath.endsWith(BaseTransformConfig.FILE_SEP)) { + rootPath += BaseTransformConfig.FILE_SEP + } + + dir.eachFileRecurse(FileType.FILES) { File file -> + def fileName = file.name + if (!fileName.endsWith('.class') + || fileName.startsWith('R$') + || fileName == 'R.class' + || fileName == 'BuildConfig.class') { + return + } + + def filePath = file.absolutePath + def packagePath = filePath.replace(rootPath, '') + def className = packagePath.replace(BaseTransformConfig.FILE_SEP, ".") + // delete .class + className = className.substring(0, className.length() - 6) + + scanClassFile(file, className, originScannedJarOrDir) + } + } + } + + void log(Object obj) { + LogUtils.l(getPluginName(), obj) + } +} \ No newline at end of file diff --git a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/JsonUtils.groovy b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/JsonUtils.groovy similarity index 90% rename from plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/JsonUtils.groovy rename to plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/JsonUtils.groovy index faf0c80aa3..c69277b90b 100755 --- a/plugin/bus-gradle-plugin/src/main/java/com/blankj/bus/util/JsonUtils.groovy +++ b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/JsonUtils.groovy @@ -1,4 +1,4 @@ -package com.blankj.bus.util +package com.blankj.base_transform.util import com.google.gson.Gson import com.google.gson.GsonBuilder diff --git a/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/LogUtils.groovy b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/LogUtils.groovy new file mode 100755 index 0000000000..200bfea932 --- /dev/null +++ b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/LogUtils.groovy @@ -0,0 +1,60 @@ +package com.blankj.base_transform.util + +import org.gradle.api.Project +import org.gradle.api.logging.Logger + +final class LogUtils { + + private static Logger sLogger + + static void init(Project project) { + sLogger = project.getLogger() + } + + static void l(Object content) { + l("", content) + } + + static void d(Object content) { + d("", content) + } + + static void i(Object content) { + i("", content) + } + + static void w(Object content) { + w("", content) + } + + static void e(Object content) { + e("", content) + } + + static void l(String tag, Object content) { + sLogger.lifecycle(getTag(tag) + content) + } + + static void d(String tag, Object content) { + sLogger.debug(getTag(tag) + content) + } + + static void i(String tag, Object content) { + sLogger.info(getTag(tag) + content) + } + + static void w(String tag, Object content) { + sLogger.warn(getTag(tag) + content) + } + + static void e(String tag, Object content) { + sLogger.error(getTag(tag) + content) + } + + private static String getTag(String tag) { + if (tag == null || tag.isEmpty()) { + return "LogUtils >>> " + } + return tag + " >>> " + } +} \ No newline at end of file diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/ZipUtils.java b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/ZipUtils.java similarity index 99% rename from plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/ZipUtils.java rename to plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/ZipUtils.java index 7b44fdf9d8..74aba1a98a 100755 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/util/ZipUtils.java +++ b/plugin/lib/base-transform/src/main/java/com/blankj/base_transform/util/ZipUtils.java @@ -1,4 +1,4 @@ -package com.blankj.api.util; +package com.blankj.base_transform.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; From 7145da0408a6f5ed8f0bbd531245750eb1a1c75d Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 5 May 2020 02:24:34 +0800 Subject: [PATCH 058/122] see 05/05 log --- buildSrc/src/main/groovy/Config.groovy | 8 ++++---- lib/base/build.gradle | 8 ++++---- lib/subutil/build.gradle | 4 ++-- lib/utilcode/build.gradle | 8 ++++---- lib/utildebug/build.gradle | 6 +++--- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index d8e41b3ca2..88b8eb9a5a 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -60,10 +60,10 @@ class Config { //./gradlew clean plugin:plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean plugin:plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter - support_appcompat : new DepConfig("androidx.appcompat:appcompat:$androidxVersion"), - support_material : new DepConfig("com.google.android.material:material:$androidxVersion"), - support_multidex : new DepConfig("com.android.support:multidex:1.0.2"), - support_constraint : new DepConfig("com.android.support.constraint:constraint-layout:1.1.3"), + androidx_appcompat : new DepConfig("androidx.appcompat:appcompat:$androidxVersion"), + androidx_material : new DepConfig("com.google.android.material:material:$androidxVersion"), + androidx_multidex : new DepConfig("androidx.multidex:multidex:2.0.0"), + androidx_constraint : new DepConfig("androidx.constraintlayout:constraintlayout:1.1.3"), kotlin : new DepConfig("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"), diff --git a/lib/base/build.gradle b/lib/base/build.gradle index 9a1ac7b329..bb7fa31573 100644 --- a/lib/base/build.gradle +++ b/lib/base/build.gradle @@ -3,10 +3,10 @@ dependencies { api Config.depConfig.lib_subutil.dep api Config.depConfig.lib_utilcode.dep - api Config.depConfig.support_appcompat.dep - api Config.depConfig.support_material.dep - api Config.depConfig.support_multidex.dep - api Config.depConfig.support_constraint.dep + api Config.depConfig.androidx_appcompat.dep + api Config.depConfig.androidx_material.dep + api Config.depConfig.androidx_multidex.dep + api Config.depConfig.androidx_constraint.dep api Config.depConfig.kotlin.dep api Config.depConfig.free_proguard.dep api Config.depConfig.swipe_panel.dep diff --git a/lib/subutil/build.gradle b/lib/subutil/build.gradle index a8798fea1b..a561916f3e 100644 --- a/lib/subutil/build.gradle +++ b/lib/subutil/build.gradle @@ -9,8 +9,8 @@ readme { } dependencies { - compileOnly Config.depConfig.support_appcompat.dep - compileOnly Config.depConfig.support_material.dep + compileOnly Config.depConfig.androidx_appcompat.dep + compileOnly Config.depConfig.androidx_material.dep compileOnly Config.depConfig.lib_utilcode.dep api(Config.depConfig.glide.dep) { exclude group: "com.android.support" diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index a3ed94861c..891f7dbf40 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -29,13 +29,13 @@ android { dependencies { implementation Config.depConfig.gson.dep - compileOnly Config.depConfig.support_appcompat.dep - compileOnly Config.depConfig.support_material.dep + compileOnly Config.depConfig.androidx_appcompat.dep + compileOnly Config.depConfig.androidx_material.dep testImplementation Config.depConfig.test_junit.dep testImplementation Config.depConfig.test_robolectric.dep - testImplementation Config.depConfig.support_appcompat.dep - testImplementation Config.depConfig.support_material.dep + testImplementation Config.depConfig.androidx_appcompat.dep + testImplementation Config.depConfig.androidx_material.dep testImplementation Config.depConfig.eventbus_lib.dep } diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle index 6e1157ef0b..82b55495b0 100644 --- a/lib/utildebug/build.gradle +++ b/lib/utildebug/build.gradle @@ -1,6 +1,6 @@ dependencies { - compileOnly Config.depConfig.support_appcompat.dep - compileOnly Config.depConfig.support_material.dep + compileOnly Config.depConfig.androidx_appcompat.dep + compileOnly Config.depConfig.androidx_material.dep implementation Config.depConfig.lib_utilcode.dep implementation Config.depConfig.swipe_panel.dep @@ -8,7 +8,7 @@ dependencies { testImplementation Config.depConfig.test_junit.dep testImplementation Config.depConfig.test_robolectric.dep - testImplementation Config.depConfig.support_appcompat.dep + testImplementation Config.depConfig.androidx_appcompat.dep } afterEvaluate { From c7190639ec44b9ff4b5b35f5580458b77abd79c7 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 5 May 2020 02:26:00 +0800 Subject: [PATCH 059/122] see 05/05 log --- buildApp.gradle | 2 +- buildSrc/src/main/groovy/Config.groovy | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/buildApp.gradle b/buildApp.gradle index 2220ed6947..8cb7de95fe 100644 --- a/buildApp.gradle +++ b/buildApp.gradle @@ -68,7 +68,7 @@ android { dependencies { // LeakCanary - debugImplementation Config.depConfig.leakcanary_android.dep + debugImplementation Config.depConfig.leakcanary.dep debugImplementation Config.depConfig.lib_utildebug.dep releaseImplementation Config.depConfig.lib_utildebug_no_op.dep diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 88b8eb9a5a..6074cf4d2e 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -20,7 +20,7 @@ class Config { // lib version static gradlePluginVersion = '3.5.2' static kotlinVersion = '1.3.50' - static androidxVersion = '1.0.0' + static androidxVersion = '1.1.0' static depConfig = [ /*Never delete this line*/ @@ -60,14 +60,14 @@ class Config { //./gradlew clean plugin:plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean plugin:plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter - androidx_appcompat : new DepConfig("androidx.appcompat:appcompat:$androidxVersion"), - androidx_material : new DepConfig("com.google.android.material:material:$androidxVersion"), - androidx_multidex : new DepConfig("androidx.multidex:multidex:2.0.0"), - androidx_constraint : new DepConfig("androidx.constraintlayout:constraintlayout:1.1.3"), + androidx_appcompat : new DepConfig("androidx.appcompat:appcompat:$androidxVersion"), + androidx_material : new DepConfig("com.google.android.material:material:$androidxVersion"), + androidx_multidex : new DepConfig("androidx.multidex:multidex:2.0.0"), + androidx_constraint : new DepConfig("androidx.constraintlayout:constraintlayout:1.1.3"), kotlin : new DepConfig("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"), - leakcanary_android : new DepConfig("com.squareup.leakcanary:leakcanary-android:2.1"), + leakcanary : new DepConfig("com.squareup.leakcanary:leakcanary-android:2.1"), free_proguard : new DepConfig("com.blankj:free-proguard:1.0.2"), swipe_panel : new DepConfig("com.blankj:swipe-panel:1.2"), From 8174076eedaffc97a7327e39639fb97edce36ade Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 5 May 2020 19:20:09 +0800 Subject: [PATCH 060/122] see 05/05 log --- buildApp.gradle | 2 +- buildSrc/src/main/groovy/Config.groovy | 2 +- .../com/blankj/utilcode/util/ToastUtils.java | 47 ++++++++++++------- .../com/blankj/utilcode/util/UtilsBridge.java | 10 ++++ 4 files changed, 43 insertions(+), 18 deletions(-) diff --git a/buildApp.gradle b/buildApp.gradle index f8b40c95b5..2fc65a6999 100644 --- a/buildApp.gradle +++ b/buildApp.gradle @@ -66,7 +66,7 @@ android { dependencies { // LeakCanary - debugImplementation Config.depConfig.leakcanary_android.dep + debugImplementation Config.depConfig.leakcanary.dep debugImplementation Config.depConfig.lib_utildebug.dep releaseImplementation Config.depConfig.lib_utildebug_no_op.dep diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 99a93fb4d8..ed15ee8d45 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -67,7 +67,7 @@ class Config { kotlin : new DepConfig("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"), - leakcanary_android : new DepConfig("com.squareup.leakcanary:leakcanary-android:2.1"), + leakcanary : new DepConfig("com.squareup.leakcanary:leakcanary-android:2.1"), free_proguard : new DepConfig("com.blankj:free-proguard:1.0.2"), swipe_panel : new DepConfig("com.blankj:swipe-panel:1.2"), diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index 0a21e80a04..f7efa53b9a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -449,15 +449,26 @@ private void realShow() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) { mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); mParams.type = WindowManager.LayoutParams.TYPE_TOAST; + } else if (UtilsBridge.isGrantedDrawOverlays()) { + mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + mParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; + } else { + mParams.type = WindowManager.LayoutParams.TYPE_PHONE; + } } else { Context topActivityOrApp = UtilsBridge.getTopActivityOrApp(); if (!(topActivityOrApp instanceof Activity)) { - Log.e("ToastUtils", "Couldn't get top Activity."); + Log.w("ToastUtils", "Couldn't get top Activity."); + // try to use system toast + new SystemToast(mToast).show(); return; } Activity topActivity = (Activity) topActivityOrApp; if (topActivity.isFinishing() || topActivity.isDestroyed()) { - Log.e("ToastUtils", topActivity + " is useless"); + Log.w("ToastUtils", topActivity + " is useless"); + // try to use system toast + new SystemToast(mToast).show(); return; } mWM = topActivity.getWindowManager(); @@ -465,9 +476,26 @@ private void realShow() { UtilsBridge.addActivityLifecycleCallbacks(topActivity, getActivityLifecycleCallbacks()); } + setToastParams(); + + try { + if (mWM != null) { + mWM.addView(mView, mParams); + } + } catch (Exception ignored) {/**/} + + UtilsBridge.runOnUiThreadDelayed(new Runnable() { + @Override + public void run() { + cancel(); + } + }, mToast.getDuration() == Toast.LENGTH_SHORT ? 2000 : 3500); + } + + private void setToastParams() { mParams.height = WindowManager.LayoutParams.WRAP_CONTENT; mParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - mParams.format = PixelFormat.TRANSLUCENT; + mParams.format = PixelFormat.TRANSPARENT; mParams.windowAnimations = android.R.style.Animation_Toast; mParams.setTitle("ToastWithoutNotification"); mParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON @@ -487,19 +515,6 @@ private void realShow() { mParams.y = mToast.getYOffset(); mParams.horizontalMargin = mToast.getHorizontalMargin(); mParams.verticalMargin = mToast.getVerticalMargin(); - - try { - if (mWM != null) { - mWM.addView(mView, mParams); - } - } catch (Exception ignored) {/**/} - - UtilsBridge.runOnUiThreadDelayed(new Runnable() { - @Override - public void run() { - cancel(); - } - }, mToast.getDuration() == Toast.LENGTH_SHORT ? 2000 : 3500); } private Utils.ActivityLifecycleCallbacks getActivityLifecycleCallbacks() { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 30e9c23acd..aa4a1d127c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -7,8 +7,10 @@ import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Build; import android.os.Parcelable; import android.support.annotation.NonNull; +import android.support.annotation.RequiresApi; import android.support.annotation.RequiresPermission; import android.view.View; @@ -399,6 +401,14 @@ static void applyLanguage(final Activity activity) { LanguageUtils.applyLanguage(activity); } + /////////////////////////////////////////////////////////////////////////// + // PermissionUtils + /////////////////////////////////////////////////////////////////////////// + @RequiresApi(api = Build.VERSION_CODES.M) + static boolean isGrantedDrawOverlays() { + return PermissionUtils.isGrantedDrawOverlays(); + } + /////////////////////////////////////////////////////////////////////////// // ProcessUtils /////////////////////////////////////////////////////////////////////////// From 50c9e9039cc01238eaa6b67f437a8a2da434b252 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 5 May 2020 19:34:20 +0800 Subject: [PATCH 061/122] see 05/05 log --- .../src/main/java/com/blankj/utilcode/util/ToastUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index f7efa53b9a..51bdcfb9ab 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -495,7 +495,7 @@ public void run() { private void setToastParams() { mParams.height = WindowManager.LayoutParams.WRAP_CONTENT; mParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - mParams.format = PixelFormat.TRANSPARENT; + mParams.format = PixelFormat.TRANSLUCENT; mParams.windowAnimations = android.R.style.Animation_Toast; mParams.setTitle("ToastWithoutNotification"); mParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON From 0c5a614954af69afbf66051c4a75060a78fa8074 Mon Sep 17 00:00:00 2001 From: Blankj Date: Thu, 7 May 2020 17:33:11 +0800 Subject: [PATCH 062/122] see 05/07 log --- .../src/main/java/com/blankj/utilcode/util/AppUtils.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index 6e96857509..d4ec2af80f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -108,11 +108,7 @@ public static boolean isAppInstalled(final String pkgName) { */ public static boolean isAppRoot() { ShellUtils.CommandResult result = UtilsBridge.execCmd("echo root", true); - if (result.result == 0) return true; - if (result.errorMsg != null) { - Log.d("AppUtils", "isAppRoot() called" + result.errorMsg); - } - return false; + return result.result == 0; } /** From e3842d2a8a5dfaf3515f8c7ac73f1d082f953d64 Mon Sep 17 00:00:00 2001 From: Blankj Date: Thu, 21 May 2020 14:06:47 +0800 Subject: [PATCH 063/122] see 05/21 log --- CHANGELOG.md | 4 + buildSrc/src/main/groovy/Config.groovy | 24 +-- buildSrc/src/main/groovy/DepConfig.groovy | 2 +- config.json | 6 +- .../feature/dangerous/DangerousActivity.kt | 14 +- .../pkg/feature/location/LocationActivity.kt | 15 +- .../blankj/subutil/pkg/helper/DialogHelper.kt | 46 ----- .../subutil/pkg/helper/PermissionHelper.kt | 59 ------ .../utilcode/pkg/feature/CoreUtilActivity.kt | 6 + .../utilcode/pkg/feature/app/AppActivity.kt | 14 +- .../feature/flashlight/FlashlightActivity.kt | 20 +- .../pkg/feature/image/ImageActivity.kt | 39 +++- .../pkg/feature/network/NetworkActivity.kt | 1 + .../feature/permission/PermissionActivity.kt | 8 +- .../pkg/feature/phone/PhoneActivity.kt | 15 +- .../utilcode/pkg/helper/DialogHelper.kt | 31 +--- .../utilcode/pkg/helper/PermissionHelper.kt | 63 ------- .../main/res/drawable/bar_status_custom.xml | 7 +- .../blankj/common/helper/PermissionHelper.kt | 82 +++++++++ lib/utilcode/README-CN.md | 6 +- lib/utilcode/README.md | 4 +- lib/utilcode/src/main/AndroidManifest.xml | 6 + .../com/blankj/utilcode/util/AppUtils.java | 39 +++- .../com/blankj/utilcode/util/FileIOUtils.java | 6 +- .../com/blankj/utilcode/util/FileUtils.java | 23 +-- .../com/blankj/utilcode/util/ImageUtils.java | 174 +++++++++++++++++- .../com/blankj/utilcode/util/IntentUtils.java | 12 +- .../blankj/utilcode/util/NetworkUtils.java | 22 +++ .../blankj/utilcode/util/PermissionUtils.java | 35 +++- .../com/blankj/utilcode/util/ToastUtils.java | 12 +- .../com/blankj/utilcode/util/UriUtils.java | 55 ++++-- .../com/blankj/utilcode/util/UtilsBridge.java | 21 +++ .../utilcode/util/UtilsTransActivity.java | 34 ++-- .../util/UtilsTransActivity4MainProcess.java | 35 ++++ plugin/api-gradle-plugin/CHANGELOG.md | 3 + plugin/api-gradle-plugin/README.md | 2 +- plugin/api-gradle-plugin/build.gradle | 4 +- plugin/bus-gradle-plugin/CHANGELOG.md | 3 + plugin/bus-gradle-plugin/README.md | 2 +- plugin/bus-gradle-plugin/build.gradle | 4 +- settings.gradle | 5 +- 41 files changed, 632 insertions(+), 331 deletions(-) delete mode 100644 feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt delete mode 100644 feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/PermissionHelper.kt delete mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/PermissionHelper.kt create mode 100644 lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity4MainProcess.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 132d7fad7b..2b2f2fa2b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +* `20/05/21` [add] Publish bus plugin v2.6. Publish api plugin v1.4. Publish. Publish 1.28.5. +* `20/05/19` [fix] FileUtils#copyOrMoveDird NPE. +* `20/05/18` [add] IntentUtils#getLaunchAppDetailsSettingsIntent support isNewTask. +* `20/05/17` [add] ImageUtils#save2Album, NetworkUtils#getSSID, UtilsTransActivity4MainProcess. * `20/05/03` [add] Publish bus plugin v2.5. Publish api plugin v1.3. Publish. Publish 1.28.4. * `20/04/30` [add] BaseItem support partialUpdate. * `20/04/29` [add] Publish plugin lib com.blankj:base-transform:1.0. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index ed15ee8d45..c8035c7f1e 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_028_002 - static versionName = '1.28.4'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_028_005 + static versionName = '1.28.5'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' @@ -25,9 +25,9 @@ class Config { static depConfig = [ /*Never delete this line*/ /*Generated by "config.json"*/ - plugin_api_gradle_plugin : new DepConfig(false, true , ":plugin:api-gradle-plugin"), - plugin_bus_gradle_plugin : new DepConfig(false, true , ":plugin:bus-gradle-plugin"), - plugin_lib_base_transform : new DepConfig(false, true , ":plugin:lib:base-transform", "com.blankj:base-transform:1.0"), + plugin_api_gradle_plugin : new DepConfig(true , true , ":plugin:api-gradle-plugin"), + plugin_bus_gradle_plugin : new DepConfig(true , true , ":plugin:bus-gradle-plugin"), + plugin_lib_base_transform : new DepConfig(true , false, ":plugin:lib:base-transform", "com.blankj:base-transform:1.0"), feature_mock : new DepConfig(false, true , ":feature:mock"), feature_launcher_app : new DepConfig(true , true , ":feature:launcher:app"), feature_main_app : new DepConfig(false, true , ":feature:main:app"), @@ -53,12 +53,12 @@ class Config { // 上传新版本插件更新 pluginPath 中的版本号,并设置 isApply = false // 通过 mavenLocal 上传本地版本,设置 isApply = true 即可应用插件来调试,最后通过 bintrayUpload 来发布插件 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.3", pluginId: "com.blankj.api"), - //./gradlew clean plugin:plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal - //./gradlew clean plugin:plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter - plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.5", pluginId: "com.blankj.bus"), - //./gradlew clean plugin:plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal - //./gradlew clean plugin:plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter + plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.4", pluginId: "com.blankj.api"), + //./gradlew clean :plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal + //./gradlew clean :plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter + plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.6", pluginId: "com.blankj.bus"), + //./gradlew clean :plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal + //./gradlew clean :plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter support_appcompat_v7 : new DepConfig("com.android.support:appcompat-v7:$supportVersion"), support_design : new DepConfig("com.android.support:design:$supportVersion"), @@ -86,4 +86,4 @@ class Config { test_robolectric : new DepConfig("org.robolectric:robolectric:4.3.1"), ] } -//./gradlew clean lib:lib_utilcode:bintrayUpload \ No newline at end of file +//./gradlew clean :lib_utilcode:bintrayUpload \ No newline at end of file diff --git a/buildSrc/src/main/groovy/DepConfig.groovy b/buildSrc/src/main/groovy/DepConfig.groovy index 8b8ecccf27..042b67036d 100644 --- a/buildSrc/src/main/groovy/DepConfig.groovy +++ b/buildSrc/src/main/groovy/DepConfig.groovy @@ -76,7 +76,7 @@ class DepConfig { } String getProjectPath() { - return localPath.substring(0, localPath.lastIndexOf(":")) + ":" + localPath.substring(1).replace(":", "_") + return ":" + localPath.substring(1).replace(":", "_") } @Override diff --git a/config.json b/config.json index 5f5ff16fdd..1ed59b5d2f 100644 --- a/config.json +++ b/config.json @@ -5,9 +5,9 @@ "pkgConfig": [], "proConfigDesc": "proConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig", "proConfig": [ - {"isApply": false, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, - {"isApply": false, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, - {"isApply": false, "useLocal": true, "localPath": ":plugin:lib:base-transform", "remotePath": "com.blankj:base-transform:1.0"}, + {"isApply": true, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, + {"isApply": true, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, + {"isApply": true, "useLocal": false, "localPath": ":plugin:lib:base-transform", "remotePath": "com.blankj:base-transform:1.0"}, {"isApply": true, "useLocal": true, "localPath": ":feature:mock"}, {"isApply": true, "useLocal": true, "localPath": ":feature:launcher:app"}, {"isApply": true, "useLocal": true, "localPath": ":feature:main:app"}, diff --git a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt index 48b770be13..8e0183c991 100644 --- a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt +++ b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt @@ -3,13 +3,14 @@ package com.blankj.subutil.pkg.feature.dangerous import android.content.Context import android.content.Intent import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemSwitch import com.blankj.subutil.pkg.Config import com.blankj.subutil.pkg.R -import com.blankj.subutil.pkg.helper.PermissionHelper import com.blankj.subutil.util.DangerousUtils +import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.util.* /** @@ -24,16 +25,15 @@ class DangerousActivity : CommonActivity() { companion object { fun start(context: Context) { - PermissionHelper.requestStorageAndSms(context, object : PermissionHelper.OnPermissionGrantedListener { - override fun onPermissionGranted() { + PermissionHelper.request(context, object : PermissionUtils.SimpleCallback { + override fun onGranted() { val starter = Intent(context, DangerousActivity::class.java) context.startActivity(starter) } - }, object : PermissionHelper.OnPermissionDeniedListener { - override fun onPermissionDenied() { - start(context) + + override fun onDenied() { } - }) + }, PermissionConstants.STORAGE, PermissionConstants.SMS) } } diff --git a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt index 120d72a4b8..88e55b23f2 100755 --- a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt +++ b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt @@ -6,11 +6,13 @@ import android.content.Intent import android.content.ServiceConnection import android.os.IBinder import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemTitle import com.blankj.subutil.pkg.R -import com.blankj.subutil.pkg.helper.PermissionHelper +import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.util.CollectionUtils +import com.blankj.utilcode.util.PermissionUtils /** * ``` @@ -24,16 +26,15 @@ class LocationActivity : CommonActivity() { companion object { fun start(context: Context) { - PermissionHelper.requestLocation(context, object : PermissionHelper.OnPermissionGrantedListener { - override fun onPermissionGranted() { + PermissionHelper.request(context, object : PermissionUtils.SimpleCallback { + override fun onGranted() { val starter = Intent(context, LocationActivity::class.java) context.startActivity(starter) } - }, object : PermissionHelper.OnPermissionDeniedListener { - override fun onPermissionDenied() { - start(context) + + override fun onDenied() { } - }) + }, PermissionConstants.LOCATION) } } diff --git a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt deleted file mode 100644 index 9d187b3fef..0000000000 --- a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/DialogHelper.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.blankj.subutil.pkg.helper - -import android.content.Context -import android.util.Pair -import android.view.View -import com.blankj.common.dialog.CommonDialogContent -import com.blankj.subutil.pkg.R -import com.blankj.utilcode.util.PermissionUtils -import com.blankj.utilcode.util.PermissionUtils.OnRationaleListener.ShouldRequest -import com.blankj.utilcode.util.StringUtils - -/** - * ``` - * author: Blankj - * blog : http://blankj.com - * time : 2018/01/10 - * desc : helper about dialog - * ``` - */ -object DialogHelper { - - fun showRationaleDialog(context: Context, shouldRequest: ShouldRequest) { - CommonDialogContent().init(context, - StringUtils.getString(android.R.string.dialog_alert_title), - StringUtils.getString(R.string.permission_rationale_message), - Pair(StringUtils.getString(android.R.string.ok), View.OnClickListener { - shouldRequest.again(true) - }), - Pair(StringUtils.getString(android.R.string.cancel), View.OnClickListener { - shouldRequest.again(false) - })) - .show() - } - - fun showOpenAppSettingDialog(context: Context) { - CommonDialogContent().init(context, - StringUtils.getString(android.R.string.dialog_alert_title), - StringUtils.getString(R.string.permission_denied_forever_message), - Pair(StringUtils.getString(android.R.string.ok), View.OnClickListener { - PermissionUtils.launchAppDetailsSettings() - }), - Pair(StringUtils.getString(android.R.string.cancel), View.OnClickListener { - })) - .show() - } -} diff --git a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/PermissionHelper.kt b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/PermissionHelper.kt deleted file mode 100644 index 0a87cfcf55..0000000000 --- a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/helper/PermissionHelper.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.blankj.subutil.pkg.helper - -import android.content.Context -import com.blankj.utilcode.constant.PermissionConstants -import com.blankj.utilcode.util.LogUtils -import com.blankj.utilcode.util.PermissionUtils - -/** - * ``` - * author: Blankj - * blog : http://blankj.com - * time : 2018/01/06 - * desc : helper about permission - * ``` - */ -object PermissionHelper { - - fun requestStorageAndSms(context: Context, listener: OnPermissionGrantedListener, - deniedListener: OnPermissionDeniedListener) { - request(context, listener, deniedListener, PermissionConstants.STORAGE, PermissionConstants.SMS) - } - - fun requestLocation(context: Context, listener: OnPermissionGrantedListener, - deniedListener: OnPermissionDeniedListener) { - request(context, listener, deniedListener, PermissionConstants.LOCATION) - } - - private fun request(context: Context, - grantedListener: OnPermissionGrantedListener?, - deniedListener: OnPermissionDeniedListener?, - @PermissionConstants.Permission vararg permissions: String) { - PermissionUtils.permission(*permissions) - .rationale { activity, shouldRequest -> DialogHelper.showRationaleDialog(activity, shouldRequest) } - .callback(object : PermissionUtils.FullCallback { - override fun onGranted(permissionsGranted: List) { - LogUtils.d(permissionsGranted) - grantedListener?.onPermissionGranted() - } - - override fun onDenied(permissionsDeniedForever: List, permissionsDenied: List) { - LogUtils.d(permissionsDeniedForever, permissionsDenied) - if (!permissionsDeniedForever.isEmpty()) { - DialogHelper.showOpenAppSettingDialog(context) - return - } - deniedListener?.onPermissionDenied() - } - }) - .request() - } - - interface OnPermissionGrantedListener { - fun onPermissionGranted() - } - - interface OnPermissionDeniedListener { - fun onPermissionDenied() - } -} diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt index 5ecbb945e7..793778536d 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt @@ -47,6 +47,7 @@ import com.blankj.utilcode.pkg.feature.toast.ToastActivity import com.blankj.utilcode.pkg.feature.uiMessage.UiMessageActivity import com.blankj.utilcode.pkg.feature.vibrate.VibrateActivity import com.blankj.utilcode.util.CollectionUtils +import com.blankj.utilcode.util.LogUtils import com.blankj.utilcode.util.UtilsTransActivity /** @@ -200,4 +201,9 @@ class CoreUtilActivity : CommonActivity() { } ) } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + LogUtils.e(requestCode, requestCode) + } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt index a6afa9b58a..f835845e6f 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt @@ -3,13 +3,14 @@ package com.blankj.utilcode.pkg.feature.app import android.content.Context import android.content.Intent import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemImage import com.blankj.common.item.CommonItemTitle +import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.pkg.Config import com.blankj.utilcode.pkg.R -import com.blankj.utilcode.pkg.helper.PermissionHelper import com.blankj.utilcode.util.* /** @@ -24,16 +25,15 @@ class AppActivity : CommonActivity() { companion object { fun start(context: Context) { - PermissionHelper.requestStorage(context, object : PermissionHelper.OnPermissionGrantedListener { - override fun onPermissionGranted() { + PermissionHelper.request(context, object : PermissionUtils.SimpleCallback { + override fun onGranted() { val starter = Intent(context, AppActivity::class.java) context.startActivity(starter) } - }, object : PermissionHelper.OnPermissionDeniedListener { - override fun onPermissionDenied() { - start(context) + + override fun onDenied() { } - }) + }, PermissionConstants.STORAGE) } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt index e7e8e476a1..dbfa38083c 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt @@ -3,15 +3,13 @@ package com.blankj.utilcode.pkg.feature.flashlight import android.content.Context import android.content.Intent import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemSwitch import com.blankj.common.item.CommonItemTitle +import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.pkg.R -import com.blankj.utilcode.pkg.helper.PermissionHelper -import com.blankj.utilcode.util.CollectionUtils -import com.blankj.utilcode.util.FlashlightUtils -import com.blankj.utilcode.util.ToastUtils -import com.blankj.utilcode.util.Utils +import com.blankj.utilcode.util.* /** * ``` @@ -29,16 +27,16 @@ class FlashlightActivity : CommonActivity() { ToastUtils.showLong("Didn't support flashlight.") return } - PermissionHelper.requestCamera(context, object : PermissionHelper.OnPermissionGrantedListener { - override fun onPermissionGranted() { + PermissionHelper.request(context, object : PermissionUtils.SimpleCallback { + override fun onGranted() { val starter = Intent(context, FlashlightActivity::class.java) context.startActivity(starter) } - }, object : PermissionHelper.OnPermissionDeniedListener { - override fun onPermissionDenied() { - start(context) + + override fun onDenied() { + LogUtils.e("permission denied") } - }) + }, PermissionConstants.CAMERA) } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt index 40fc81016b..5035274ad9 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt @@ -8,13 +8,16 @@ import android.os.Build import android.os.Bundle import android.view.View import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemImage import com.blankj.common.item.CommonItemTitle +import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.pkg.Config import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.* +import java.io.File import java.util.* /** @@ -32,8 +35,15 @@ class ImageActivity : CommonActivity() { companion object { fun start(context: Context) { - val starter = Intent(context, ImageActivity::class.java) - context.startActivity(starter) + PermissionHelper.request(context, object : PermissionUtils.SimpleCallback { + override fun onGranted() { + val starter = Intent(context, ImageActivity::class.java) + context.startActivity(starter) + } + + override fun onDenied() { + } + }, PermissionConstants.STORAGE) } } @@ -79,10 +89,31 @@ class ImageActivity : CommonActivity() { .apply { if (result) { setMessage("save successful.") - .showSuccess() + .showSuccess(true) + } else { + setMessage("save failed.") + .showError(true) + } + } + } + }) + }) + add(CommonItemClick("Save to Album") { + ThreadUtils.executeBySingle(object : ThreadUtils.SimpleTask() { + override fun doInBackground(): File? { + return ImageUtils.save2Album(src, Bitmap.CompressFormat.JPEG) + } + + override fun onSuccess(result: File?) { + SnackbarUtils.with(mContentView) + .setDuration(SnackbarUtils.LENGTH_LONG) + .apply { + if (result != null) { + setMessage("save successful.") + .showSuccess(true) } else { setMessage("save failed.") - .showError() + .showError(true) } } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt index 7b9ab1213e..2d39faf102 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt @@ -65,6 +65,7 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis CommonItemTitle("getGatewayByWifi", NetworkUtils.getGatewayByWifi()), CommonItemTitle("getNetMaskByWifi", NetworkUtils.getNetMaskByWifi()), CommonItemTitle("getServerAddressByWifi", NetworkUtils.getServerAddressByWifi()), + CommonItemTitle("getSSID", NetworkUtils.getSSID()), CommonItemTitle("getIPv4Address", NetworkUtils.getIPAddress(true)), CommonItemTitle("getIPv6Address", NetworkUtils.getIPAddress(false)), diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt index e7d3a90ab6..6f69405355 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt @@ -5,13 +5,13 @@ import android.content.Context import android.content.Intent import android.os.Build import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemSwitch import com.blankj.common.item.CommonItemTitle import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.pkg.R -import com.blankj.utilcode.pkg.helper.DialogHelper import com.blankj.utilcode.util.* /** @@ -106,7 +106,7 @@ class PermissionActivity : CommonActivity() { private fun requestCalendar() { PermissionUtils.permission(PermissionConstants.CALENDAR) - .rationale { activity, shouldRequest -> DialogHelper.showRationaleDialog(activity, shouldRequest) } + .rationale { activity, shouldRequest -> PermissionHelper.showRationaleDialog(activity, shouldRequest) } .callback(object : PermissionUtils.FullCallback { override fun onGranted(permissionsGranted: List) { LogUtils.d(permissionsGranted) @@ -131,7 +131,7 @@ class PermissionActivity : CommonActivity() { private fun requestRecordAudio() { PermissionUtils.permission(PermissionConstants.MICROPHONE) - .rationale { activity, shouldRequest -> DialogHelper.showRationaleDialog(activity, shouldRequest) } + .rationale { activity, shouldRequest -> PermissionHelper.showRationaleDialog(activity, shouldRequest) } .callback(object : PermissionUtils.FullCallback { override fun onGranted(permissionsGranted: List) { LogUtils.d(permissionsGranted) @@ -155,7 +155,7 @@ class PermissionActivity : CommonActivity() { private fun requestCalendarAndRecordAudio() { PermissionUtils.permission(PermissionConstants.CALENDAR, PermissionConstants.MICROPHONE) - .rationale { activity, shouldRequest -> DialogHelper.showRationaleDialog(activity, shouldRequest) } + .rationale { activity, shouldRequest -> PermissionHelper.showRationaleDialog(activity, shouldRequest) } .callback(object : PermissionUtils.FullCallback { override fun onGranted(permissionsGranted: List) { LogUtils.d(permissionsGranted) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt index df7435f651..cb453b3b89 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt @@ -3,12 +3,14 @@ package com.blankj.utilcode.pkg.feature.phone import android.content.Context import android.content.Intent import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemTitle +import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.pkg.R -import com.blankj.utilcode.pkg.helper.PermissionHelper import com.blankj.utilcode.util.CollectionUtils +import com.blankj.utilcode.util.PermissionUtils import com.blankj.utilcode.util.PhoneUtils /** @@ -23,16 +25,15 @@ class PhoneActivity : CommonActivity() { companion object { fun start(context: Context) { - PermissionHelper.requestPhone(context, object : PermissionHelper.OnPermissionGrantedListener { - override fun onPermissionGranted() { + PermissionHelper.request(context, object : PermissionUtils.SimpleCallback { + override fun onGranted() { val starter = Intent(context, PhoneActivity::class.java) context.startActivity(starter) } - }, object : PermissionHelper.OnPermissionDeniedListener { - override fun onPermissionDenied() { - start(context) + + override fun onDenied() { } - }) + }, PermissionConstants.PHONE) } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt index 623f01c95f..6643ec7806 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/DialogHelper.kt @@ -6,7 +6,6 @@ import android.graphics.Bitmap import android.graphics.drawable.ColorDrawable import android.support.v4.app.FragmentActivity import android.text.method.ScrollingMovementMethod -import android.util.Pair import android.view.Gravity import android.view.View import android.view.Window @@ -16,9 +15,11 @@ import android.widget.ImageView import android.widget.TextView import com.blankj.base.dialog.BaseDialogFragment import com.blankj.base.dialog.DialogLayoutCallback -import com.blankj.common.dialog.CommonDialogContent import com.blankj.utilcode.pkg.R -import com.blankj.utilcode.util.* +import com.blankj.utilcode.util.ActivityUtils +import com.blankj.utilcode.util.KeyboardUtils +import com.blankj.utilcode.util.ScreenUtils +import com.blankj.utilcode.util.ToastUtils /** * ``` @@ -30,30 +31,6 @@ import com.blankj.utilcode.util.* */ object DialogHelper { - fun showRationaleDialog(context: Context, shouldRequest: PermissionUtils.OnRationaleListener.ShouldRequest) { - CommonDialogContent().init(context, - StringUtils.getString(android.R.string.dialog_alert_title), - StringUtils.getString(R.string.permission_rationale_message), - Pair(StringUtils.getString(android.R.string.ok), View.OnClickListener { - shouldRequest.again(true) - }), - Pair(StringUtils.getString(android.R.string.cancel), View.OnClickListener { - shouldRequest.again(false) - })).show() - } - - fun showOpenAppSettingDialog(context: Context) { - CommonDialogContent().init(context, - StringUtils.getString(android.R.string.dialog_alert_title), - StringUtils.getString(R.string.permission_denied_forever_message), - Pair(StringUtils.getString(android.R.string.ok), View.OnClickListener { - PermissionUtils.launchAppDetailsSettings() - }), - Pair(StringUtils.getString(android.R.string.cancel), View.OnClickListener { - })) - .show() - } - fun showKeyboardDialog(context: Context) { BaseDialogFragment().init(context, object : DialogLayoutCallback { override fun bindTheme(): Int { diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/PermissionHelper.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/PermissionHelper.kt deleted file mode 100644 index 3fff3a3e6f..0000000000 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/helper/PermissionHelper.kt +++ /dev/null @@ -1,63 +0,0 @@ -package com.blankj.utilcode.pkg.helper - -import android.content.Context -import com.blankj.utilcode.constant.PermissionConstants -import com.blankj.utilcode.util.LogUtils -import com.blankj.utilcode.util.PermissionUtils - -/** - * ``` - * author: Blankj - * blog : http://blankj.com - * time : 2018/01/06 - * desc : helper about permission - * ``` - */ -object PermissionHelper { - - fun requestCamera(context: Context, listener: OnPermissionGrantedListener, - deniedListener: OnPermissionDeniedListener) { - request(context, listener, deniedListener, PermissionConstants.CAMERA) - } - - fun requestStorage(context: Context, listener: OnPermissionGrantedListener, - deniedListener: OnPermissionDeniedListener) { - request(context, listener, deniedListener, PermissionConstants.STORAGE) - } - - fun requestPhone(context: Context, listener: OnPermissionGrantedListener, - deniedListener: OnPermissionDeniedListener) { - request(context, listener, deniedListener, PermissionConstants.PHONE) - } - - private fun request(context: Context, grantedListener: OnPermissionGrantedListener, - deniedListener: OnPermissionDeniedListener, - @PermissionConstants.Permission vararg permissions: String) { - PermissionUtils.permission(*permissions) - .rationale { activity, shouldRequest -> DialogHelper.showRationaleDialog(activity, shouldRequest) } - .callback(object : PermissionUtils.FullCallback { - override fun onGranted(permissionsGranted: List) { - LogUtils.d(permissionsGranted) - grantedListener.onPermissionGranted() - } - - override fun onDenied(permissionsDeniedForever: List, permissionsDenied: List) { - LogUtils.d(permissionsDeniedForever, permissionsDenied) - if (!permissionsDeniedForever.isEmpty()) { - DialogHelper.showOpenAppSettingDialog(context) - return - } - deniedListener.onPermissionDenied() - } - }) - .request() - } - - interface OnPermissionGrantedListener { - fun onPermissionGranted() - } - - interface OnPermissionDeniedListener { - fun onPermissionDenied() - } -} diff --git a/feature/utilcode/pkg/src/main/res/drawable/bar_status_custom.xml b/feature/utilcode/pkg/src/main/res/drawable/bar_status_custom.xml index abe259f89f..50a4898a07 100644 --- a/feature/utilcode/pkg/src/main/res/drawable/bar_status_custom.xml +++ b/feature/utilcode/pkg/src/main/res/drawable/bar_status_custom.xml @@ -2,8 +2,9 @@ + android:angle="180" + android:centerColor="@android:color/transparent" + android:endColor="@color/colorPrimary" + android:startColor="@color/colorPrimary" /> \ No newline at end of file diff --git a/lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt b/lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt new file mode 100644 index 0000000000..00ac76df68 --- /dev/null +++ b/lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt @@ -0,0 +1,82 @@ +package com.blankj.common.helper + +import android.content.Context +import android.util.Pair +import android.view.View +import com.blankj.common.R +import com.blankj.common.dialog.CommonDialogContent +import com.blankj.utilcode.constant.PermissionConstants +import com.blankj.utilcode.util.* + +/** + * ``` + * author: Blankj + * blog : http://blankj.com + * time : 2018/01/06 + * desc : helper about permission + * ``` + */ +object PermissionHelper { + + fun request(context: Context, callback: PermissionUtils.SimpleCallback, + @PermissionConstants.Permission vararg permissions: String) { + PermissionUtils.permission(*permissions) + .rationale { activity, shouldRequest -> showRationaleDialog(activity, shouldRequest) } + .callback(object : PermissionUtils.SingleCallback { + override fun callback(isAllGranted: Boolean, granted: MutableList, + deniedForever: MutableList, denied: MutableList) { + LogUtils.d(isAllGranted, granted, deniedForever, denied) + if (isAllGranted) { + callback.onGranted() + return + } + if (deniedForever.isNotEmpty()) { + showOpenAppSettingDialog(context) + return + } + val activity = ActivityUtils.getActivityByContext(context) + if (activity != null) { + SnackbarUtils.with(activity.findViewById(android.R.id.content)) + .setMessage("Permission denied: ${permissions2String(denied)}") + .showError(true) + } + callback.onDenied() + } + + fun permissions2String(permissions: MutableList): String { + if (permissions.isEmpty()) return "[]" + val sb: StringBuilder = StringBuilder() + for (permission in permissions) { + sb.append(", " + permission.substring(permission.lastIndexOf('.') + 1)) + } + return "[${sb.substring(2)}]" + } + }) + .request() + } + + fun showRationaleDialog(context: Context, shouldRequest: PermissionUtils.OnRationaleListener.ShouldRequest) { + CommonDialogContent().init(context, + StringUtils.getString(android.R.string.dialog_alert_title), + StringUtils.getString(R.string.permission_rationale_message), + Pair(StringUtils.getString(android.R.string.ok), View.OnClickListener { + shouldRequest.again(true) + }), + Pair(StringUtils.getString(android.R.string.cancel), View.OnClickListener { + shouldRequest.again(false) + })) + .show() + } + + fun showOpenAppSettingDialog(context: Context) { + CommonDialogContent().init(context, + StringUtils.getString(android.R.string.dialog_alert_title), + StringUtils.getString(R.string.permission_denied_forever_message), + Pair(StringUtils.getString(android.R.string.ok), View.OnClickListener { + PermissionUtils.launchAppDetailsSettings() + }), + Pair(StringUtils.getString(android.R.string.cancel), View.OnClickListener { + })) + .show() + } +} \ No newline at end of file diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 6253bd84a3..9398aba202 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.4' +implementation 'com.blankj:utilcode:1.28.5' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.4' +implementation 'com.blankj:utilcodex:1.28.5' ``` @@ -1160,7 +1160,7 @@ removeListener: 移除消息监听器 res2Uri : res 转 uri file2Uri : file 转 uri uri2File : uri 转 file -uri2InputStream: uri 转 InputStream +uri2Bytes : uri 转 bytes ``` * ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java] diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 6b62ef533c..bb4948b714 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.4' +implementation 'com.blankj:utilcode:1.28.5' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.4' +implementation 'com.blankj:utilcodex:1.28.5' ``` diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml index 07e9b61c0d..4cf4fe1090 100644 --- a/lib/utilcode/src/main/AndroidManifest.xml +++ b/lib/utilcode/src/main/AndroidManifest.xml @@ -3,6 +3,12 @@ + + failed."); return false; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java index f329e36b13..90b0ef6d74 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java @@ -430,12 +430,14 @@ private static boolean copyOrMoveDir(final File srcDir, if (!srcDir.exists() || !srcDir.isDirectory()) return false; if (!createOrExistsDir(destDir)) return false; File[] files = srcDir.listFiles(); - for (File file : files) { - File oneDestFile = new File(destPath + file.getName()); - if (file.isFile()) { - if (!copyOrMoveFile(file, oneDestFile, listener, isMove)) return false; - } else if (file.isDirectory()) { - if (!copyOrMoveDir(file, oneDestFile, listener, isMove)) return false; + if (files != null && files.length > 0) { + for (File file : files) { + File oneDestFile = new File(destPath + file.getName()); + if (file.isFile()) { + if (!copyOrMoveFile(file, oneDestFile, listener, isMove)) return false; + } else if (file.isDirectory()) { + if (!copyOrMoveDir(file, oneDestFile, listener, isMove)) return false; + } } } return !isMove || deleteDir(srcDir); @@ -506,7 +508,7 @@ private static boolean deleteDir(final File dir) { // dir isn't a directory then return false if (!dir.isDirectory()) return false; File[] files = dir.listFiles(); - if (files != null && files.length != 0) { + if (files != null && files.length > 0) { for (File file : files) { if (file.isFile()) { if (!file.delete()) return false; @@ -846,7 +848,7 @@ private static List listFilesInDirWithFilterInner(final File dir, List list = new ArrayList<>(); if (!isDir(dir)) return list; File[] files = dir.listFiles(); - if (files != null && files.length != 0) { + if (files != null && files.length > 0) { for (File file : files) { if (filter.accept(file)) { list.add(file); @@ -1169,7 +1171,7 @@ private static long getDirLength(final File dir) { if (!isDir(dir)) return -1; long len = 0; File[] files = dir.listFiles(); - if (files != null && files.length != 0) { + if (files != null && files.length > 0) { for (File file : files) { if (file.isDirectory()) { len += getDirLength(file); @@ -1398,8 +1400,7 @@ public static void notifySystemToScan(final String filePath) { public static void notifySystemToScan(final File file) { if (file == null || !file.exists()) return; Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); - Uri uri = Uri.fromFile(file); - intent.setData(uri); + intent.setData(Uri.parse("file://" + file.getAbsolutePath())); Utils.getApp().sendBroadcast(intent); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index c7603ea601..f3222ad8f3 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -1,5 +1,7 @@ package com.blankj.utilcode.util; +import android.Manifest; +import android.content.ContentValues; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; @@ -22,7 +24,10 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.ExifInterface; +import android.net.Uri; import android.os.Build; +import android.os.Environment; +import android.provider.MediaStore; import android.renderscript.Allocation; import android.renderscript.Element; import android.renderscript.RenderScript; @@ -32,6 +37,7 @@ import android.support.annotation.FloatRange; import android.support.annotation.IntRange; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.support.v4.content.ContextCompat; import android.util.Log; @@ -1501,7 +1507,7 @@ public static Bitmap stackBlur(final Bitmap src, int radius, final boolean recyc public static boolean save(final Bitmap src, final String filePath, final CompressFormat format) { - return save(src, UtilsBridge.getFileByPath(filePath), format, false); + return save(src, filePath, format, 100, false); } /** @@ -1513,7 +1519,7 @@ public static boolean save(final Bitmap src, * @return {@code true}: success
    {@code false}: fail */ public static boolean save(final Bitmap src, final File file, final CompressFormat format) { - return save(src, file, format, false); + return save(src, file, format, 100, false); } /** @@ -1529,7 +1535,7 @@ public static boolean save(final Bitmap src, final String filePath, final CompressFormat format, final boolean recycle) { - return save(src, UtilsBridge.getFileByPath(filePath), format, recycle); + return save(src, filePath, format, 100, recycle); } /** @@ -1545,7 +1551,91 @@ public static boolean save(final Bitmap src, final File file, final CompressFormat format, final boolean recycle) { - if (isEmptyBitmap(src) || !UtilsBridge.createFileByDeleteOldFile(file)) { + return save(src, file, format, 100, recycle); + } + + /** + * Save the bitmap. + * + * @param src The source of bitmap. + * @param filePath The path of file. + * @param format The format of the image. + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @return {@code true}: success
    {@code false}: fail + */ + public static boolean save(final Bitmap src, + final String filePath, + final CompressFormat format, + final int quality) { + return save(src, UtilsBridge.getFileByPath(filePath), format, quality, false); + } + + /** + * Save the bitmap. + * + * @param src The source of bitmap. + * @param file The file. + * @param format The format of the image. + * @return {@code true}: success
    {@code false}: fail + */ + public static boolean save(final Bitmap src, + final File file, + final CompressFormat format, + final int quality) { + return save(src, file, format, quality, false); + } + + /** + * Save the bitmap. + * + * @param src The source of bitmap. + * @param filePath The path of file. + * @param format The format of the image. + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return {@code true}: success
    {@code false}: fail + */ + public static boolean save(final Bitmap src, + final String filePath, + final CompressFormat format, + final int quality, + final boolean recycle) { + return save(src, UtilsBridge.getFileByPath(filePath), format, quality, recycle); + } + + /** + * Save the bitmap. + * + * @param src The source of bitmap. + * @param file The file. + * @param format The format of the image. + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return {@code true}: success
    {@code false}: fail + */ + public static boolean save(final Bitmap src, + final File file, + final CompressFormat format, + final int quality, + final boolean recycle) { + if (isEmptyBitmap(src)) { + Log.e("ImageUtils", "bitmap is empty."); + return false; + } + if (src.isRecycled()) { + Log.e("ImageUtils", "bitmap is recycled."); + return false; + } + if (!UtilsBridge.createFileByDeleteOldFile(file)) { Log.e("ImageUtils", "create or delete file <" + file + "> failed."); return false; } @@ -1553,7 +1643,7 @@ public static boolean save(final Bitmap src, boolean ret = false; try { os = new BufferedOutputStream(new FileOutputStream(file)); - ret = src.compress(format, 100, os); + ret = src.compress(format, quality, os); if (recycle && !src.isRecycled()) src.recycle(); } catch (IOException e) { e.printStackTrace(); @@ -1569,6 +1659,80 @@ public static boolean save(final Bitmap src, return ret; } + @Nullable + public static File save2Album(final Bitmap src, + final CompressFormat format) { + return save2Album(src, format, 100, false); + } + + @Nullable + public static File save2Album(final Bitmap src, + final CompressFormat format, + final boolean recycle) { + return save2Album(src, format, 100, recycle); + } + + @Nullable + public static File save2Album(final Bitmap src, + final CompressFormat format, + final int quality) { + return save2Album(src, format, quality, false); + } + + @Nullable + public static File save2Album(final Bitmap src, + final CompressFormat format, + final int quality, + final boolean recycle) { + String suffix = CompressFormat.JPEG.equals(format) ? "JPG" : format.name(); + String fileName = System.currentTimeMillis() + "_" + quality + "." + suffix; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + if (!UtilsBridge.isGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + Log.e("ImageUtils", "save to album need storage permission"); + return null; + } + File picDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); + File destFile = new File(picDir, Utils.getApp().getPackageName() + "/" + fileName); + if (!save(src, destFile, format, quality, recycle)) { + return null; + } + UtilsBridge.notifySystemToScan(destFile); + return destFile; + } else { + ContentValues contentValues = new ContentValues(); + contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, fileName); + contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/*"); + Uri contentUri; + if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } else { + contentUri = MediaStore.Images.Media.INTERNAL_CONTENT_URI; + } + contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DCIM + "/" + Utils.getApp().getPackageName()); + Uri uri = Utils.getApp().getContentResolver().insert(contentUri, contentValues); + if (uri == null) { + return null; + } + OutputStream os = null; + try { + os = Utils.getApp().getContentResolver().openOutputStream(uri); + src.compress(format, quality, os); + return UtilsBridge.uri2File(uri); + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + try { + if (os != null) { + os.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + /** * Return whether it is a image according to the file name. * diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java index 84224db4f9..77175591d6 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java @@ -117,9 +117,19 @@ public static Intent getLaunchAppIntent(final String pkgName) { * @return the intent of launch app details settings */ public static Intent getLaunchAppDetailsSettingsIntent(final String pkgName) { + return getLaunchAppDetailsSettingsIntent(pkgName, false); + } + + /** + * Return the intent of launch app details settings. + * + * @param pkgName The name of the package. + * @return the intent of launch app details settings + */ + public static Intent getLaunchAppDetailsSettingsIntent(final String pkgName, final boolean isNewTask) { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + pkgName)); - return getIntent(intent, true); + return getIntent(intent, isNewTask); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index 20145fe440..9b6f36a1a8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -7,6 +7,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.support.annotation.NonNull; @@ -660,6 +661,27 @@ public static String getServerAddressByWifi() { return Formatter.formatIpAddress(wm.getDhcpInfo().serverAddress); } + /** + * Return the ssid. + * + * @return the ssid. + */ + @RequiresPermission(ACCESS_WIFI_STATE) + public static String getSSID() { + WifiManager wm = (WifiManager) Utils.getApp().getApplicationContext().getSystemService(WIFI_SERVICE); + if (wm == null) return ""; + WifiInfo wi = wm.getConnectionInfo(); + if (wi == null) return ""; + String ssid = wi.getSSID(); + if (TextUtils.isEmpty(ssid)) { + return ""; + } + if (ssid.length() > 2 && ssid.charAt(0) == '"' && ssid.charAt(ssid.length() - 1) == '"') { + return ssid.substring(1, ssid.length() - 1); + } + return ssid; + } + /** * Register the status of network changed listener. * diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index 3884ad1c9f..73a7e2347f 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -8,6 +8,7 @@ import android.os.Build; import android.os.Bundle; import android.provider.Settings; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.support.v4.content.ContextCompat; @@ -41,6 +42,7 @@ public final class PermissionUtils { private String[] mPermissionsParam; private OnRationaleListener mOnRationaleListener; + private SingleCallback mSingleCallback; private SimpleCallback mSimpleCallback; private FullCallback mFullCallback; private ThemeCallback mThemeCallback; @@ -167,10 +169,9 @@ private static void startOverlayPermissionActivity(final Activity activity, fina * Launch the application's details settings. */ public static void launchAppDetailsSettings() { - Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); - intent.setData(Uri.parse("package:" + Utils.getApp().getPackageName())); + Intent intent = UtilsBridge.getLaunchAppDetailsSettingsIntent(Utils.getApp().getPackageName(), true); if (!UtilsBridge.isIntentAvailable(intent)) return; - Utils.getApp().startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + Utils.getApp().startActivity(intent); } /** @@ -199,6 +200,17 @@ public PermissionUtils rationale(final OnRationaleListener listener) { return this; } + /** + * Set the simple call back. + * + * @param callback the single call back + * @return the single {@link PermissionUtils} instance + */ + public PermissionUtils callback(final SingleCallback callback) { + mSingleCallback = callback; + return this; + } + /** * Set the simple call back. * @@ -237,7 +249,7 @@ public PermissionUtils theme(final ThemeCallback callback) { */ public void request() { if (mPermissionsParam == null || mPermissionsParam.length <= 0) { - Log.e("PermissionUtils", "No permissions to request."); + Log.w("PermissionUtils", "No permissions to request."); return; } @@ -333,6 +345,11 @@ private void getPermissionsStatus(final Activity activity) { } private void requestCallback() { + if (mSingleCallback != null) { + mSingleCallback.callback(mPermissionsDenied.isEmpty(), + mPermissionsGranted, mPermissionsDeniedForever, mPermissionsDenied); + mSingleCallback = null; + } if (mSimpleCallback != null) { if (mPermissionsDenied.isEmpty()) { mSimpleCallback.onGranted(); @@ -493,6 +510,12 @@ interface ShouldRequest { } } + public interface SingleCallback { + void callback(boolean isAllGranted, @NonNull List granted, + @NonNull List deniedForever, @NonNull List denied); + } + + public interface SimpleCallback { void onGranted(); @@ -500,9 +523,9 @@ public interface SimpleCallback { } public interface FullCallback { - void onGranted(List permissionsGranted); + void onGranted(@NonNull List granted); - void onDenied(List permissionsDeniedForever, List permissionsDenied); + void onDenied(@NonNull List deniedForever, @NonNull List denied); } public interface ThemeCallback { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index 51bdcfb9ab..82c4a37e30 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -349,14 +349,22 @@ static class ToastFactory { static IToast makeToast(Context context, CharSequence text, int duration) { if (NotificationManagerCompat.from(context).areNotificationsEnabled()) { - return new SystemToast(makeNormalToast(context, text, duration)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (!UtilsBridge.isGrantedDrawOverlays()) { + return new SystemToast(makeNormalToast(context, text, duration)); + } + } } return new ToastWithoutNotification(makeNormalToast(context, text, duration)); } static IToast newToast(Context context) { if (NotificationManagerCompat.from(context).areNotificationsEnabled()) { - return new SystemToast(new Toast(context)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (!UtilsBridge.isGrantedDrawOverlays()) { + return new SystemToast(new Toast(context)); + } + } } return new ToastWithoutNotification(new Toast(context)); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java index db30030354..424c548b21 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java @@ -87,17 +87,36 @@ private static File uri2FileReal(@NonNull final Uri uri) { String scheme = uri.getScheme(); String path = uri.getPath(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && path != null) { - String[] externals = new String[]{"/external", "/external_path"}; + String[] externals = new String[]{"/external/", "/external_path/"}; + File file = null; for (String external : externals) { - if (path.startsWith(external + "/")) { - File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() - + path.replace(external, "")); + if (path.startsWith(external)) { + file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + + path.replace(external, "/")); if (file.exists()) { Log.d("UriUtils", uri.toString() + " -> " + external); return file; } } } + file = null; + if (path.startsWith("/files_path/")) { + file = new File(Utils.getApp().getFilesDir().getAbsolutePath() + + path.replace("/files_path/", "/")); + } else if (path.startsWith("/cache_path/")) { + file = new File(Utils.getApp().getCacheDir().getAbsolutePath() + + path.replace("/cache_path/", "/")); + } else if (path.startsWith("/external_files_path/")) { + file = new File(Utils.getApp().getExternalFilesDir(null).getAbsolutePath() + + path.replace("/external_files_path/", "/")); + } else if (path.startsWith("/external_cache_path/")) { + file = new File(Utils.getApp().getExternalCacheDir().getAbsolutePath() + + path.replace("/external_cache_path/", "/")); + } + if (file != null && file.exists()) { + Log.d("UriUtils", uri.toString() + " -> " + path); + return file; + } } if (ContentResolver.SCHEME_FILE.equals(scheme)) { if (path != null) return new File(path); @@ -277,10 +296,24 @@ private static File getFileFromUri(final Uri uri, private static File copyUri2Cache(Uri uri) { Log.d("UriUtils", "copyUri2Cache() called"); - InputStream is = uri2InputStream(uri); - File file = new File(Utils.getApp().getCacheDir(), "" + System.currentTimeMillis()); - UtilsBridge.writeFileFromIS(file.getAbsolutePath(), is); - return file; + InputStream is = null; + try { + is = Utils.getApp().getContentResolver().openInputStream(uri); + File file = new File(Utils.getApp().getCacheDir(), "" + System.currentTimeMillis()); + UtilsBridge.writeFileFromIS(file.getAbsolutePath(), is); + return file; + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } } /** @@ -289,14 +322,14 @@ private static File copyUri2Cache(Uri uri) { * @param uri The uri. * @return the input stream */ - public static InputStream uri2InputStream(Uri uri) { - StringBuilder stringBuilder = new StringBuilder(); + public static byte[] uri2Bytes(Uri uri) { InputStream is = null; try { is = Utils.getApp().getContentResolver().openInputStream(uri); - return is; + return UtilsBridge.inputStream2Bytes(is); } catch (FileNotFoundException e) { e.printStackTrace(); + Log.d("UriUtils", "uri to bytes failed."); return null; } finally { if (is != null) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index aa4a1d127c..48fbc9f1ec 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -19,6 +19,7 @@ import org.json.JSONArray; import org.json.JSONObject; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStream; import java.io.Serializable; @@ -216,6 +217,10 @@ static byte[] inputStream2Bytes(final InputStream is) { return ConvertUtils.inputStream2Bytes(is); } + static ByteArrayOutputStream input2OutputStream(final InputStream is) { + return ConvertUtils.input2OutputStream(is); + } + static List inputStream2Lines(final InputStream is, final String charsetName) { return ConvertUtils.inputStream2Lines(is, charsetName); } @@ -293,6 +298,10 @@ static long getFsAvailableSize(String path) { return FileUtils.getFsAvailableSize(path); } + static void notifySystemToScan(File file) { + FileUtils.notifySystemToScan(file); + } + /////////////////////////////////////////////////////////////////////////// // GsonUtils /////////////////////////////////////////////////////////////////////////// @@ -379,6 +388,10 @@ static Intent getSendSmsIntent(final String phoneNumber, final String content) { return IntentUtils.getSendSmsIntent(phoneNumber, content); } + static Intent getLaunchAppDetailsSettingsIntent(final String pkgName, final boolean isNewTask) { + return IntentUtils.getLaunchAppDetailsSettingsIntent(pkgName, isNewTask); + } + /////////////////////////////////////////////////////////////////////////// // JsonUtils @@ -404,6 +417,10 @@ static void applyLanguage(final Activity activity) { /////////////////////////////////////////////////////////////////////////// // PermissionUtils /////////////////////////////////////////////////////////////////////////// + static boolean isGranted(final String... permissions) { + return PermissionUtils.isGranted(permissions); + } + @RequiresApi(api = Build.VERSION_CODES.M) static boolean isGrantedDrawOverlays() { return PermissionUtils.isGrantedDrawOverlays(); @@ -540,4 +557,8 @@ private static void preLoad(final Runnable... runs) { static Uri file2Uri(final File file) { return UriUtils.file2Uri(file); } + + static File uri2File(final Uri uri) { + return UriUtils.uri2File(uri); + } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java index 0b9ce217bc..1b87d3687f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java @@ -8,6 +8,7 @@ import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; @@ -22,27 +23,36 @@ public class UtilsTransActivity extends AppCompatActivity { private static final Map CALLBACK_MAP = new HashMap<>(); - private static TransActivityDelegate sDelegate; + + protected static final String EXTRA_DELEGATE = "extra_delegate"; public static void start(final TransActivityDelegate delegate) { - start(null, null, delegate); + start(null, null, delegate, UtilsTransActivity.class); } public static void start(final Utils.Consumer consumer, final TransActivityDelegate delegate) { - start(null, consumer, delegate); + start(null, consumer, delegate, UtilsTransActivity.class); } public static void start(final Activity activity, final TransActivityDelegate delegate) { - start(activity, null, delegate); + start(activity, null, delegate, UtilsTransActivity.class); } public static void start(final Activity activity, final Utils.Consumer consumer, final TransActivityDelegate delegate) { + start(activity, consumer, delegate, UtilsTransActivity.class); + } + + protected static void start(final Activity activity, + final Utils.Consumer consumer, + final TransActivityDelegate delegate, + final Class cls) { if (delegate == null) return; - Intent starter = new Intent(Utils.getApp(), UtilsTransActivity.class); + Intent starter = new Intent(Utils.getApp(), cls); + starter.putExtra(EXTRA_DELEGATE, delegate); if (consumer != null) { consumer.accept(starter); } @@ -52,22 +62,22 @@ public static void start(final Activity activity, } else { activity.startActivity(starter); } - sDelegate = delegate; } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { overridePendingTransition(0, 0); - if (sDelegate == null) { + Serializable extra = getIntent().getSerializableExtra(EXTRA_DELEGATE); + if (!(extra instanceof TransActivityDelegate)) { super.onCreate(savedInstanceState); finish(); return; } - CALLBACK_MAP.put(this, sDelegate); - sDelegate.onCreateBefore(this, savedInstanceState); + TransActivityDelegate delegate = (TransActivityDelegate) extra; + CALLBACK_MAP.put(this, delegate); + delegate.onCreateBefore(this, savedInstanceState); super.onCreate(savedInstanceState); - sDelegate.onCreated(this, savedInstanceState); - sDelegate = null; + delegate.onCreated(this, savedInstanceState); } @Override @@ -146,7 +156,7 @@ public boolean dispatchTouchEvent(MotionEvent ev) { return super.dispatchTouchEvent(ev); } - public abstract static class TransActivityDelegate { + public abstract static class TransActivityDelegate implements Serializable { public void onCreateBefore(@NonNull UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/} public void onCreated(@NonNull UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/} diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity4MainProcess.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity4MainProcess.java new file mode 100644 index 0000000000..c63475c08e --- /dev/null +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity4MainProcess.java @@ -0,0 +1,35 @@ +package com.blankj.utilcode.util; + +import android.app.Activity; +import android.content.Intent; + +/** + *
    + *     author: blankj
    + *     blog  : http://blankj.com
    + *     time  : 2020/03/19
    + *     desc  :
    + * 
    + */ +public class UtilsTransActivity4MainProcess extends UtilsTransActivity { + + public static void start(final TransActivityDelegate delegate) { + start(null, null, delegate, UtilsTransActivity4MainProcess.class); + } + + public static void start(final Utils.Consumer consumer, + final TransActivityDelegate delegate) { + start(null, consumer, delegate, UtilsTransActivity4MainProcess.class); + } + + public static void start(final Activity activity, + final TransActivityDelegate delegate) { + start(activity, null, delegate, UtilsTransActivity4MainProcess.class); + } + + public static void start(final Activity activity, + final Utils.Consumer consumer, + final TransActivityDelegate delegate) { + start(activity, consumer, delegate, UtilsTransActivity4MainProcess.class); + } +} diff --git a/plugin/api-gradle-plugin/CHANGELOG.md b/plugin/api-gradle-plugin/CHANGELOG.md index 696e1f83ef..8aa9190f8b 100644 --- a/plugin/api-gradle-plugin/CHANGELOG.md +++ b/plugin/api-gradle-plugin/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## v1.4(2020/05/19) +重新发布,因为上个版本从阿里云仓库拉取是有问题的 + ## v1.3(2020/04/29) 重构使用 base-transform diff --git a/plugin/api-gradle-plugin/README.md b/plugin/api-gradle-plugin/README.md index 7a6141b980..1d7e39dee7 100644 --- a/plugin/api-gradle-plugin/README.md +++ b/plugin/api-gradle-plugin/README.md @@ -30,7 +30,7 @@ buildscript { dependencies { ... - classpath 'com.blankj:api-gradle-plugin:1.2' + classpath 'com.blankj:api-gradle-plugin:1.4' } } ``` diff --git a/plugin/api-gradle-plugin/build.gradle b/plugin/api-gradle-plugin/build.gradle index e948a5e5c3..8b859f35a6 100755 --- a/plugin/api-gradle-plugin/build.gradle +++ b/plugin/api-gradle-plugin/build.gradle @@ -40,5 +40,5 @@ publish { website = "https://github.com/Blankj/AndroidUtilCode" } -//./gradlew clean plugin:plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal -//./gradlew clean plugin:plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter +//./gradlew clean :plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal +//./gradlew clean :plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter diff --git a/plugin/bus-gradle-plugin/CHANGELOG.md b/plugin/bus-gradle-plugin/CHANGELOG.md index f1abc3b131..e267fafec4 100644 --- a/plugin/bus-gradle-plugin/CHANGELOG.md +++ b/plugin/bus-gradle-plugin/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## v2.6(2020/05/19) +重新发布,因为上个版本从阿里云仓库拉取是有问题的 + ## v2.5(2020/04/29) 重构使用 base-transform diff --git a/plugin/bus-gradle-plugin/README.md b/plugin/bus-gradle-plugin/README.md index 5d90973b6b..85c3eaf6f1 100644 --- a/plugin/bus-gradle-plugin/README.md +++ b/plugin/bus-gradle-plugin/README.md @@ -19,7 +19,7 @@ buildscript { dependencies { ... - classpath 'com.blankj:bus-gradle-plugin:2.4' + classpath 'com.blankj:bus-gradle-plugin:2.6' } } ``` diff --git a/plugin/bus-gradle-plugin/build.gradle b/plugin/bus-gradle-plugin/build.gradle index 14f04d072a..ec264eaf4e 100755 --- a/plugin/bus-gradle-plugin/build.gradle +++ b/plugin/bus-gradle-plugin/build.gradle @@ -40,5 +40,5 @@ publish { website = "https://github.com/Blankj/AndroidUtilCode" } -//./gradlew clean plugin:plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal -//./gradlew clean plugin:plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter \ No newline at end of file +//./gradlew clean :plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal +//./gradlew clean :plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 469342834c..2d1b907aca 100644 --- a/settings.gradle +++ b/settings.gradle @@ -27,8 +27,9 @@ for (def pro in config.proConfig) { } if (pro.useLocal && pro.isApply) { - include pro.localPath - project(pro.localPath).name = pro.localPath.substring(1).replace(":", "_") + def projectPath = ":" + localPath.substring(1).replace(":", "_") + include projectPath + project(projectPath).projectDir = file(localPath.substring(1).replace(":", "/")) } } From 1079a0392d0dab9d2670ee0e35abbe0db5689e28 Mon Sep 17 00:00:00 2001 From: Blankj Date: Mon, 25 May 2020 19:52:04 +0800 Subject: [PATCH 064/122] see 05/25 log --- CHANGELOG.md | 8 +++-- buildSrc/src/main/groovy/Config.groovy | 4 +-- .../utilcode/pkg/feature/bus/BusActivity.kt | 1 - lib/utilcode/README-CN.md | 4 +-- lib/utilcode/README.md | 4 +-- .../com/blankj/utilcode/util/AppUtils.java | 19 +++++++++-- .../com/blankj/utilcode/util/BusUtils.java | 32 ++++++++++++------- .../com/blankj/utilcode/util/IntentUtils.java | 31 +++++++++++++----- .../com/blankj/utilcode/util/UtilsBridge.java | 4 +++ .../blankj/utilcode/util/BusUtilsTest.java | 15 +++++++++ 10 files changed, 91 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b2f2fa2b6..866e92d062 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,15 @@ -* `20/05/21` [add] Publish bus plugin v2.6. Publish api plugin v1.4. Publish. Publish 1.28.5. +* `20/05/23` [fix] BusUtils#postSticky times not right. Publish v1.28.6. +* `20/05/22` [add] IntentUtils#getInstallAppIntent support Uri param. Publish. +* `20/05/21` [add] Publish bus plugin v2.6. Publish api plugin v1.4. Publish. Publish v1.28.5. * `20/05/19` [fix] FileUtils#copyOrMoveDird NPE. * `20/05/18` [add] IntentUtils#getLaunchAppDetailsSettingsIntent support isNewTask. * `20/05/17` [add] ImageUtils#save2Album, NetworkUtils#getSSID, UtilsTransActivity4MainProcess. -* `20/05/03` [add] Publish bus plugin v2.5. Publish api plugin v1.3. Publish. Publish 1.28.4. +* `20/05/03` [add] Publish bus plugin v2.5. Publish api plugin v1.3. Publish. Publish v1.28.4. * `20/04/30` [add] BaseItem support partialUpdate. * `20/04/29` [add] Publish plugin lib com.blankj:base-transform:1.0. * `20/04/28` [fix] LanguageUtils#applyLanguage. * `20/04/27` [fix] BarUtils#isNavBarVisible. -* `20/04/26` [fix] Utils#init fit tinker. Publish 1.28.3. +* `20/04/26` [fix] Utils#init fit tinker. Publish v1.28.3. * `20/04/25` [fix] UriUtils#uri2File Unknown URI. Publish 1.28.2. * `20/04/24` [add] SnackbarUtils support show on the top; UriUtils#uri2InputStream. * `20/04/23` [fix] UriUtils#uri2File not support HW; TransActivity crash below 21. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index c8035c7f1e..d240011334 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_028_005 - static versionName = '1.28.5'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_028_006 + static versionName = '1.28.6'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt index e11a5081f7..4343463169 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bus/BusActivity.kt @@ -2,7 +2,6 @@ package com.blankj.utilcode.pkg.feature.bus import android.content.Context import android.content.Intent -import android.os.Bundle import android.support.annotation.Keep import com.blankj.common.activity.CommonActivity import com.blankj.common.item.CommonItem diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 9398aba202..35a0bb215b 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.5' +implementation 'com.blankj:utilcode:1.28.6' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.5' +implementation 'com.blankj:utilcodex:1.28.6' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index bb4948b714..af31b27daa 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.5' +implementation 'com.blankj:utilcode:1.28.6' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.5' +implementation 'com.blankj:utilcodex:1.28.6' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index e0316d6d9b..55923524dc 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -10,6 +10,7 @@ import android.content.pm.PackageManager; import android.content.pm.Signature; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.support.annotation.NonNull; import android.util.Log; @@ -68,8 +69,22 @@ public static void installApp(final String filePath) { * @param file The file. */ public static void installApp(final File file) { - if (!UtilsBridge.isFileExists(file)) return; - Utils.getApp().startActivity(UtilsBridge.getInstallAppIntent(file)); + Intent installAppIntent = UtilsBridge.getInstallAppIntent(file); + if (installAppIntent == null) return; + Utils.getApp().startActivity(installAppIntent); + } + + /** + * Install the app. + *

    Target APIs greater than 25 must hold + * {@code }

    + * + * @param uri The uri. + */ + public static void installApp(final Uri uri) { + Intent installAppIntent = UtilsBridge.getInstallAppIntent(uri); + if (installAppIntent == null) return; + Utils.getApp().startActivity(installAppIntent); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java index 811470c648..860d369b39 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java @@ -147,7 +147,7 @@ private void processSticky(final Object bus) { if (tagArgMap == null) return; synchronized (mClassName_Tag_Arg4StickyMap) { for (Map.Entry tagArgEntry : tagArgMap.entrySet()) { - postInner(tagArgEntry.getKey(), tagArgEntry.getValue()); + postStickyInner(tagArgEntry.getKey(), tagArgEntry.getValue(), true); } } } @@ -176,15 +176,19 @@ private void postInner(final String tag, final Object arg, final boolean sticky) return; } for (BusInfo busInfo : busInfoList) { - if (busInfo.method == null) { - Method method = getMethodByBusInfo(busInfo); - if (method == null) { - return; - } - busInfo.method = method; + invokeBus(tag, arg, busInfo, sticky); + } + } + + private void invokeBus(String tag, Object arg, BusInfo busInfo, boolean sticky) { + if (busInfo.method == null) { + Method method = getMethodByBusInfo(busInfo); + if (method == null) { + return; } - invokeMethod(tag, arg, busInfo, sticky); + busInfo.method = method; } + invokeMethod(tag, arg, busInfo, sticky); } private Method getMethodByBusInfo(BusInfo busInfo) { @@ -287,6 +291,10 @@ private void realInvokeMethod(final String tag, Object arg, BusInfo busInfo, boo } private void postStickyInner(final String tag, final Object arg) { + postStickyInner(tag, arg, false); + } + + private void postStickyInner(final String tag, final Object arg, boolean isInvokeOnlySticky) { List busInfoList = mTag_BusInfoListMap.get(tag); if (busInfoList == null) { Log.e(TAG, "The bus of tag <" + tag + "> is not exists."); @@ -294,8 +302,10 @@ private void postStickyInner(final String tag, final Object arg) { } for (BusInfo busInfo : busInfoList) { if (!busInfo.sticky) { // not sticky bus will post directly. - postInner(tag, arg); - return; + if (!isInvokeOnlySticky) { + invokeBus(tag, arg, busInfo, false); + } + continue; } synchronized (mClassName_Tag_Arg4StickyMap) { Map tagArgMap = mClassName_Tag_Arg4StickyMap.get(busInfo.className); @@ -305,7 +315,7 @@ private void postStickyInner(final String tag, final Object arg) { } tagArgMap.put(tag, arg); } - postInner(tag, arg, true); + invokeBus(tag, arg, busInfo, true); } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java index 77175591d6..e243f0115e 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java @@ -66,18 +66,33 @@ public static Intent getInstallAppIntent(final String filePath) { * @return the intent of install app */ public static Intent getInstallAppIntent(final File file) { - if (file == null) return null; - Intent intent = new Intent(Intent.ACTION_VIEW); - Uri data; - String type = "application/vnd.android.package-archive"; + if (UtilsBridge.isFileExists(file)) return null; + Uri uri; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { - data = Uri.fromFile(file); + uri = Uri.fromFile(file); } else { - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); String authority = Utils.getApp().getPackageName() + ".utilcode.provider"; - data = FileProvider.getUriForFile(Utils.getApp(), authority, file); + uri = FileProvider.getUriForFile(Utils.getApp(), authority, file); + } + return getInstallAppIntent(uri); + } + + /** + * Return the intent of install app. + *

    Target APIs greater than 25 must hold + * {@code }

    + * + * @param uri The uri. + * @return the intent of install app + */ + public static Intent getInstallAppIntent(final Uri uri) { + if (uri == null) return null; + Intent intent = new Intent(Intent.ACTION_VIEW); + String type = "application/vnd.android.package-archive"; + intent.setDataAndType(uri, type); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } - intent.setDataAndType(data, type); return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 48fbc9f1ec..88335a7a26 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -371,6 +371,10 @@ static Intent getInstallAppIntent(final File file) { return IntentUtils.getInstallAppIntent(file); } + static Intent getInstallAppIntent(final Uri uri) { + return IntentUtils.getInstallAppIntent(uri); + } + static Intent getUninstallAppIntent(final String pkgName) { return IntentUtils.getUninstallAppIntent(pkgName); } diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java index 50389b326b..15894fe7d9 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java @@ -45,6 +45,11 @@ public void noParamStickyFun() { System.out.println("noParamSticky"); } + @BusUtils.Bus(tag = TAG_NO_PARAM_STICKY) + public void foo() { + System.out.println("foo"); + } + @BusUtils.Bus(tag = TAG_ONE_PARAM_STICKY, sticky = true) public void oneParamStickyFun(Callback callback) { if (callback != null) { @@ -81,6 +86,7 @@ public void setUp() throws Exception { BusUtils.registerBus4Test(TAG_NO_PARAM, BusUtilsTest.class.getName(), "noParamFun", "", "", false, "POSTING", 0); BusUtils.registerBus4Test(TAG_ONE_PARAM, BusUtilsTest.class.getName(), "oneParamFun", String.class.getName(), "param", false, "POSTING", 0); BusUtils.registerBus4Test(TAG_NO_PARAM_STICKY, BusUtilsTest.class.getName(), "noParamStickyFun", "", "", true, "POSTING", 0); + BusUtils.registerBus4Test(TAG_NO_PARAM_STICKY, BusUtilsTest.class.getName(), "foo", "", "", false, "POSTING", 0); BusUtils.registerBus4Test(TAG_ONE_PARAM_STICKY, BusUtilsTest.class.getName(), "oneParamStickyFun", Callback.class.getName(), "callback", true, "POSTING", 0); BusUtils.registerBus4Test(TAG_IO, BusUtilsTest.class.getName(), "ioFun", CountDownLatch.class.getName(), "latch", false, "IO", 0); @@ -89,6 +95,15 @@ public void setUp() throws Exception { BusUtils.registerBus4Test(TAG_SINGLE, BusUtilsTest.class.getName(), "singleFun", CountDownLatch.class.getName(), "latch", false, "SINGLE", 0); } + @Test + public void testSticky() { + BusUtils.postSticky(TAG_NO_PARAM_STICKY); + BusUtilsTest test = new BusUtilsTest(); + BusUtils.register(test); + + BusUtils.postSticky(TAG_NO_PARAM_STICKY); + } + @Test public void testMultiThread() { final BusUtilsTest test = new BusUtilsTest(); From b25ed2025f53f70fc3689a03e497eb65c8e0bd7a Mon Sep 17 00:00:00 2001 From: Blankj Date: Thu, 28 May 2020 10:49:41 +0800 Subject: [PATCH 065/122] see 05/28 log --- CHANGELOG.md | 3 ++- buildSrc/src/main/groovy/Config.groovy | 4 ++-- lib/utilcode/README-CN.md | 4 ++-- lib/utilcode/README.md | 4 ++-- .../src/main/java/com/blankj/utilcode/util/IntentUtils.java | 2 +- script/clean.sh | 4 ++++ 6 files changed, 13 insertions(+), 8 deletions(-) create mode 100755 script/clean.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 866e92d062..cec04c84f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ +* `20/05/28` [fix] IntentUtils#getInstallAppIntent file exist wrong. Publish v1.29.0. * `20/05/23` [fix] BusUtils#postSticky times not right. Publish v1.28.6. -* `20/05/22` [add] IntentUtils#getInstallAppIntent support Uri param. Publish. +* `20/05/22` [add] IntentUtils#getInstallAppIntent support Uri param. * `20/05/21` [add] Publish bus plugin v2.6. Publish api plugin v1.4. Publish. Publish v1.28.5. * `20/05/19` [fix] FileUtils#copyOrMoveDird NPE. * `20/05/18` [add] IntentUtils#getLaunchAppDetailsSettingsIntent support isNewTask. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index d240011334..d73098c38e 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_028_006 - static versionName = '1.28.6'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_029_000 + static versionName = '1.29.0'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 35a0bb215b..87836384ea 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.6' +implementation 'com.blankj:utilcode:1.29.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.6' +implementation 'com.blankj:utilcodex:1.29.0' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index af31b27daa..c2552ed43c 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.28.6' +implementation 'com.blankj:utilcode:1.29.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.28.6' +implementation 'com.blankj:utilcodex:1.29.0' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java index e243f0115e..08807c350d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java @@ -66,7 +66,7 @@ public static Intent getInstallAppIntent(final String filePath) { * @return the intent of install app */ public static Intent getInstallAppIntent(final File file) { - if (UtilsBridge.isFileExists(file)) return null; + if (!UtilsBridge.isFileExists(file)) return null; Uri uri; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { uri = Uri.fromFile(file); diff --git a/script/clean.sh b/script/clean.sh new file mode 100755 index 0000000000..2ff72056bb --- /dev/null +++ b/script/clean.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +rm -rf .idea +find . -name "*.iml" -type f -exec rm -rf {} \; +find . -name "build" -type d -exec rm -rf {} \; \ No newline at end of file From 940900d02f97b56c97202926e4a52d7ff93dede3 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 11 Aug 2020 11:08:58 +0800 Subject: [PATCH 066/122] see 08/11 log --- README-CN.md | 2 ++ README.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/README-CN.md b/README-CN.md index 32a5a0ac17..2c83da1237 100644 --- a/README-CN.md +++ b/README-CN.md @@ -1,5 +1,7 @@ [![logo][logo]](https://github.com/Blankj/AndroidUtilCode) + + [![frame][frame]](https://github.com/Blankj/AucFrameTemplate) [![auc][aucSvg]][auc] [![result][apiSvg]][result] [![build][buildSvg]][build] [![License][licenseSvg]][license] diff --git a/README.md b/README.md index e0df3165eb..16b93e5be4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ [![logo][logo]](https://github.com/Blankj/AndroidUtilCode) + + [![frame][frame]](https://github.com/Blankj/AucFrameTemplate) [![auc][aucSvg]][auc] [![result][apiSvg]][result] [![build][buildSvg]][build] [![License][licenseSvg]][license] From 01ca01aa44fc03016865e7369cee7547b05858c2 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 11 Aug 2020 11:30:06 +0800 Subject: [PATCH 067/122] see 08/11 log --- README-CN.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README-CN.md b/README-CN.md index 2c83da1237..4fb7144487 100644 --- a/README-CN.md +++ b/README-CN.md @@ -1,6 +1,6 @@ [![logo][logo]](https://github.com/Blankj/AndroidUtilCode) - + GitAds [![frame][frame]](https://github.com/Blankj/AucFrameTemplate) diff --git a/README.md b/README.md index 16b93e5be4..6a4aff0546 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![logo][logo]](https://github.com/Blankj/AndroidUtilCode) - + GitAds [![frame][frame]](https://github.com/Blankj/AucFrameTemplate) From 3befa9bc8fadb42db37f3b992ef3a63988d30847 Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 12 Aug 2020 16:56:04 +0800 Subject: [PATCH 068/122] see 08/12 log --- lib/utilcode/README-CN.md | 19 ++++++++++++++----- lib/utilcode/README.md | 11 ++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 87836384ea..532800614d 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -8,6 +8,8 @@ implementation 'com.blankj:utilcode:1.29.0' implementation 'com.blankj:utilcodex:1.29.0' ``` + GitAds + ## APIs @@ -1157,15 +1159,20 @@ removeListener: 移除消息监听器 * ### URI 相关 -> [UriUtils.java][uri.java] ``` -res2Uri : res 转 uri -file2Uri : file 转 uri -uri2File : uri 转 file -uri2Bytes : uri 转 bytes +res2Uri : res 转 uri +file2Uri : file 转 uri +uri2File : uri 转 file +uri2Bytes: uri 转 bytes ``` * ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java] ``` -start: 启动透明 Activity +start: 启动随当前线程的透明 Activity +``` + +* ### UtilsTransActivity4MainProcess -> [UtilsTransActivity4MainProcess.java][trans4Main.java] +``` +start: 启动主线程的透明 Activity ``` * ### 震动相关 -> [VibrateUtils.java][vibrate.java] -> [Demo][vibrate.demo] @@ -1396,6 +1403,8 @@ getComments : 获取压缩文件中的注释链表 [trans.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java +[trans4Main.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity4MainProcess.java + [vibrate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java [vibrate.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index c2552ed43c..754d0bd027 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -8,6 +8,8 @@ implementation 'com.blankj:utilcode:1.29.0' implementation 'com.blankj:utilcodex:1.29.0' ``` + GitAds + ## APIs @@ -1160,7 +1162,7 @@ removeListener res2Uri file2Uri uri2File -uri2InputStream +uri2Bytes ``` * ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java] @@ -1168,6 +1170,11 @@ uri2InputStream start ``` +* ### UtilsTransActivity4MainProcess -> [UtilsTransActivity4MainProcess.java][trans4Main.java] +``` +start +``` + * ### About Vibrate -> [VibrateUtils.java][vibrate.java] -> [Demo][vibrate.demo] ``` vibrate @@ -1393,6 +1400,8 @@ getComments [trans.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java +[trans4Main.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity4MainProcess.java + [vibrate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java [vibrate.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt From c664cc558c590dc985b30a7fd370c3e2d5a501cf Mon Sep 17 00:00:00 2001 From: yummylau Date: Mon, 17 Aug 2020 17:32:07 +0800 Subject: [PATCH 069/122] =?UTF-8?q?#=E4=BF=AE=E5=A4=8DOneUI2=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E7=89=88=E6=9C=AC=E5=89=8D=E4=B8=89=E6=98=9Fs8/note8?= =?UTF-8?q?=E7=AD=89=E8=AE=BE=E5=A4=87=E5=AF=BC=E8=88=AA=E6=A0=8F=E5=8F=AF?= =?UTF-8?q?=E8=A7=81=E6=80=A7=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/blankj/utilcode/util/BarUtils.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index 37596cd9eb..4fcd4e1ecf 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -7,11 +7,13 @@ import android.graphics.Color; import android.graphics.Point; import android.os.Build; +import android.provider.Settings; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.support.annotation.RequiresPermission; import android.support.v4.widget.DrawerLayout; +import android.text.TextUtils; import android.util.TypedValue; import android.view.Display; import android.view.KeyCharacterMap; @@ -565,9 +567,26 @@ public static boolean isNavBarVisible(@NonNull final Window window) { } } if (isVisible) { + + // 对于三星手机,android10以下非OneUI2的版本,比如 s8,note8 等设备上,导航栏显示存在bug:"当用户隐藏导航栏时显示输入法的时候导航栏会跟随显示",会导致隐藏输入法之后判断错误 + // 这个问题在 OneUI 2 & android 10 版本已修复 + String manufacturer = ""; + if (!TextUtils.isEmpty(Build.MANUFACTURER )){ + manufacturer = Build.MANUFACTURER.trim(); + } + if (manufacturer.toLowerCase().contains("samsung") + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + try { + return Settings.Global.getInt(window.getContext().getContentResolver(), "navigationbar_hide_bar_enabled") == 0; + } catch (Exception e) { + //nothing to do + } + } + int visibility = decorView.getSystemUiVisibility(); isVisible = (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; } + return isVisible; } From f9dc1ec6088073cc248fc35f9c62cff1a57e2e77 Mon Sep 17 00:00:00 2001 From: caoshen Date: Tue, 1 Sep 2020 20:06:46 +0800 Subject: [PATCH 070/122] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=8ESAF=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=96=87=E4=BB=B6=E6=97=B6id=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/blankj/utilcode/util/UriUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java index 424c548b21..f589c42a09 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java @@ -177,13 +177,15 @@ else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT return null; }// end 1_0 else if ("com.android.providers.downloads.documents".equals(authority)) { - final String id = DocumentsContract.getDocumentId(uri); + String id = DocumentsContract.getDocumentId(uri); if (TextUtils.isEmpty(id)) { Log.d("UriUtils", uri.toString() + " parse failed(id is null). -> 1_1"); return null; } if (id.startsWith("raw:")) { return new File(id.substring(4)); + } else if (id.startsWith("msf:")) { + id = id.split(":")[1]; } String[] contentUriPrefixesToTry = new String[]{ From 2d4fec4b60a5f88a342615d4f6972738f8f51e63 Mon Sep 17 00:00:00 2001 From: FaramarzAf Date: Sat, 5 Sep 2020 14:50:25 +0430 Subject: [PATCH 071/122] TemperatureUtils class added to the lib-subutil --- .../blankj/subutil/util/TemperatureUtils.java | 41 +++++++++++++++ .../subutil/util/TestTempConversion.java | 51 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java create mode 100644 lib/subutil/src/test/java/com/blankj/subutil/util/TestTempConversion.java diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java new file mode 100644 index 0000000000..44bd62a4af --- /dev/null +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java @@ -0,0 +1,41 @@ +package com.blankj.subutil.util; + +/** + * Create by Faramarz Afzali on 2020/9/5 + *

    + * This class is intended for converting temperatures into different units. + * C refers to the Celsius unit + * F refers to the Fahrenheit unit + * K refers to the Kelvin unit + */ + +public final class TemperatureUtils { + + + public static float cToF(float temp) { + return (temp * 9) / 5 + 32; + } + + public static float cToK(float temp) { + return temp + 273.15f; + } + + + public static float fToC(float temp) { + return (temp - 32) * 5 / 9; + } + + public static float fToK(float temp) { + return temp + 255.3722222222f; + } + + + public static float kToC(float temp) { + return temp - 273.15f; + } + + public static float kToF(float temp) { + return temp - 459.67f; + } + +} diff --git a/lib/subutil/src/test/java/com/blankj/subutil/util/TestTempConversion.java b/lib/subutil/src/test/java/com/blankj/subutil/util/TestTempConversion.java new file mode 100644 index 0000000000..daa61ea0d3 --- /dev/null +++ b/lib/subutil/src/test/java/com/blankj/subutil/util/TestTempConversion.java @@ -0,0 +1,51 @@ +package com.blankj.subutil.util; + + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * Create by Faramarz Afzali on 2020/9/5 + */ + + +@RunWith(JUnit4.class) +public class TestTempConversion { + + private float delta = 1e-15f; + + @Test + public void testCToF() { + Assert.assertEquals(32f, TemperatureUtils.cToF(0f), delta); + } + + @Test + public void testCToK() { + Assert.assertEquals(273.15f, TemperatureUtils.cToK(0f), delta); + } + + + @Test + public void testFToC() { + Assert.assertEquals(-17.777779f, TemperatureUtils.fToC(0f), delta); + } + + @Test + public void testFToK() { + Assert.assertEquals(255.3722222222f, TemperatureUtils.fToK(0f), delta); + } + + + @Test + public void testKToC() { + Assert.assertEquals(-273.15f, TemperatureUtils.kToC(0f), delta); + } + + @Test + public void testKToF() { + Assert.assertEquals(-459.67f, TemperatureUtils.kToF(0f), delta); + } + +} From 6a266afaae1f2471d3bc57fd5e2b156a7bc85213 Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 8 Sep 2020 15:52:50 +0800 Subject: [PATCH 072/122] see 09/08 log --- CHANGELOG.md | 2 + README-CN.md | 2 - README.md | 2 - build.gradle | 5 +- buildApp.gradle | 7 +- buildCommon.gradle | 41 +++ buildLib.gradle | 33 +-- buildSrc/src/main/groovy/Config.groovy | 4 +- config.json | 2 +- feature/utilcode/export/build.gradle | 10 + .../utilcode/pkg/src/main/AndroidManifest.xml | 4 + .../utilcode/pkg/feature/CoreUtilActivity.kt | 4 + .../utilcode/pkg/feature/file/FileActivity.kt | 2 +- .../pkg/feature/intent/IntentActivity.kt | 77 ++++++ .../utilcode/pkg/feature/mvp/MvpActivity.java | 2 + .../utilcode/pkg/feature/mvp/MvpModel.java | 16 +- .../pkg/feature/mvp/MvpPresenter.java | 11 +- .../utilcode/pkg/feature/mvp/MvpView.java | 5 - .../utilcode/pkg/feature/span/SpanActivity.kt | 1 + .../pkg/src/main/res/values/strings.xml | 1 + gradle/publish.gradle | 35 ++- .../java/com/blankj/base/mvp/BaseModel.java | 31 +-- .../com/blankj/base/mvp/BasePresenter.java | 55 ++-- .../java/com/blankj/base/mvp/BaseView.java | 85 +++++-- .../blankj/subutil/util/TemperatureUtils.java | 17 +- ...version.java => TemperatureUtilsTest.java} | 23 +- lib/utilcode/README-CN.md | 11 +- lib/utilcode/README.md | 2 - lib/utilcode/build.gradle | 4 - .../utilcode/constant/RegexConstants.java | 8 +- .../com/blankj/utilcode/util/AppUtils.java | 27 +- .../com/blankj/utilcode/util/BarUtils.java | 19 +- .../com/blankj/utilcode/util/BusUtils.java | 126 +++++++--- .../com/blankj/utilcode/util/ClickUtils.java | 72 ++---- .../blankj/utilcode/util/CollectionUtils.java | 4 +- .../com/blankj/utilcode/util/ColorUtils.java | 10 + .../blankj/utilcode/util/ConvertUtils.java | 2 +- .../blankj/utilcode/util/DebouncingUtils.java | 88 +++++++ .../com/blankj/utilcode/util/DeviceUtils.java | 19 +- .../blankj/utilcode/util/EncryptUtils.java | 15 +- .../com/blankj/utilcode/util/FileUtils.java | 2 +- .../com/blankj/utilcode/util/IntentUtils.java | 133 ++++++++-- .../blankj/utilcode/util/KeyboardUtils.java | 6 +- .../blankj/utilcode/util/MessengerUtils.java | 27 +- .../blankj/utilcode/util/PermissionUtils.java | 51 ++-- .../com/blankj/utilcode/util/RegexUtils.java | 3 +- .../com/blankj/utilcode/util/ScreenUtils.java | 4 +- .../blankj/utilcode/util/ServiceUtils.java | 30 ++- .../com/blankj/utilcode/util/ToastUtils.java | 238 ++++++++---------- .../com/blankj/utilcode/util/UriUtils.java | 19 +- .../util/UtilsActivityLifecycleImpl.java | 18 +- .../com/blankj/utilcode/util/UtilsBridge.java | 14 ++ .../src/main/res/drawable/toast_frame.xml | 8 + .../src/main/res/layout/toast_layout.xml | 23 ++ .../blankj/utilcode/util/BusUtilsTest.java | 52 +++- lib/utildebug/build.gradle | 4 - plugin/api-gradle-plugin/README.md | 2 +- plugin/bus-gradle-plugin/README.md | 2 +- 58 files changed, 1003 insertions(+), 517 deletions(-) create mode 100644 buildCommon.gradle create mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/intent/IntentActivity.kt rename lib/subutil/src/test/java/com/blankj/subutil/util/{TestTempConversion.java => TemperatureUtilsTest.java} (69%) create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java create mode 100644 lib/utilcode/src/main/res/drawable/toast_frame.xml create mode 100644 lib/utilcode/src/main/res/layout/toast_layout.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index cec04c84f9..a20bd884ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +* `20/09/06` [add] DebouncingUtils. +* `20/09/04` [fix] ToastUtils adapt SDK 30. * `20/05/28` [fix] IntentUtils#getInstallAppIntent file exist wrong. Publish v1.29.0. * `20/05/23` [fix] BusUtils#postSticky times not right. Publish v1.28.6. * `20/05/22` [add] IntentUtils#getInstallAppIntent support Uri param. diff --git a/README-CN.md b/README-CN.md index 4fb7144487..32a5a0ac17 100644 --- a/README-CN.md +++ b/README-CN.md @@ -1,7 +1,5 @@ [![logo][logo]](https://github.com/Blankj/AndroidUtilCode) - GitAds - [![frame][frame]](https://github.com/Blankj/AucFrameTemplate) [![auc][aucSvg]][auc] [![result][apiSvg]][result] [![build][buildSvg]][build] [![License][licenseSvg]][license] diff --git a/README.md b/README.md index 6a4aff0546..e0df3165eb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ [![logo][logo]](https://github.com/Blankj/AndroidUtilCode) - GitAds - [![frame][frame]](https://github.com/Blankj/AucFrameTemplate) [![auc][aucSvg]][auc] [![result][apiSvg]][result] [![build][buildSvg]][build] [![License][licenseSvg]][license] diff --git a/build.gradle b/build.gradle index 24c3b741e7..dd27b98617 100644 --- a/build.gradle +++ b/build.gradle @@ -4,9 +4,7 @@ buildscript { repositories { // use for debug plugin local if (Config.depConfig.plugin_bus.useLocal || Config.depConfig.plugin_api.useLocal) { - maven() { - url new File("mavenLocal") - } + maven() { url uri("${project.rootDir.path}/mavenLocal") } } google() jcenter() @@ -21,6 +19,7 @@ buildscript { allprojects { repositories { + maven() { url uri("${project.rootDir.path}/mavenLocal") } maven { url "https://jitpack.io/" } google() jcenter() diff --git a/buildApp.gradle b/buildApp.gradle index 2fc65a6999..0af2639065 100644 --- a/buildApp.gradle +++ b/buildApp.gradle @@ -1,7 +1,6 @@ apply { plugin "com.android.application" - plugin "kotlin-android" - plugin "kotlin-android-extensions" + from "${rootDir.path}/buildCommon.gradle" if (Config.depConfig.plugin_api.isApply) { plugin Config.depConfig.plugin_api.pluginId } @@ -26,11 +25,7 @@ if (Config.depConfig.plugin_api.isApply) { } android { - compileSdkVersion Config.compileSdkVersion defaultConfig { - minSdkVersion Config.minSdkVersion - versionCode Config.versionCode - versionName Config.versionName applicationId Config.applicationId + suffix targetSdkVersion Config.targetSdkVersion multiDexEnabled true diff --git a/buildCommon.gradle b/buildCommon.gradle new file mode 100644 index 0000000000..f83f74f52d --- /dev/null +++ b/buildCommon.gradle @@ -0,0 +1,41 @@ +apply { + plugin "kotlin-android" + plugin "kotlin-android-extensions" +} + +android { + compileSdkVersion Config.compileSdkVersion + defaultConfig { + minSdkVersion Config.minSdkVersion + versionCode Config.versionCode + versionName Config.versionName + consumerProguardFiles 'proguard-rules.pro' + } + + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + +// viewBinding { +// enabled = true +// } + +// flavorDimensions "region" +// +// productFlavors { +// china { +// dimension "region" +// } +// +// oversea { +// dimension "region" +// } +// } +} \ No newline at end of file diff --git a/buildLib.gradle b/buildLib.gradle index e2ad034683..ac9c42ac1c 100644 --- a/buildLib.gradle +++ b/buildLib.gradle @@ -1,34 +1,5 @@ -apply { - plugin "com.android.library" - plugin "kotlin-android" - plugin "kotlin-android-extensions" -} - -android { - compileSdkVersion Config.compileSdkVersion - defaultConfig { - minSdkVersion Config.minSdkVersion - versionCode Config.versionCode - versionName Config.versionName - consumerProguardFiles 'proguard-rules.pro' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - consumerProguardFiles 'proguard-rules.pro' - } - } - - lintOptions { - abortOnError false - } - -// viewBinding { -// enabled = true -// } -} +apply plugin: "com.android.library" +apply from: "${rootDir.path}/buildCommon.gradle" dependencies { if (project.name.endsWith("_pkg") || project.name.endsWith("_mock")) { diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index d73098c38e..2c85babdf5 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -19,7 +19,7 @@ class Config { // lib version static gradlePluginVersion = '3.5.0' - static kotlinVersion = '1.3.50' + static kotlinVersion = '1.3.72' static supportVersion = '28.0.0' static depConfig = [ @@ -37,7 +37,7 @@ class Config { feature_subutil_export : new DepConfig(true , true , ":feature:subutil:export"), feature_utilcode_app : new DepConfig(false, true , ":feature:utilcode:app"), feature_utilcode_pkg : new DepConfig(true , true , ":feature:utilcode:pkg"), - feature_utilcode_export : new DepConfig(true , true , ":feature:utilcode:export"), + feature_utilcode_export : new DepConfig(true , true , ":feature:utilcode:export", "com.blankj:utilcode-export:1.1"), lib_base : new DepConfig(true , true , ":lib:base"), lib_common : new DepConfig(true , true , ":lib:common"), lib_subutil : new DepConfig(true , true , ":lib:subutil"), diff --git a/config.json b/config.json index 1ed59b5d2f..aa55557a6a 100644 --- a/config.json +++ b/config.json @@ -17,7 +17,7 @@ {"isApply": true, "useLocal": true, "localPath": ":feature:subutil:export"}, {"isApply": true, "useLocal": true, "localPath": ":feature:utilcode:app"}, {"isApply": true, "useLocal": true, "localPath": ":feature:utilcode:pkg"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:utilcode:export"}, + {"isApply": true, "useLocal": true, "localPath": ":feature:utilcode:export", "remotePath": "com.blankj:utilcode-export:1.1"}, {"isApply": true, "useLocal": true, "localPath": ":lib:base"}, {"isApply": true, "useLocal": true, "localPath": ":lib:common"}, {"isApply": true, "useLocal": true, "localPath": ":lib:subutil"}, diff --git a/feature/utilcode/export/build.gradle b/feature/utilcode/export/build.gradle index e69de29bb2..cecc254461 100644 --- a/feature/utilcode/export/build.gradle +++ b/feature/utilcode/export/build.gradle @@ -0,0 +1,10 @@ +apply from: "${rootDir.path}/gradle/publish.gradle" +publish { + def depConfig = Config.depConfig.feature_utilcode_export + name = "UtilCodeExport" + groupId = depConfig.groupId + artifactId = depConfig.artifactId + version = depConfig.version + website = "https://github.com/Blankj/UtilCodeExport" +} +//./gradlew :feature_utilcode_export:mavenLocal // 上传到本地 mavenLocal \ No newline at end of file diff --git a/feature/utilcode/pkg/src/main/AndroidManifest.xml b/feature/utilcode/pkg/src/main/AndroidManifest.xml index 3a2c50225e..fde82401a1 100644 --- a/feature/utilcode/pkg/src/main/AndroidManifest.xml +++ b/feature/utilcode/pkg/src/main/AndroidManifest.xml @@ -159,6 +159,10 @@ android:name=".feature.image.ImageActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:launchMode="singleTop" /> + > { + return CollectionUtils.newArrayList( + CommonItemClick("LaunchApp") { + startActivity(IntentUtils.getLaunchAppIntent(packageName)) + }, + CommonItemClick("LaunchAppDetailsSettings") { + startActivityForResult(IntentUtils.getLaunchAppDetailsSettingsIntent(packageName), 1) + }, + CommonItemClick("ShareText") { + startActivity(IntentUtils.getShareTextIntent("share content")) + }, + CommonItemClick("ShareImage") { + startActivity(IntentUtils.getShareImageIntent(getShareImagePath()[0])); + }, + CommonItemClick("ShareTextImage") { + startActivity(IntentUtils.getShareTextImageIntent("share content", getShareImagePath()[0])); + }, + CommonItemClick("ShareImages") { + startActivity(IntentUtils.getShareImageIntent(getShareImagePath())); + }, + CommonItemClick("ShareTextImages") { + startActivity(IntentUtils.getShareTextImageIntent("share content", getShareImagePath())); + } + ) + } + + private fun getShareImagePath(): LinkedList { + val shareImagePath0 = Config.CACHE_PATH + "share.jpg" + if (!FileUtils.isFile(shareImagePath0)) { + ImageUtils.save(ImageUtils.getBitmap(R.drawable.image_lena), shareImagePath0, Bitmap.CompressFormat.JPEG) + } + val shareImagePath1 = Config.CACHE_PATH + "cheetah.jpg" + if (!FileUtils.isFile(shareImagePath1)) { + ImageUtils.save(ImageUtils.getBitmap(R.drawable.span_cheetah), shareImagePath1, Bitmap.CompressFormat.JPEG) + } + return CollectionUtils.newLinkedList(shareImagePath0, shareImagePath1) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + LogUtils.d("onActivityResult() called with: requestCode = $requestCode, resultCode = $resultCode, data = $data") + } +} diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java index 7aa5fe26b1..813431f6f8 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java @@ -1,5 +1,7 @@ package com.blankj.utilcode.pkg.feature.mvp; +import android.arch.lifecycle.ViewModel; +import android.arch.lifecycle.ViewModelProvider; import android.content.Context; import android.content.Intent; import android.os.Bundle; diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java index 023c3a919b..8697f11c1d 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java @@ -17,18 +17,13 @@ public class MvpModel extends BaseModel implements IMvp.Model { private int index; @Override - public void onCreateModel() { + public void onCreate() { index = 0; } - @Override - public void onDestroyModel() { - - } - @Override public void requestUpdateMsg(final Utils.Consumer consumer) { - ThreadUtils.executeByCached(addAutoDestroyTask(new ThreadUtils.SimpleTask() { + ThreadUtils.executeByCached(new ThreadUtils.SimpleTask() { @Override public String doInBackground() throws Throwable { Thread.sleep(2000); @@ -39,6 +34,11 @@ public String doInBackground() throws Throwable { public void onSuccess(String result) { consumer.accept(result); } - })); + }); + } + + @Override + public void onDestroy() { + super.onDestroy(); } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java index 8b78e2cd20..01990aa3af 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java @@ -1,6 +1,7 @@ package com.blankj.utilcode.pkg.feature.mvp; import com.blankj.base.mvp.BasePresenter; +import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.Utils; /** @@ -15,7 +16,7 @@ public class MvpPresenter extends BasePresenter implements IMvp.Presenter { @Override - public void onAttachView() { + public void onBindView() { } @Override @@ -24,8 +25,12 @@ public void updateMsg() { getModel(MvpModel.class).requestUpdateMsg(new Utils.Consumer() { @Override public void accept(String s) { - getView().showMsg(s); - getView().setLoadingVisible(false); + if (isAlive()) { + getView().showMsg(s); + getView().setLoadingVisible(false); + } else { + LogUtils.iTag(MvpView.TAG, "destroyed"); + } } }); } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java index b74c23ae62..59ab715ac0 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java @@ -53,9 +53,4 @@ public void run() { public void showMsg(CharSequence msg) { ToastUtils.showLong(msg); } - - @Override - public void onDestroyView() { - - } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt index bf5d46b154..d43afd850f 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/span/SpanActivity.kt @@ -81,6 +81,7 @@ class SpanActivity : CommonActivity() { SpanUtils.with(spanAboutTv) .appendLine("SpanUtils").setBackgroundColor(Color.LTGRAY).setBold().setForegroundColor(Color.YELLOW).setHorizontalAlign(Layout.Alignment.ALIGN_CENTER) .appendLine("前景色").setForegroundColor(Color.GREEN) +// .appendLine("测试哈哈").setForegroundColor(Color.RED).setBackgroundColor(Color.LTGRAY).setFontSize(10).setLineHeight(280, SpanUtils.ALIGN_BOTTOM) .appendLine("背景色").setBackgroundColor(Color.LTGRAY) .appendLine("行高居中对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.LTGRAY) .appendLine("行高底部对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.GREEN) diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml index 02f2622ab2..5bea803e40 100644 --- a/feature/utilcode/pkg/src/main/res/values/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml @@ -15,6 +15,7 @@ FlashlightUtils Demo FragmentUtils Demo ImageUtils Demo + IntentUtils Demo KeyboardUtils Demo Language Demo LogUtils Demo diff --git a/gradle/publish.gradle b/gradle/publish.gradle index f6fdfb4dda..76bb5fea66 100644 --- a/gradle/publish.gradle +++ b/gradle/publish.gradle @@ -58,17 +58,17 @@ def configMaven(Project project, PublishExtension ext) { configuration = project.configurations.archives repositories.mavenDeployer { - repository(url: uri(new File(project.rootDir.getPath() + "/mavenLocal"))) + repository(url: uri("${project.rootDir.path}/mavenLocal")) configPom(pom, ext) } doFirst { - checkExt(project, ext) + ext.check(false) } } project.tasks.findByName("bintrayUpload").doFirst { - checkExt(project, ext) + ext.check(true) } } @@ -102,13 +102,23 @@ def configPom(pom, PublishExtension ext) { } } } -} -static def checkExt(Project project, PublishExtension ext) { - if (ext.isBintrayEmpty()) { - throw new NullPointerException("U should set bintrayUser and bintrayKey in local.properties") + pom.whenConfigured { + // 检测 module 中的 dependencies 是否有源码依赖 + // 如果是源码依赖,而且没有在 config 中配置 remotePath,那么发布到仓库,其他地方依赖该库时会找不到源码的那个库 + it.dependencies.findAll { dep -> dep.version == "unspecified" }.collect { dep -> + DepConfig config = Config.depConfig.get(dep.artifactId) + if (config == null || config.version == null) { + // 源码依赖而且没有在 config 中配置 remotePath,直接报错 + System.err.println("The module of <" + dep.artifactId + "> should publish to maven first.") + throw new RuntimeException() + } + dep.groupId = config.groupId + dep.version = config.version + // 源码依赖,但配置了 remotePath,让 pom 中写入 remotePath + GLog.l("Please check <${dep.groupId}:${dep.artifactId}:${dep.version}> is published.") + } } - ext.check() } def configBintray(Project project, PublishExtension ext) { @@ -197,15 +207,18 @@ class PublishExtension { String bintrayUser String bintrayKey - void check() { + void check(boolean isBintray) { checkField(name, "name") checkField(groupId, "groupId") checkField(artifactId, "artifactId") checkField(version, "version") checkField(website, "website") - checkField(bintrayUser, "bintrayUser") - checkField(bintrayKey, "bintrayKey") + if (isBintray) { + if (isBintrayEmpty()) { + throw new NullPointerException("U should set bintrayUser and bintrayKey in local.properties") + } + } } boolean isBintrayEmpty() { diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java b/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java index cbdd94c2be..84c930fd74 100644 --- a/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java +++ b/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java @@ -1,10 +1,9 @@ package com.blankj.base.mvp; -import com.blankj.utilcode.util.ThreadUtils; -import com.blankj.utilcode.util.ToastUtils; - -import java.util.ArrayList; -import java.util.List; +import android.arch.lifecycle.LiveData; +import android.arch.lifecycle.MutableLiveData; +import android.support.annotation.CallSuper; +import android.util.Log; /** *

    @@ -16,24 +15,14 @@
      */
     public abstract class BaseModel {
     
    -    private List mTasks = new ArrayList<>();
    -
    -    public abstract void onCreateModel();
    +    LiveData mData = new MutableLiveData<>();
     
    -    public abstract void onDestroyModel();
    +    private static final String TAG = BaseView.TAG;
     
    -    public  ThreadUtils.Task addAutoDestroyTask(ThreadUtils.Task task) {
    -        if (task == null) return null;
    -        mTasks.add(task);
    -        return task;
    -    }
    +    public abstract void onCreate();
     
    -    void destroy() {
    -        onDestroyModel();
    -        for (ThreadUtils.Task task : mTasks) {
    -            if (task == null) continue;
    -            task.cancel();
    -            ToastUtils.showLong("Mvp Task Canceled.");
    -        }
    +    @CallSuper
    +    public void onDestroy() {
    +        Log.i(TAG, "destroy model: " + getClass().getSimpleName());
         }
     }
    diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    index 7365c3490a..a067e2aff5 100644
    --- a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    +++ b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    @@ -1,12 +1,9 @@
     package com.blankj.base.mvp;
     
    -import android.app.Activity;
    -import android.arch.lifecycle.Lifecycle;
    -import android.support.annotation.NonNull;
    -
    -import com.blankj.utilcode.util.ActivityUtils;
    -import com.blankj.utilcode.util.LogUtils;
    -import com.blankj.utilcode.util.Utils;
    +import android.arch.lifecycle.ViewModel;
    +import android.arch.lifecycle.ViewModelProvider;
    +import android.support.annotation.CallSuper;
    +import android.util.Log;
     
     import java.util.HashMap;
     import java.util.Map;
    @@ -19,17 +16,19 @@
      *     desc  :
      * 
      */
    -public abstract class BasePresenter extends Utils.ActivityLifecycleCallbacks {
    +public abstract class BasePresenter {
    +
    +    private static final String TAG = BaseView.TAG;
     
    -    private V                     mView;
    -    private Map mModelMap = new HashMap<>();
    +    private V                                          mView;
    +    private Map, BaseModel> mModelMap = new HashMap<>();
    +    private boolean                                    isAlive   = true;
     
    -    public abstract void onAttachView();
    +    public abstract void onBindView();
     
         void bindView(V view) {
             this.mView = view;
    -        onAttachView();
    -        ActivityUtils.addActivityLifecycleCallbacks(mView.getActivity(), this);
    +        onBindView();
         }
     
         public V getView() {
    @@ -45,7 +44,7 @@ public  M getModel(Class modelClass) {
             try {
                 M model = modelClass.newInstance();
                 mModelMap.put(modelClass, model);
    -            model.onCreateModel();
    +            model.onCreate();
                 return model;
             } catch (IllegalAccessException e) {
                 e.printStackTrace();
    @@ -55,25 +54,23 @@ public  M getModel(Class modelClass) {
             return null;
         }
     
    -    @Override
    -    public void onLifecycleChanged(@NonNull Activity activity, Lifecycle.Event event) {
    -        super.onLifecycleChanged(activity, event);
    -        if (event == Lifecycle.Event.ON_DESTROY) {
    -            destroyPresenter();
    -        }
    -        LogUtils.i("onLifecycleChanged: " + event);
    -    }
    -
    -    private void destroyPresenter() {
    -        if (mView != null) {
    -            mView.mPresenterMap.remove(this.getClass());
    -            mView.onDestroyView();
    -        }
    +    @CallSuper
    +    public void onDestroy() {
    +        Log.i(TAG, "destroy presenter: " + getClass().getSimpleName());
    +        isAlive = false;
             for (BaseModel model : mModelMap.values()) {
                 if (model != null) {
    -                model.destroy();
    +                model.onDestroy();
                 }
             }
             mModelMap.clear();
         }
    +
    +    public boolean isAlive() {
    +        return isAlive;
    +    }
    +
    +    public void getSafeData() {
    +        new ViewModelProvider(getView().getActivity(), new ViewModelProvider.NewInstanceFactory()).get(ViewModel.class);
    +    }
     }
    diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java b/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
    index a870e06d82..f13cc350dd 100644
    --- a/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
    +++ b/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
    @@ -1,13 +1,12 @@
     package com.blankj.base.mvp;
     
    -import android.app.Activity;
     import android.arch.lifecycle.Lifecycle;
    -import android.support.annotation.NonNull;
    +import android.arch.lifecycle.LifecycleObserver;
    +import android.arch.lifecycle.OnLifecycleEvent;
    +import android.support.annotation.CallSuper;
     import android.support.v4.app.Fragment;
     import android.support.v4.app.FragmentActivity;
    -
    -import com.blankj.utilcode.util.ActivityUtils;
    -import com.blankj.utilcode.util.Utils;
    +import android.util.Log;
     
     import java.util.HashMap;
     import java.util.Map;
    @@ -20,45 +19,95 @@
      *     desc  :
      * 
      */
    -public abstract class BaseView {
    +public class BaseView implements LifecycleObserver {
    +
    +    public static final String TAG = "UtilsMVP";
     
    -    private FragmentActivity mActivity;
    -    private Fragment         mFragment;
    -    Map> mPresenterMap = new HashMap<>();
    +    private FragmentActivity                mActivity;
    +    private Fragment                        mFragment;
    +    private Lifecycle                       mLifecycle;
    +    private Map, BasePresenter> mPresenterMap = new HashMap<>();
     
    -    public abstract void onDestroyView();
    +    public BaseView(Fragment fragment) {
    +        mFragment = fragment;
    +        mActivity = fragment.getActivity();
    +        mLifecycle = mFragment.getLifecycle();
    +        addLifecycle(this);
    +    }
     
         public BaseView(FragmentActivity activity) {
             mActivity = activity;
    +        mLifecycle = mActivity.getLifecycle();
    +        addLifecycle(this);
         }
     
    -    public BaseView(Fragment fragment) {
    -        mFragment = fragment;
    -        mActivity = fragment.getActivity();
    +    public BaseView(Lifecycle lifecycle) {
    +        mLifecycle = lifecycle;
    +        addLifecycle(this);
         }
     
         public  T getActivity() {
    +        if (mActivity == null) {
    +            return null;
    +        }
             //noinspection unchecked
             return (T) mActivity;
         }
     
         public  T getFragment() {
    +        if (mFragment == null) {
    +            return null;
    +        }
             //noinspection unchecked
             return (T) mFragment;
         }
     
    -    public void addPresenter(BasePresenter presenter) {
    +    public V addPresenter(BasePresenter presenter) {
    +        if (presenter == null) return (V) this;
             mPresenterMap.put(presenter.getClass(), presenter);
             //noinspection unchecked
             presenter.bindView((V) this);
    +        return (V) this;
         }
     
         public 

    > P getPresenter(Class

    presenterClass) { + if (presenterClass == null) { + throw new IllegalArgumentException("presenterClass is null!"); + } BasePresenter basePresenter = mPresenterMap.get(presenterClass); - if (basePresenter != null) { - //noinspection unchecked - return (P) basePresenter; + if (basePresenter == null) { + throw new IllegalArgumentException("presenter of <" + presenterClass.getSimpleName() + "> is not added!"); + } + //noinspection unchecked + return (P) basePresenter; + } + + @CallSuper + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + public void onDestroy() { + Log.i(TAG, "destroy view: " + getClass().getSimpleName()); + removeLifecycle(this); + for (BasePresenter presenter : mPresenterMap.values()) { + if (presenter != null) { + presenter.onDestroy(); + } + } + mPresenterMap.clear(); + } + + private void addLifecycle(LifecycleObserver observer) { + if (mLifecycle == null) { + Log.w(TAG, "addLifecycle: mLifecycle is null"); + return; + } + mLifecycle.addObserver(observer); + } + + private void removeLifecycle(LifecycleObserver observer) { + if (mLifecycle == null) { + Log.w(TAG, "removeLifecycle: mLifecycle is null"); + return; } - return null; + mLifecycle.removeObserver(observer); } } diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java index 44bd62a4af..f50687ab59 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/TemperatureUtils.java @@ -1,17 +1,17 @@ package com.blankj.subutil.util; /** - * Create by Faramarz Afzali on 2020/9/5 - *

    - * This class is intended for converting temperatures into different units. - * C refers to the Celsius unit - * F refers to the Fahrenheit unit - * K refers to the Kelvin unit + *

    + *     author: Faramarz Afzali
    + *     time  : 2020/09/05
    + *     desc  : This class is intended for converting temperatures into different units.
    + *             C refers to the Celsius unit
    + *             F refers to the Fahrenheit unit
    + *             K refers to the Kelvin unit
    + * 
    */ - public final class TemperatureUtils { - public static float cToF(float temp) { return (temp * 9) / 5 + 32; } @@ -37,5 +37,4 @@ public static float kToC(float temp) { public static float kToF(float temp) { return temp - 459.67f; } - } diff --git a/lib/subutil/src/test/java/com/blankj/subutil/util/TestTempConversion.java b/lib/subutil/src/test/java/com/blankj/subutil/util/TemperatureUtilsTest.java similarity index 69% rename from lib/subutil/src/test/java/com/blankj/subutil/util/TestTempConversion.java rename to lib/subutil/src/test/java/com/blankj/subutil/util/TemperatureUtilsTest.java index daa61ea0d3..84ee329851 100644 --- a/lib/subutil/src/test/java/com/blankj/subutil/util/TestTempConversion.java +++ b/lib/subutil/src/test/java/com/blankj/subutil/util/TemperatureUtilsTest.java @@ -7,44 +7,47 @@ import org.junit.runners.JUnit4; /** - * Create by Faramarz Afzali on 2020/9/5 + *
    + *     author: Blankj
    + *     blog  : http://blankj.com
    + *     time  : 2018/03/22
    + *     desc  : TemperatureUtils 单元测试
    + * 
    */ - - @RunWith(JUnit4.class) -public class TestTempConversion { +public class TemperatureUtilsTest { private float delta = 1e-15f; @Test - public void testCToF() { + public void cToF() { Assert.assertEquals(32f, TemperatureUtils.cToF(0f), delta); } @Test - public void testCToK() { + public void cToK() { Assert.assertEquals(273.15f, TemperatureUtils.cToK(0f), delta); } @Test - public void testFToC() { + public void fToC() { Assert.assertEquals(-17.777779f, TemperatureUtils.fToC(0f), delta); } @Test - public void testFToK() { + public void fToK() { Assert.assertEquals(255.3722222222f, TemperatureUtils.fToK(0f), delta); } @Test - public void testKToC() { + public void kToC() { Assert.assertEquals(-273.15f, TemperatureUtils.kToC(0f), delta); } @Test - public void testKToF() { + public void kToF() { Assert.assertEquals(-459.67f, TemperatureUtils.kToF(0f), delta); } diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 532800614d..3f5cd01a41 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -8,8 +8,6 @@ implementation 'com.blankj:utilcode:1.29.0' implementation 'com.blankj:utilcodex:1.29.0' ``` - GitAds - ## APIs @@ -344,6 +342,7 @@ string2Int : 颜色串转颜色值 int2RgbString : 颜色值转 RGB 串 int2ArgbString : 颜色值转 ARGB 串 getRandomColor : 获取随机色 +isLightColor : 判断是否亮色 ``` * ### 转换相关 -> [ConvertUtils.java][convert.java] -> [Test][convert.test] @@ -380,6 +379,11 @@ sp2px, px2sp : sp 与 px 互转 init: 初始化 ``` +* ### 防抖相关 -> [DebouncingUtils.java][debouncing.java] +``` +isValid: 是否有效 +``` + * ### 设备相关 -> [DeviceUtils.java][device.java] -> [Demo][device.demo] ``` isDeviceRooted : 判断设备是否 rooted @@ -578,6 +582,7 @@ getLaunchAppIntent : 获取打开 App 的意图 getLaunchAppDetailsSettingsIntent: 获取 App 具体设置的意图 getShareTextIntent : 获取分享文本的意图 getShareImageIntent : 获取分享图片的意图 +getShareTextImageIntent : 获取分享图文的意图 getComponentIntent : 获取其他应用组件的意图 getShutdownIntent : 获取关机的意图 getCaptureIntent : 获取拍照的意图 @@ -1273,6 +1278,8 @@ getComments : 获取压缩文件中的注释链表 [crash.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java +[debouncing.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java + [device.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java [device.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 754d0bd027..e29bf3dae1 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -8,8 +8,6 @@ implementation 'com.blankj:utilcode:1.29.0' implementation 'com.blankj:utilcodex:1.29.0' ``` - GitAds - ## APIs diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index 283e55936b..dd2df94746 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -40,10 +40,6 @@ dependencies { testImplementation Config.depConfig.eventbus_lib.dep } -afterEvaluate { - verifyReleaseResources.enabled(false) -} - apply from: "${rootDir.path}/gradle/publish.gradle" publish { name = "UtilCode" diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java index 2bf982c8c4..2c85bf835f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java @@ -16,13 +16,13 @@ public final class RegexConstants { public static final String REGEX_MOBILE_SIMPLE = "^[1]\\d{10}$"; /** * Regex of exact mobile. - *

    china mobile: 134(0-8), 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198

    - *

    china unicom: 130, 131, 132, 145, 155, 156, 166, 171, 175, 176, 185, 186

    - *

    china telecom: 133, 153, 173, 177, 180, 181, 189, 199, 191

    + *

    china mobile: 134(0-8), 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 165, 172, 178, 182, 183, 184, 187, 188, 198

    + *

    china unicom: 130, 131, 132, 145, 155, 156, 166, 167, 171, 175, 176, 185, 186

    + *

    china telecom: 133, 153, 162, 173, 177, 180, 181, 189, 199, 191

    *

    global star: 1349

    *

    virtual operator: 170

    */ - public static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[57])|(15[0-35-9])|(16[6])|(17[0135-8])|(18[0-9])|(19[189]))\\d{8}$"; + public static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[57])|(15[0-35-9])|(16[2567])|(17[01235-8])|(18[0-9])|(19[189]))\\d{8}$"; /** * Regex of telephone number. */ diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index 55923524dc..f1a33238ab 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -11,6 +11,7 @@ import android.content.pm.Signature; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Build; import android.support.annotation.NonNull; import android.util.Log; @@ -523,8 +524,12 @@ public static Signature[] getAppSignature(final String packageName) { if (UtilsBridge.isSpace(packageName)) return null; try { PackageManager pm = Utils.getApp().getPackageManager(); - @SuppressLint("PackageManagerGetSignatures") - PackageInfo pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); + PackageInfo pi; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES); + } else { + pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); + } return pi == null ? null : pi.signatures; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); @@ -532,6 +537,24 @@ public static Signature[] getAppSignature(final String packageName) { } } + /** + * Return the application's signature. + * + * @param file The file. + * @return the application's signature + */ + public static Signature[] getAppSignature(final File file) { + if (file == null) return null; + PackageManager pm = Utils.getApp().getPackageManager(); + PackageInfo pi; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + pi = pm.getPackageArchiveInfo(file.getAbsolutePath(), PackageManager.GET_SIGNING_CERTIFICATES); + } else { + pi = pm.getPackageArchiveInfo(file.getAbsolutePath(), PackageManager.GET_SIGNATURES); + } + return pi == null ? null : pi.signatures; + } + /** * Return the application's signature for SHA1 value. * diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index 4fcd4e1ecf..7f96cce7dd 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -13,7 +13,6 @@ import android.support.annotation.RequiresApi; import android.support.annotation.RequiresPermission; import android.support.v4.widget.DrawerLayout; -import android.text.TextUtils; import android.util.TypedValue; import android.view.Display; import android.view.KeyCharacterMap; @@ -567,19 +566,15 @@ public static boolean isNavBarVisible(@NonNull final Window window) { } } if (isVisible) { - - // 对于三星手机,android10以下非OneUI2的版本,比如 s8,note8 等设备上,导航栏显示存在bug:"当用户隐藏导航栏时显示输入法的时候导航栏会跟随显示",会导致隐藏输入法之后判断错误 + // 对于三星手机,android10以下非OneUI2的版本,比如 s8,note8 等设备上, + // 导航栏显示存在bug:"当用户隐藏导航栏时显示输入法的时候导航栏会跟随显示",会导致隐藏输入法之后判断错误 // 这个问题在 OneUI 2 & android 10 版本已修复 - String manufacturer = ""; - if (!TextUtils.isEmpty(Build.MANUFACTURER )){ - manufacturer = Build.MANUFACTURER.trim(); - } - if (manufacturer.toLowerCase().contains("samsung") - && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + if (UtilsBridge.isSamsung() + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 + && Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { try { - return Settings.Global.getInt(window.getContext().getContentResolver(), "navigationbar_hide_bar_enabled") == 0; - } catch (Exception e) { - //nothing to do + return Settings.Global.getInt(Utils.getApp().getContentResolver(), "navigationbar_hide_bar_enabled") == 0; + } catch (Exception ignore) { } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java index 860d369b39..87138eada4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java @@ -61,7 +61,7 @@ private void registerBus(String tag, busInfoList = new ArrayList<>(); mTag_BusInfoListMap.put(tag, busInfoList); } - busInfoList.add(new BusInfo(className, funName, paramType, paramName, sticky, threadMode, priority)); + busInfoList.add(new BusInfo(tag, className, funName, paramType, paramName, sticky, threadMode, priority)); } public static void register(final Object bus) { @@ -107,16 +107,30 @@ private static BusUtils getInstance() { private void registerInner(final Object bus) { if (bus == null) return; - Class aClass = bus.getClass(); + Class aClass = bus.getClass(); String className = aClass.getName(); + boolean isNeedRecordTags = false; synchronized (mClassName_BusesMap) { Set buses = mClassName_BusesMap.get(className); if (buses == null) { buses = new CopyOnWriteArraySet<>(); mClassName_BusesMap.put(className, buses); + isNeedRecordTags = true; } - buses.add(bus); + if (buses.contains(bus)) { + Log.w(TAG, "The bus of <" + bus + "> already registered."); + return; + } else { + buses.add(bus); + } + } + if (isNeedRecordTags) { + recordTags(aClass, className); } + consumeStickyIfExist(bus); + } + + private void recordTags(Class aClass, String className) { List tags = mClassName_TagsMap.get(className); if (tags == null) { synchronized (mClassName_TagsMap) { @@ -139,15 +153,38 @@ private void registerInner(final Object bus) { } } } - processSticky(bus); } - private void processSticky(final Object bus) { + private void consumeStickyIfExist(final Object bus) { Map tagArgMap = mClassName_Tag_Arg4StickyMap.get(bus.getClass().getName()); if (tagArgMap == null) return; synchronized (mClassName_Tag_Arg4StickyMap) { for (Map.Entry tagArgEntry : tagArgMap.entrySet()) { - postStickyInner(tagArgEntry.getKey(), tagArgEntry.getValue(), true); + consumeSticky(bus, tagArgEntry.getKey(), tagArgEntry.getValue()); + } + } + } + + private void consumeSticky(final Object bus, final String tag, final Object arg) { + List busInfoList = mTag_BusInfoListMap.get(tag); + if (busInfoList == null) { + Log.e(TAG, "The bus of tag <" + tag + "> is not exists."); + return; + } + for (BusInfo busInfo : busInfoList) { + if (!busInfo.subClassNames.contains(bus.getClass().getName())) { + continue; + } + if (!busInfo.sticky) { + continue; + } + + synchronized (mClassName_Tag_Arg4StickyMap) { + Map tagArgMap = mClassName_Tag_Arg4StickyMap.get(busInfo.className); + if (tagArgMap == null || !tagArgMap.containsKey(tag)) { + continue; + } + invokeBus(bus, arg, busInfo, true); } } } @@ -173,14 +210,21 @@ private void postInner(final String tag, final Object arg, final boolean sticky) List busInfoList = mTag_BusInfoListMap.get(tag); if (busInfoList == null) { Log.e(TAG, "The bus of tag <" + tag + "> is not exists."); + if (mTag_BusInfoListMap.isEmpty()) { + Log.e(TAG, "Please check whether the bus plugin is applied."); + } return; } for (BusInfo busInfo : busInfoList) { - invokeBus(tag, arg, busInfo, sticky); + invokeBus(arg, busInfo, sticky); } } - private void invokeBus(String tag, Object arg, BusInfo busInfo, boolean sticky) { + private void invokeBus(Object arg, BusInfo busInfo, boolean sticky) { + invokeBus(null, arg, busInfo, sticky); + } + + private void invokeBus(Object bus, Object arg, BusInfo busInfo, boolean sticky) { if (busInfo.method == null) { Method method = getMethodByBusInfo(busInfo); if (method == null) { @@ -188,7 +232,7 @@ private void invokeBus(String tag, Object arg, BusInfo busInfo, boolean sticky) } busInfo.method = method; } - invokeMethod(tag, arg, busInfo, sticky); + invokeMethod(bus, arg, busInfo, sticky); } private Method getMethodByBusInfo(BusInfo busInfo) { @@ -229,11 +273,15 @@ private Class getClassName(String paramType) throws ClassNotFoundException { } } - private void invokeMethod(final String tag, final Object arg, final BusInfo busInfo, final boolean sticky) { + private void invokeMethod(final Object arg, final BusInfo busInfo, final boolean sticky) { + invokeMethod(null, arg, busInfo, sticky); + } + + private void invokeMethod(final Object bus, final Object arg, final BusInfo busInfo, final boolean sticky) { Runnable runnable = new Runnable() { @Override public void run() { - realInvokeMethod(tag, arg, busInfo, sticky); + realInvokeMethod(bus, arg, busInfo, sticky); } }; switch (busInfo.threadMode) { @@ -257,22 +305,28 @@ public void run() { } } - private void realInvokeMethod(final String tag, Object arg, BusInfo busInfo, boolean sticky) { + private void realInvokeMethod(Object bus, Object arg, BusInfo busInfo, boolean sticky) { Set buses = new HashSet<>(); - for (String subClassName : busInfo.subClassNames) { - Set subBuses = mClassName_BusesMap.get(subClassName); - if (subBuses != null && !subBuses.isEmpty()) { - buses.addAll(subBuses); + if (bus == null) { + for (String subClassName : busInfo.subClassNames) { + Set subBuses = mClassName_BusesMap.get(subClassName); + if (subBuses != null && !subBuses.isEmpty()) { + buses.addAll(subBuses); + } } - } - if (buses.size() == 0) { - if (!sticky) { - Log.e(TAG, "The bus of tag <" + tag + "> was not registered before."); - return; - } else { + if (buses.size() == 0) { + if (!sticky) { + Log.e(TAG, "The " + busInfo + " was not registered before."); + } return; } + } else { + buses.add(bus); } + invokeBuses(arg, busInfo, buses); + } + + private void invokeBuses(Object arg, BusInfo busInfo, Set buses) { try { if (arg == NULL) { for (Object bus : buses) { @@ -291,20 +345,15 @@ private void realInvokeMethod(final String tag, Object arg, BusInfo busInfo, boo } private void postStickyInner(final String tag, final Object arg) { - postStickyInner(tag, arg, false); - } - - private void postStickyInner(final String tag, final Object arg, boolean isInvokeOnlySticky) { List busInfoList = mTag_BusInfoListMap.get(tag); if (busInfoList == null) { Log.e(TAG, "The bus of tag <" + tag + "> is not exists."); return; } + // 获取多对象,然后消费各个 busInfoList for (BusInfo busInfo : busInfoList) { if (!busInfo.sticky) { // not sticky bus will post directly. - if (!isInvokeOnlySticky) { - invokeBus(tag, arg, busInfo, false); - } + invokeBus(arg, busInfo, false); continue; } synchronized (mClassName_Tag_Arg4StickyMap) { @@ -315,7 +364,7 @@ private void postStickyInner(final String tag, final Object arg, boolean isInvok } tagArgMap.put(tag, arg); } - invokeBus(tag, arg, busInfo, true); + invokeBus(arg, busInfo, true); } } @@ -327,13 +376,11 @@ private void removeStickyInner(final String tag) { } for (BusInfo busInfo : busInfoList) { if (!busInfo.sticky) { - Log.e(TAG, "The bus of tag <" + tag + "> is not sticky."); - return; + continue; } synchronized (mClassName_Tag_Arg4StickyMap) { Map tagArgMap = mClassName_Tag_Arg4StickyMap.get(busInfo.className); if (tagArgMap == null || !tagArgMap.containsKey(tag)) { - Log.e(TAG, "The sticky bus of tag <" + tag + "> didn't post."); return; } tagArgMap.remove(tag); @@ -349,6 +396,7 @@ static void registerBus4Test(String tag, private static final class BusInfo { + String tag; String className; String funName; String paramType; @@ -359,8 +407,9 @@ private static final class BusInfo { Method method; List subClassNames; - BusInfo(String className, String funName, String paramType, String paramName, + BusInfo(String tag, String className, String funName, String paramType, String paramName, boolean sticky, String threadMode, int priority) { + this.tag = tag; this.className = className; this.funName = funName; this.paramType = paramType; @@ -373,14 +422,19 @@ private static final class BusInfo { @Override public String toString() { - return "BusInfo { desc: " + className + "#" + funName + - ("".equals(paramType) ? "()" : ("(" + paramType + " " + paramName + ")")) + + return "BusInfo { tag : " + tag + + ", desc: " + getDesc() + ", sticky: " + sticky + ", threadMode: " + threadMode + ", method: " + method + ", priority: " + priority + " }"; } + + private String getDesc() { + return className + "#" + funName + + ("".equals(paramType) ? "()" : ("(" + paramType + " " + paramName + ")")); + } } public enum ThreadMode { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java index 6fd8f11963..f6b3b2206c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java @@ -13,6 +13,7 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.StateListDrawable; import android.os.Build; +import android.os.SystemClock; import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.v4.view.ViewCompat; @@ -45,8 +46,7 @@ public class ClickUtils { private static final int PRESSED_BG_DARK_STYLE = 5; private static final float PRESSED_BG_DARK_DEFAULT_VALUE = 0.9f; - private static final int DEBOUNCING_TAG = -7; - private static final long DEBOUNCING_DEFAULT_VALUE = 200; + private static final long DEBOUNCING_DEFAULT_VALUE = 1000; private ClickUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); @@ -213,23 +213,15 @@ private static Drawable createStyleDrawable(Drawable src, int style, float value } private static Drawable createAlphaDrawable(Drawable drawable, float alpha) { -// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - DrawableWrapperBefore21 drawableWrapper = new DrawableWrapperBefore21(drawable); - drawableWrapper.setAlphaFix((int) (alpha * 255)); - return drawableWrapper; -// } -// drawable.setAlpha((int) (alpha * 255)); -// return drawable; + ClickDrawableWrapper drawableWrapper = new ClickDrawableWrapper(drawable); + drawableWrapper.setAlpha((int) (alpha * 255)); + return drawableWrapper; } private static Drawable createDarkDrawable(Drawable drawable, float alpha) { -// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - DrawableWrapperBefore21 drawableWrapper = new DrawableWrapperBefore21(drawable); - drawableWrapper.setColorFilterFix(getDarkColorFilter(alpha)); - return drawableWrapper; -// } -// drawable.setColorFilter(getDarkColorFilter(alpha)); -// return drawable; + ClickDrawableWrapper drawableWrapper = new ClickDrawableWrapper(drawable); + drawableWrapper.setColorFilter(getDarkColorFilter(alpha)); + return drawableWrapper; } private static ColorMatrixColorFilter getDarkColorFilter(float darkAlpha) { @@ -393,8 +385,8 @@ public static void back2HomeFriendly(final CharSequence tip) { public static void back2HomeFriendly(@NonNull final CharSequence tip, final long duration, @NonNull Back2HomeFriendlyListener listener) { - long nowMillis = System.currentTimeMillis(); - if (nowMillis - sLastClickMillis < duration) { + long nowMillis = SystemClock.elapsedRealtime(); + if (Math.abs(nowMillis - sLastClickMillis) < duration) { sClickCount++; if (sClickCount == 2) { UtilsBridge.startHomeActivity(); @@ -438,21 +430,7 @@ public void run() { }; private static boolean isValid(@NonNull final View view, final long duration) { - long curTime = System.currentTimeMillis(); - Object tag = view.getTag(DEBOUNCING_TAG); - if (!(tag instanceof Long)) { - view.setTag(DEBOUNCING_TAG, curTime); - return true; - } - long preTime = (Long) tag; - if (curTime - preTime < 0) { - view.setTag(DEBOUNCING_TAG, curTime); - return false; - } else if (curTime - preTime <= duration) { - return false; - } - view.setTag(DEBOUNCING_TAG, curTime); - return true; + return UtilsBridge.isValid(view, duration); } private long mDuration; @@ -586,14 +564,14 @@ private static class LazyHolder { } } - static class DrawableWrapperBefore21 extends ShadowUtils.DrawableWrapper { + static class ClickDrawableWrapper extends ShadowUtils.DrawableWrapper { private BitmapDrawable mBitmapDrawable = null; - //低版本ColorDrawable.setColorFilter无效,这里直接用画笔画上 + // 低版本ColorDrawable.setColorFilter无效,这里直接用画笔画上 private Paint mColorPaint = null; - public DrawableWrapperBefore21(Drawable drawable) { + public ClickDrawableWrapper(Drawable drawable) { super(drawable); if (drawable instanceof ColorDrawable) { mColorPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); @@ -603,25 +581,23 @@ public DrawableWrapperBefore21(Drawable drawable) { @Override public void setColorFilter(ColorFilter cf) { - //低版本StateListDrawable.selectDrawable会重置ColorFilter - } - - public void setColorFilterFix(ColorFilter cf) { super.setColorFilter(cf); - if (mColorPaint != null) { - mColorPaint.setColorFilter(cf); + // 低版本 StateListDrawable.selectDrawable 会重置 ColorFilter + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + if (mColorPaint != null) { + mColorPaint.setColorFilter(cf); + } } } @Override public void setAlpha(int alpha) { - //低版本StateListDrawable.selectDrawable会重置Alpha - } - - public void setAlphaFix(int alpha) { super.setAlpha(alpha); - if (mColorPaint != null) { - mColorPaint.setColor(((ColorDrawable) getWrappedDrawable()).getColor()); + // 低版本 StateListDrawable.selectDrawable 会重置 Alpha + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + if (mColorPaint != null) { + mColorPaint.setColor(((ColorDrawable) getWrappedDrawable()).getColor()); + } } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CollectionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CollectionUtils.java index 31517d741d..2fcdbd18ed 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CollectionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CollectionUtils.java @@ -79,7 +79,7 @@ public static ArrayList newArrayListNotNull(E... array) { } @SafeVarargs - public static List newLinkedList(E... array) { + public static LinkedList newLinkedList(E... array) { LinkedList list = new LinkedList<>(); if (array == null || array.length == 0) return list; for (E e : array) { @@ -89,7 +89,7 @@ public static List newLinkedList(E... array) { } @SafeVarargs - public static List newLinkedListNotNull(E... array) { + public static LinkedList newLinkedListNotNull(E... array) { LinkedList list = new LinkedList<>(); if (array == null || array.length == 0) return list; for (E e : array) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java index 93763b470b..d894de475b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java @@ -204,4 +204,14 @@ public static int getRandomColor(final boolean supportAlpha) { int high = supportAlpha ? (int) (Math.random() * 0x100) << 24 : 0xFF000000; return high | (int) (Math.random() * 0x1000000); } + + /** + * Return whether the color is light. + * + * @param color The color. + * @return {@code true}: yes
    {@code false}: no + */ + public boolean isLightColor(@ColorInt int color) { + return 0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color) >= 127.5; + } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java index 26e59fd330..d6f9eaafaf 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ConvertUtils.java @@ -566,7 +566,7 @@ public static ByteArrayOutputStream input2OutputStream(final InputStream is) { /** * Output stream to input stream. */ - public ByteArrayInputStream output2InputStream(final OutputStream out) { + public static ByteArrayInputStream output2InputStream(final OutputStream out) { if (out == null) return null; return new ByteArrayInputStream(((ByteArrayOutputStream) out).toByteArray()); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java new file mode 100644 index 0000000000..faac477b22 --- /dev/null +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java @@ -0,0 +1,88 @@ +package com.blankj.utilcode.util; + +import android.os.SystemClock; +import android.support.annotation.NonNull; +import android.text.TextUtils; +import android.view.View; + +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + *
    + *     author: Blankj
    + *     blog  : http://blankj.com
    + *     time  : 2020/09/01
    + *     desc  : utils about debouncing
    + * 
    + */ +class DebouncingUtils { + + private static final int CACHE_SIZE = 64; + private static final Map KEY_MILLIS_MAP = new ConcurrentHashMap<>(CACHE_SIZE); + private static final long DEBOUNCING_DEFAULT_VALUE = 1000; + + private DebouncingUtils() { + throw new UnsupportedOperationException("u can't instantiate me..."); + } + + /** + * Return whether the view is not in a jitter state. + * + * @param view The view. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isValid(@NonNull final View view) { + return isValid(view, DEBOUNCING_DEFAULT_VALUE); + } + + /** + * Return whether the view is not in a jitter state. + * + * @param view The view. + * @param duration The duration. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isValid(@NonNull final View view, final long duration) { + if (view == null) { + throw new IllegalArgumentException("The view is null."); + } + return isValid(String.valueOf(view.hashCode()), duration); + } + + /** + * Return whether the key is not in a jitter state. + * + * @param key The key. + * @param duration The duration. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isValid(@NonNull String key, final long duration) { + if (TextUtils.isEmpty(key)) { + throw new IllegalArgumentException("The key is null."); + } + if (duration < 0) { + throw new IllegalArgumentException("The duration is less than 0."); + } + long curTime = SystemClock.elapsedRealtime(); + clearIfNecessary(curTime); + Long validTime = KEY_MILLIS_MAP.get(key); + if (validTime == null || curTime >= validTime) { + KEY_MILLIS_MAP.put(key, curTime + duration); + return true; + } + return false; + } + + private static void clearIfNecessary(long curTime) { + if (KEY_MILLIS_MAP.size() < CACHE_SIZE) return; + for (Iterator> it = KEY_MILLIS_MAP.entrySet().iterator(); it.hasNext(); ) { + Map.Entry entry = it.next(); + Long validTime = entry.getValue(); + if (curTime >= validTime) { + it.remove(); + } + } + } +} diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java index 266734aa03..3fe852bf70 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java @@ -116,7 +116,7 @@ public static String getAndroidID() { @RequiresPermission(allOf = {ACCESS_WIFI_STATE, INTERNET, CHANGE_WIFI_STATE}) public static String getMacAddress() { String macAddress = getMacAddress((String[]) null); - if (!macAddress.equals("") || getWifiEnabled()) return macAddress; + if (!TextUtils.isEmpty(macAddress) || getWifiEnabled()) return macAddress; setWifiEnabled(true); setWifiEnabled(false); return getMacAddress((String[]) null); @@ -173,11 +173,17 @@ public static String getMacAddress(final String... excepts) { } private static boolean isAddressNotInExcepts(final String address, final String... excepts) { + if (TextUtils.isEmpty(address)) { + return false; + } + if ("02:00:00:00:00:00".equals(address)) { + return false; + } if (excepts == null || excepts.length == 0) { - return !"02:00:00:00:00:00".equals(address); + return true; } for (String filter : excepts) { - if (address.equals(filter)) { + if (filter != null && filter.equals(address)) { return false; } } @@ -191,7 +197,12 @@ private static String getMacAddressByWifiInfo() { .getApplicationContext().getSystemService(WIFI_SERVICE); if (wifi != null) { final WifiInfo info = wifi.getConnectionInfo(); - if (info != null) return info.getMacAddress(); + if (info != null) { + String macAddress = info.getMacAddress(); + if (!TextUtils.isEmpty(macAddress)) { + return macAddress; + } + } } } catch (Exception e) { e.printStackTrace(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java index 14d8d0f377..40de5ef5bb 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java @@ -1,5 +1,7 @@ package com.blankj.utilcode.util; +import android.os.Build; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -9,6 +11,7 @@ import java.security.KeyFactory; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; import java.security.spec.AlgorithmParameterSpec; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; @@ -1085,12 +1088,18 @@ private static byte[] rsaTemplate(final byte[] data, } try { Key rsaKey; + KeyFactory keyFactory; + if (Build.VERSION.SDK_INT < 28) { + keyFactory = KeyFactory.getInstance("RSA", "BC"); + } else { + keyFactory = KeyFactory.getInstance("RSA"); + } if (isEncrypt) { X509EncodedKeySpec keySpec = new X509EncodedKeySpec(key); - rsaKey = KeyFactory.getInstance("RSA").generatePublic(keySpec); + rsaKey = keyFactory.generatePublic(keySpec); } else { PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(key); - rsaKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec); + rsaKey = keyFactory.generatePrivate(keySpec); } if (rsaKey == null) return null; Cipher cipher = Cipher.getInstance(transformation); @@ -1135,6 +1144,8 @@ private static byte[] rsaTemplate(final byte[] data, e.printStackTrace(); } catch (InvalidKeySpecException e) { e.printStackTrace(); + } catch (NoSuchProviderException e) { + e.printStackTrace(); } return null; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java index 90b0ef6d74..1acca1e050 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FileUtils.java @@ -1168,7 +1168,7 @@ public static long getLength(final File file) { * @return the length of directory */ private static long getDirLength(final File dir) { - if (!isDir(dir)) return -1; + if (!isDir(dir)) return 0; long len = 0; File[] files = dir.listFiles(); if (files != null && files.length > 0) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java index 08807c350d..2364db719c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java @@ -8,6 +8,7 @@ import android.os.Bundle; import android.provider.MediaStore; import android.provider.Settings; +import android.support.annotation.Nullable; import android.support.annotation.RequiresPermission; import android.support.v4.content.FileProvider; @@ -153,14 +154,44 @@ public static Intent getLaunchAppDetailsSettingsIntent(final String pkgName, fin * @param content The content. * @return the intent of share text */ - public static Intent getShareTextIntent(final String content) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, content); + intent = Intent.createChooser(intent, ""); return getIntent(intent, true); } + /** + * Return the intent of share image. + * + * @param imagePath The path of image. + * @return the intent of share image + */ + public static Intent getShareImageIntent(final String imagePath) { + return getShareTextImageIntent("", imagePath); + } + + /** + * Return the intent of share image. + * + * @param imageFile The file of image. + * @return the intent of share image + */ + public static Intent getShareImageIntent(final File imageFile) { + return getShareTextImageIntent("", imageFile); + } + + /** + * Return the intent of share image. + * + * @param imageUri The uri of image. + * @return the intent of share image + */ + public static Intent getShareImageIntent(final Uri imageUri) { + return getShareTextImageIntent("", imageUri); + } + /** * Return the intent of share image. * @@ -168,38 +199,67 @@ public static Intent getShareTextIntent(final String content) { * @param imagePath The path of image. * @return the intent of share image */ - public static Intent getShareImageIntent(final String content, final String imagePath) { - if (UtilsBridge.isSpace(imagePath)) return null; - return getShareImageIntent(content, new File(imagePath)); + public static Intent getShareTextImageIntent(@Nullable final String content, final String imagePath) { + return getShareTextImageIntent(content, UtilsBridge.getFileByPath(imagePath)); } /** * Return the intent of share image. * - * @param content The content. - * @param image The file of image. + * @param content The content. + * @param imageFile The file of image. * @return the intent of share image */ - public static Intent getShareImageIntent(final String content, final File image) { - if (image == null || !image.isFile()) return null; - return getShareImageIntent(content, UtilsBridge.file2Uri(image)); + public static Intent getShareTextImageIntent(@Nullable final String content, final File imageFile) { + return getShareTextImageIntent(content, UtilsBridge.file2Uri(imageFile)); } /** * Return the intent of share image. * - * @param content The content. - * @param uri The uri of image. + * @param content The content. + * @param imageUri The uri of image. * @return the intent of share image */ - public static Intent getShareImageIntent(final String content, final Uri uri) { + public static Intent getShareTextImageIntent(@Nullable final String content, final Uri imageUri) { Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_TEXT, content); - intent.putExtra(Intent.EXTRA_STREAM, uri); + intent.putExtra(Intent.EXTRA_STREAM, imageUri); intent.setType("image/*"); + intent = Intent.createChooser(intent, ""); return getIntent(intent, true); } + /** + * Return the intent of share images. + * + * @param imagePaths The paths of images. + * @return the intent of share images + */ + public static Intent getShareImageIntent(final LinkedList imagePaths) { + return getShareTextImageIntent("", imagePaths); + } + + /** + * Return the intent of share images. + * + * @param images The files of images. + * @return the intent of share images + */ + public static Intent getShareImageIntent(final List images) { + return getShareTextImageIntent("", images); + } + + /** + * Return the intent of share images. + * + * @param uris The uris of image. + * @return the intent of share image + */ + public static Intent getShareImageIntent(final ArrayList uris) { + return getShareTextImageIntent("", uris); + } + /** * Return the intent of share images. * @@ -207,14 +267,18 @@ public static Intent getShareImageIntent(final String content, final Uri uri) { * @param imagePaths The paths of images. * @return the intent of share images */ - public static Intent getShareImageIntent(final String content, - final LinkedList imagePaths) { - if (imagePaths == null || imagePaths.isEmpty()) return null; + public static Intent getShareTextImageIntent(@Nullable final String content, + final LinkedList imagePaths) { List files = new ArrayList<>(); - for (String imagePath : imagePaths) { - files.add(new File(imagePath)); + if (imagePaths != null) { + for (String imagePath : imagePaths) { + File file = UtilsBridge.getFileByPath(imagePath); + if (file != null) { + files.add(file); + } + } } - return getShareImageIntent(content, files); + return getShareTextImageIntent(content, files); } /** @@ -224,14 +288,17 @@ public static Intent getShareImageIntent(final String content, * @param images The files of images. * @return the intent of share images */ - public static Intent getShareImageIntent(final String content, final List images) { - if (images == null || images.isEmpty()) return null; + public static Intent getShareTextImageIntent(@Nullable final String content, final List images) { ArrayList uris = new ArrayList<>(); - for (File image : images) { - if (!image.isFile()) continue; - uris.add(UtilsBridge.file2Uri(image)); + if (images != null) { + for (File image : images) { + Uri uri = UtilsBridge.file2Uri(image); + if (uri != null) { + uris.add(uri); + } + } } - return getShareImageIntent(content, uris); + return getShareTextImageIntent(content, uris); } /** @@ -241,11 +308,12 @@ public static Intent getShareImageIntent(final String content, final List * @param uris The uris of image. * @return the intent of share image */ - public static Intent getShareImageIntent(final String content, final ArrayList uris) { + public static Intent getShareTextImageIntent(@Nullable final String content, final ArrayList uris) { Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); intent.putExtra(Intent.EXTRA_TEXT, content); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); intent.setType("image/*"); + intent = Intent.createChooser(intent, ""); return getIntent(intent, true); } @@ -373,10 +441,21 @@ public static Intent getSendSmsIntent(final String phoneNumber, final String con * @return the intent of capture */ public static Intent getCaptureIntent(final Uri outUri) { + return getCaptureIntent(outUri, false); + } + + /** + * Return the intent of capture. + * + * @param outUri The uri of output. + * @param isNewTask True to add flag of new task, false otherwise. + * @return the intent of capture + */ + public static Intent getCaptureIntent(final Uri outUri, final boolean isNewTask) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, outUri); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - return getIntent(intent, true); + return getIntent(intent, isNewTask); } private static Intent getIntent(final Intent intent, final boolean isNewTask) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index 9f7791923d..38d08eff2d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.ResultReceiver; +import android.os.SystemClock; import android.support.annotation.NonNull; import android.util.Log; import android.view.View; @@ -142,7 +143,7 @@ public static void hideSoftInput(@NonNull final View view) { * @param activity The activity. */ public static void hideSoftInputByToggle(final Activity activity) { - long nowMillis = System.currentTimeMillis(); + long nowMillis = SystemClock.uptimeMillis(); long delta = nowMillis - millis; if (Math.abs(delta) > 500 && KeyboardUtils.isSoftInputVisible(activity)) { KeyboardUtils.toggleSoftInput(); @@ -231,7 +232,8 @@ public void onGlobalLayout() { * @param window The window. */ public static void unregisterSoftInputChangedListener(@NonNull final Window window) { - final FrameLayout contentView = window.findViewById(android.R.id.content); + final View contentView = window.findViewById(android.R.id.content); + if (contentView == null) return; Object tag = contentView.getTag(TAG_ON_GLOBAL_LAYOUT_LISTENER); if (tag instanceof OnGlobalLayoutListener) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java index d172079785..2ea696a6a3 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java @@ -92,12 +92,14 @@ public static void register(final String pkgName) { } public static void unregister(final String pkgName) { - if (sClientMap.containsKey(pkgName)) { - Client client = sClientMap.get(pkgName); - sClientMap.remove(pkgName); - client.unbind(); - } else { + if (!sClientMap.containsKey(pkgName)) { Log.i("MessengerUtils", "unregister: client didn't register: " + pkgName); + return; + } + Client client = sClientMap.get(pkgName); + sClientMap.remove(pkgName); + if (client != null) { + client.unbind(); } } @@ -133,13 +135,12 @@ static class Client { @Override public void handleMessage(Message msg) { Bundle data = msg.getData(); - if (data != null) { - String key = data.getString(KEY_STRING); - if (key != null) { - MessageCallback callback = subscribers.get(key); - if (callback != null) { - callback.messageCall(data); - } + data.setClassLoader(MessengerUtils.class.getClassLoader()); + String key = data.getString(KEY_STRING); + if (key != null) { + MessageCallback callback = subscribers.get(key); + if (callback != null) { + callback.messageCall(data); } } } @@ -153,6 +154,7 @@ public void onServiceConnected(ComponentName name, IBinder service) { mServer = new Messenger(service); int key = UtilsBridge.getCurrentProcessName().hashCode(); Message msg = Message.obtain(mReceiveServeMsgHandler, WHAT_SUBSCRIBE, key, 0); + msg.getData().setClassLoader(MessengerUtils.class.getClassLoader()); msg.replyTo = mClient; try { mServer.send(msg); @@ -233,6 +235,7 @@ private void sendCachedMsg2Server() { private boolean send2Server(Bundle bundle) { Message msg = Message.obtain(mReceiveServeMsgHandler, WHAT_SEND); + bundle.setClassLoader(MessengerUtils.class.getClassLoader()); msg.setData(bundle); msg.replyTo = mClient; try { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index 73a7e2347f..a550bf2820 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -13,6 +13,7 @@ import android.support.annotation.RequiresApi; import android.support.v4.content.ContextCompat; import android.util.Log; +import android.util.Pair; import android.view.MotionEvent; import android.view.WindowManager; @@ -88,8 +89,14 @@ public static List getPermissions(final String packageName) { * @param permissions The permissions. * @return {@code true}: yes
    {@code false}: no */ - public static boolean isGranted(final String... permissions) { - for (String permission : permissions) { + public static boolean isGranted(@Permission final String... permissions) { + Pair, List> requestAndDeniedPermissions = getRequestAndDeniedPermissions(permissions); + List deniedPermissions = requestAndDeniedPermissions.second; + if (!deniedPermissions.isEmpty()) { + return false; + } + List requestPermissions = requestAndDeniedPermissions.first; + for (String permission : requestPermissions) { if (!isGranted(permission)) { return false; } @@ -97,6 +104,27 @@ public static boolean isGranted(final String... permissions) { return true; } + private static Pair, List> getRequestAndDeniedPermissions(final String... permissionsParam) { + List requestPermissions = new ArrayList<>(); + List deniedPermissions = new ArrayList<>(); + List appPermissions = getPermissions(); + for (String param : permissionsParam) { + boolean isIncludeInManifest = false; + String[] permissions = PermissionConstants.getPermissions(param); + for (String permission : permissions) { + if (appPermissions.contains(permission)) { + requestPermissions.add(permission); + isIncludeInManifest = true; + } + } + if (!isIncludeInManifest) { + deniedPermissions.add(param); + Log.e("PermissionUtils", "U should add the permission of " + param + " in manifest."); + } + } + return Pair.create(requestPermissions, deniedPermissions); + } + private static boolean isGranted(final String permission) { return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || PackageManager.PERMISSION_GRANTED @@ -259,21 +287,10 @@ public void request() { mPermissionsDenied = new ArrayList<>(); mPermissionsDeniedForever = new ArrayList<>(); - List appPermissions = getPermissions(); - for (String param : mPermissionsParam) { - boolean isIncludeInManifest = false; - String[] permissions = PermissionConstants.getPermissions(param); - for (String permission : permissions) { - if (appPermissions.contains(permission)) { - mPermissions.add(permission); - isIncludeInManifest = true; - } - } - if (!isIncludeInManifest) { - mPermissionsDenied.add(param); - Log.e("PermissionUtils", "U should add the permission of " + param + " in manifest."); - } - } + Pair, List> requestAndDeniedPermissions = getRequestAndDeniedPermissions(mPermissionsParam); + mPermissions.addAll(requestAndDeniedPermissions.first); + mPermissionsDenied.addAll(requestAndDeniedPermissions.second); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { mPermissionsGranted.addAll(mPermissions); requestCallback(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java index 40334ff414..ae90e4ea5e 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java @@ -154,9 +154,10 @@ public static boolean isIDCard18Exact(final CharSequence input) { CITY_MAP.put("64", "宁夏"); CITY_MAP.put("65", "新疆"); - CITY_MAP.put("71", "台湾"); + CITY_MAP.put("71", "台湾老"); CITY_MAP.put("81", "香港"); CITY_MAP.put("82", "澳门"); + CITY_MAP.put("83", "台湾新"); CITY_MAP.put("91", "国外"); } if (CITY_MAP.get(input.subSequence(0, 2).toString()) != null) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java index b01e18658a..079d138eea 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java @@ -242,14 +242,14 @@ public static Bitmap screenShot(@NonNull final Activity activity, boolean isDele decorView.setDrawingCacheEnabled(true); decorView.setWillNotCacheDrawing(false); Bitmap bmp = decorView.getDrawingCache(); - if (bmp == null) { + if (bmp == null || bmp.isRecycled()) { decorView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); decorView.layout(0, 0, decorView.getMeasuredWidth(), decorView.getMeasuredHeight()); decorView.buildDrawingCache(); bmp = Bitmap.createBitmap(decorView.getDrawingCache()); } - if (bmp == null) return null; + if (bmp == null || bmp.isRecycled()) return null; DisplayMetrics dm = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(dm); Bitmap ret; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java index 2cd6890242..6a1087f8ff 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.os.Build; import android.support.annotation.NonNull; import java.util.HashSet; @@ -60,8 +61,17 @@ public static void startService(@NonNull final String className) { * @param cls The service class. */ public static void startService(@NonNull final Class cls) { - Intent intent = new Intent(Utils.getApp(), cls); - Utils.getApp().startService(intent); + try { + Intent intent = new Intent(Utils.getApp(), cls); + intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Utils.getApp().startForegroundService(intent); + } else { + Utils.getApp().startService(intent); + } + } catch (Exception e) { + e.printStackTrace(); + } } /** @@ -165,12 +175,16 @@ public static boolean isServiceRunning(@NonNull final Class cls) { * @return {@code true}: yes
    {@code false}: no */ public static boolean isServiceRunning(@NonNull final String className) { - ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); - List info = am.getRunningServices(0x7FFFFFFF); - if (info == null || info.size() == 0) return false; - for (RunningServiceInfo aInfo : info) { - if (className.equals(aInfo.service.getClassName())) return true; + try { + ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); + List info = am.getRunningServices(0x7FFFFFFF); + if (info == null || info.size() == 0) return false; + for (RunningServiceInfo aInfo : info) { + if (className.equals(aInfo.service.getClassName())) return true; + } + return false; + } catch (Exception ignore) { + return false; } - return false; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index 82c4a37e30..3abb3b35ab 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -1,21 +1,21 @@ package com.blankj.utilcode.util; -import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; -import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Handler; import android.os.Message; +import android.support.annotation.CallSuper; import android.support.annotation.ColorInt; import android.support.annotation.DrawableRes; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.app.NotificationManagerCompat; import android.util.Log; @@ -26,6 +26,8 @@ import android.widget.TextView; import android.widget.Toast; +import com.blankj.utilcode.R; + import java.lang.reflect.Field; /** @@ -255,88 +257,43 @@ private static void show(final String format, final int duration, final Object.. } private static void show(final CharSequence text, final int duration) { - UtilsBridge.runOnUiThread(new Runnable() { - @SuppressLint("ShowToast") - @Override - public void run() { - cancel(); - iToast = ToastFactory.makeToast(Utils.getApp(), text, duration); - final View toastView = iToast.getView(); - if (toastView == null) return; - final TextView tvMessage = toastView.findViewById(android.R.id.message); - if (sMsgColor != COLOR_DEFAULT) { - tvMessage.setTextColor(sMsgColor); - } - if (sMsgTextSize != -1) { - tvMessage.setTextSize(sMsgTextSize); - } - if (sGravity != -1 || sXOffset != -1 || sYOffset != -1) { - iToast.setGravity(sGravity, sXOffset, sYOffset); - } - setBg(tvMessage); - iToast.show(); - } - }); + show(null, text, duration); } private static void show(final View view, final int duration) { + show(view, null, duration); + } + + private static void show(@Nullable final View view, final CharSequence text, final int duration) { UtilsBridge.runOnUiThread(new Runnable() { @Override public void run() { cancel(); - iToast = ToastFactory.newToast(Utils.getApp()); - iToast.setView(view); + iToast = newToast(); + if (view != null) { + iToast.setView(view); + } else { + iToast.setMsgView(text); + } iToast.setDuration(duration); if (sGravity != -1 || sXOffset != -1 || sYOffset != -1) { iToast.setGravity(sGravity, sXOffset, sYOffset); } - setBg(); iToast.show(); } }); } - private static void setBg() { - if (sBgResource != -1) { - final View toastView = iToast.getView(); - toastView.setBackgroundResource(sBgResource); - } else if (sBgColor != COLOR_DEFAULT) { - final View toastView = iToast.getView(); - Drawable background = toastView.getBackground(); - if (background != null) { - background.setColorFilter( - new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN) - ); - } else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - toastView.setBackground(new ColorDrawable(sBgColor)); - } else { - toastView.setBackgroundDrawable(new ColorDrawable(sBgColor)); - } - } - } - } - private static void setBg(final TextView tvMsg) { - if (sBgResource != -1) { - final View toastView = iToast.getView(); - toastView.setBackgroundResource(sBgResource); - tvMsg.setBackgroundColor(Color.TRANSPARENT); - } else if (sBgColor != COLOR_DEFAULT) { - final View toastView = iToast.getView(); - Drawable tvBg = toastView.getBackground(); - Drawable msgBg = tvMsg.getBackground(); - if (tvBg != null && msgBg != null) { - tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN)); - tvMsg.setBackgroundColor(Color.TRANSPARENT); - } else if (tvBg != null) { - tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN)); - } else if (msgBg != null) { - msgBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN)); - } else { - toastView.setBackgroundColor(sBgColor); + private static IToast newToast() { + if (NotificationManagerCompat.from(Utils.getApp()).areNotificationsEnabled()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (!UtilsBridge.isGrantedDrawOverlays()) { + return new SystemToast(new Toast(Utils.getApp())); + } } } + return new ToastWithoutNotification(new Toast(Utils.getApp())); } private static View getView(@LayoutRes final int layoutId) { @@ -345,38 +302,6 @@ private static View getView(@LayoutRes final int layoutId) { return inflate.inflate(layoutId, null); } - static class ToastFactory { - - static IToast makeToast(Context context, CharSequence text, int duration) { - if (NotificationManagerCompat.from(context).areNotificationsEnabled()) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (!UtilsBridge.isGrantedDrawOverlays()) { - return new SystemToast(makeNormalToast(context, text, duration)); - } - } - } - return new ToastWithoutNotification(makeNormalToast(context, text, duration)); - } - - static IToast newToast(Context context) { - if (NotificationManagerCompat.from(context).areNotificationsEnabled()) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (!UtilsBridge.isGrantedDrawOverlays()) { - return new SystemToast(new Toast(context)); - } - } - } - return new ToastWithoutNotification(new Toast(context)); - } - - private static Toast makeNormalToast(Context context, CharSequence text, int duration) { - @SuppressLint("ShowToast") - Toast toast = Toast.makeText(context, "", duration); - toast.setText(text); - return toast; - } - } - static class SystemToast extends AbsToast { SystemToast(Toast toast) { @@ -403,6 +328,7 @@ public void show() { @Override public void cancel() { mToast.cancel(); + super.cancel(); } static class SafeHandler extends Handler { @@ -430,7 +356,6 @@ public void dispatchMessage(Message msg) { static class ToastWithoutNotification extends AbsToast { - private View mView; private WindowManager mWM; private WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(); @@ -441,24 +366,13 @@ static class ToastWithoutNotification extends AbsToast { @Override public void show() { - UtilsBridge.runOnUiThreadDelayed(new Runnable() { - @Override - public void run() { - realShow(); - } - }, 300); - } - - private void realShow() { if (mToast == null) return; - mView = mToast.getView(); - if (mView == null) return; - final Context context = mToast.getView().getContext(); + boolean isActivityContext = false; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) { - mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + mWM = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE); mParams.type = WindowManager.LayoutParams.TYPE_TOAST; } else if (UtilsBridge.isGrantedDrawOverlays()) { - mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + mWM = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { mParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; } else { @@ -479,6 +393,7 @@ private void realShow() { new SystemToast(mToast).show(); return; } + isActivityContext = true; mWM = topActivity.getWindowManager(); mParams.type = WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; UtilsBridge.addActivityLifecycleCallbacks(topActivity, getActivityLifecycleCallbacks()); @@ -486,18 +401,17 @@ private void realShow() { setToastParams(); - try { - if (mWM != null) { - mWM.addView(mView, mParams); - } - } catch (Exception ignored) {/**/} - - UtilsBridge.runOnUiThreadDelayed(new Runnable() { - @Override - public void run() { - cancel(); - } - }, mToast.getDuration() == Toast.LENGTH_SHORT ? 2000 : 3500); + final long duration = mToast.getDuration() == Toast.LENGTH_SHORT ? 2000 : 3500; + if (isActivityContext) { + UtilsBridge.runOnUiThreadDelayed(new Runnable() { + @Override + public void run() { + setToast(duration); + } + }, 300); + } else { + setToast(duration); + } } private void setToastParams() { @@ -525,6 +439,21 @@ private void setToastParams() { mParams.verticalMargin = mToast.getVerticalMargin(); } + private void setToast(long duration) { + try { + if (mWM != null) { + mWM.addView(mToastView, mParams); + } + } catch (Exception ignored) {/**/} + + UtilsBridge.runOnUiThreadDelayed(new Runnable() { + @Override + public void run() { + cancel(); + } + }, duration); + } + private Utils.ActivityLifecycleCallbacks getActivityLifecycleCallbacks() { return new Utils.ActivityLifecycleCallbacks() { @Override @@ -540,18 +469,18 @@ public void onActivityDestroyed(@NonNull Activity activity) { public void cancel() { try { if (mWM != null) { - mWM.removeViewImmediate(mView); + mWM.removeViewImmediate(mToastView); } } catch (Exception ignored) {/**/} - mView = null; mWM = null; - mToast = null; + super.cancel(); } } static abstract class AbsToast implements IToast { - Toast mToast; + protected Toast mToast; + protected View mToastView; AbsToast(Toast toast) { mToast = toast; @@ -559,12 +488,52 @@ static abstract class AbsToast implements IToast { @Override public void setView(View view) { - mToast.setView(view); + mToastView = view; + mToast.setView(mToastView); + } + + @Override + public void setMsgView(CharSequence text) { + mToastView = mToast.getView(); + if (mToastView == null || mToastView.findViewById(android.R.id.message) == null) { + mToastView = ToastUtils.getView(R.layout.toast_layout); + mToast.setView(mToastView); + } + + TextView tvMessage = mToastView.findViewById(android.R.id.message); + tvMessage.setText(text); + if (sMsgColor != COLOR_DEFAULT) { + tvMessage.setTextColor(sMsgColor); + } + if (sMsgTextSize != -1) { + tvMessage.setTextSize(sMsgTextSize); + } + setBg(tvMessage); + } + + private void setBg(final TextView tvMsg) { + if (sBgResource != -1) { + mToastView.setBackgroundResource(sBgResource); + tvMsg.setBackgroundColor(Color.TRANSPARENT); + } else if (sBgColor != COLOR_DEFAULT) { + Drawable tvBg = mToastView.getBackground(); + Drawable msgBg = tvMsg.getBackground(); + if (tvBg != null && msgBg != null) { + tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN)); + tvMsg.setBackgroundColor(Color.TRANSPARENT); + } else if (tvBg != null) { + tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN)); + } else if (msgBg != null) { + msgBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN)); + } else { + mToastView.setBackgroundColor(sBgColor); + } + } } @Override public View getView() { - return mToast.getView(); + return mToastView; } @Override @@ -586,6 +555,13 @@ public void setText(int resId) { public void setText(CharSequence s) { mToast.setText(s); } + + @Override + @CallSuper + public void cancel() { + mToast = null; + mToastView = null; + } } interface IToast { @@ -596,6 +572,8 @@ interface IToast { void setView(View view); + void setMsgView(CharSequence text); + View getView(); void setDuration(int duration); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java index f589c42a09..ec67e45088 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java @@ -10,7 +10,6 @@ import android.os.storage.StorageManager; import android.provider.DocumentsContract; import android.provider.MediaStore; -import android.support.annotation.NonNull; import android.support.v4.content.FileProvider; import android.text.TextUtils; import android.util.Log; @@ -54,7 +53,8 @@ public static Uri res2Uri(String resPath) { * @param file The file. * @return uri */ - public static Uri file2Uri(@NonNull final File file) { + public static Uri file2Uri(final File file) { + if (!UtilsBridge.isFileExists(file)) return null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { String authority = Utils.getApp().getPackageName() + ".utilcode.provider"; return FileProvider.getUriForFile(Utils.getApp(), authority, file); @@ -69,7 +69,8 @@ public static Uri file2Uri(@NonNull final File file) { * @param uri The uri. * @return file */ - public static File uri2File(@NonNull final Uri uri) { + public static File uri2File(final Uri uri) { + if (uri == null) return null; File file = uri2FileReal(uri); if (file != null) return file; return copyUri2Cache(uri); @@ -81,7 +82,7 @@ public static File uri2File(@NonNull final Uri uri) { * @param uri The uri. * @return file */ - private static File uri2FileReal(@NonNull final Uri uri) { + private static File uri2FileReal(final Uri uri) { Log.d("UriUtils", uri.toString()); String authority = uri.getAuthority(); String scheme = uri.getScheme(); @@ -188,6 +189,13 @@ else if ("com.android.providers.downloads.documents".equals(authority)) { id = id.split(":")[1]; } + long availableId = 0; + try { + availableId = Long.parseLong(id); + } catch (Exception e) { + return null; + } + String[] contentUriPrefixesToTry = new String[]{ "content://downloads/public_downloads", "content://downloads/all_downloads", @@ -195,7 +203,7 @@ else if ("com.android.providers.downloads.documents".equals(authority)) { }; for (String contentUriPrefix : contentUriPrefixesToTry) { - Uri contentUri = ContentUris.withAppendedId(Uri.parse(contentUriPrefix), Long.valueOf(id)); + Uri contentUri = ContentUris.withAppendedId(Uri.parse(contentUriPrefix), availableId); try { File file = getFileFromUri(contentUri, "1_1"); if (file != null) { @@ -325,6 +333,7 @@ private static File copyUri2Cache(Uri uri) { * @return the input stream */ public static byte[] uri2Bytes(Uri uri) { + if (uri == null) return null; InputStream is = null; try { is = Utils.getApp().getContentResolver().openInputStream(uri); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index eed6d88747..0123ab96c1 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -335,9 +335,7 @@ private List getActivitiesByReflect() { private Object getActivityThread() { Object activityThread = getActivityThreadInActivityThreadStaticField(); if (activityThread != null) return activityThread; - activityThread = getActivityThreadInActivityThreadStaticMethod(); - if (activityThread != null) return activityThread; - return getActivityThreadInLoadedApkField(); + return getActivityThreadInActivityThreadStaticMethod(); } private Object getActivityThreadInActivityThreadStaticField() { @@ -362,20 +360,6 @@ private Object getActivityThreadInActivityThreadStaticMethod() { } } - private Object getActivityThreadInLoadedApkField() { - try { - Field mLoadedApkField = Application.class.getDeclaredField("mLoadedApk"); - mLoadedApkField.setAccessible(true); - Object mLoadedApk = mLoadedApkField.get(Utils.getApp()); - Field mActivityThreadField = mLoadedApk.getClass().getDeclaredField("mActivityThread"); - mActivityThreadField.setAccessible(true); - return mActivityThreadField.get(mLoadedApk); - } catch (Exception e) { - Log.e("UtilsActivityLifecycle", "getActivityThreadInLoadedApkField: " + e.getMessage()); - return null; - } - } - /** * Set animators enabled. */ diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 88335a7a26..97ec53579d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -225,6 +225,13 @@ static List inputStream2Lines(final InputStream is, final String charset return ConvertUtils.inputStream2Lines(is, charsetName); } + /////////////////////////////////////////////////////////////////////////// + // DebouncingUtils + /////////////////////////////////////////////////////////////////////////// + static boolean isValid(@NonNull final View view, final long duration) { + return DebouncingUtils.isValid(view, duration); + } + /////////////////////////////////////////////////////////////////////////// // EncodeUtils /////////////////////////////////////////////////////////////////////////// @@ -445,6 +452,13 @@ static String getCurrentProcessName() { return ProcessUtils.getCurrentProcessName(); } + /////////////////////////////////////////////////////////////////////////// + // RomUtils + /////////////////////////////////////////////////////////////////////////// + static boolean isSamsung() { + return RomUtils.isSamsung(); + } + /////////////////////////////////////////////////////////////////////////// // SDCardUtils /////////////////////////////////////////////////////////////////////////// diff --git a/lib/utilcode/src/main/res/drawable/toast_frame.xml b/lib/utilcode/src/main/res/drawable/toast_frame.xml new file mode 100644 index 0000000000..24e3922412 --- /dev/null +++ b/lib/utilcode/src/main/res/drawable/toast_frame.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/lib/utilcode/src/main/res/layout/toast_layout.xml b/lib/utilcode/src/main/res/layout/toast_layout.xml new file mode 100644 index 0000000000..d66836ea8f --- /dev/null +++ b/lib/utilcode/src/main/res/layout/toast_layout.xml @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java index 15894fe7d9..9e69a2fbae 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/BusUtilsTest.java @@ -1,5 +1,7 @@ package com.blankj.utilcode.util; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; import org.junit.Before; import org.junit.Test; @@ -41,11 +43,6 @@ public void oneParamFun(String param) { } @BusUtils.Bus(tag = TAG_NO_PARAM_STICKY, sticky = true) - public void noParamStickyFun() { - System.out.println("noParamSticky"); - } - - @BusUtils.Bus(tag = TAG_NO_PARAM_STICKY) public void foo() { System.out.println("foo"); } @@ -86,7 +83,7 @@ public void setUp() throws Exception { BusUtils.registerBus4Test(TAG_NO_PARAM, BusUtilsTest.class.getName(), "noParamFun", "", "", false, "POSTING", 0); BusUtils.registerBus4Test(TAG_ONE_PARAM, BusUtilsTest.class.getName(), "oneParamFun", String.class.getName(), "param", false, "POSTING", 0); BusUtils.registerBus4Test(TAG_NO_PARAM_STICKY, BusUtilsTest.class.getName(), "noParamStickyFun", "", "", true, "POSTING", 0); - BusUtils.registerBus4Test(TAG_NO_PARAM_STICKY, BusUtilsTest.class.getName(), "foo", "", "", false, "POSTING", 0); + BusUtils.registerBus4Test(TAG_NO_PARAM_STICKY, BusUtilsTest.class.getName(), "foo", "", "", true, "POSTING", 0); BusUtils.registerBus4Test(TAG_ONE_PARAM_STICKY, BusUtilsTest.class.getName(), "oneParamStickyFun", Callback.class.getName(), "callback", true, "POSTING", 0); BusUtils.registerBus4Test(TAG_IO, BusUtilsTest.class.getName(), "ioFun", CountDownLatch.class.getName(), "latch", false, "IO", 0); @@ -95,13 +92,52 @@ public void setUp() throws Exception { BusUtils.registerBus4Test(TAG_SINGLE, BusUtilsTest.class.getName(), "singleFun", CountDownLatch.class.getName(), "latch", false, "SINGLE", 0); } + @BusUtils.Bus(tag = TAG_NO_PARAM_STICKY, sticky = true) + public void noParamStickyFun() { +// BusUtils.removeSticky(TAG_NO_PARAM_STICKY); + System.out.println("noParamSticky"); + } + + @Subscribe(sticky = true) + public void eventBusFun(String param) { + System.out.println(param); + } + + @Subscribe(sticky = true) + public void eventBusFun1(String param) { + System.out.println("foo"); + } + + @Test + public void testEventBusSticky() { + EventBus.getDefault().postSticky("test"); + System.out.println("----"); + + BusUtilsTest test = new BusUtilsTest(); + EventBus.getDefault().register(new BusUtilsTest()); + EventBus.getDefault().register(new BusUtilsTest()); + EventBus.getDefault().register(new BusUtilsTest()); + + System.out.println("----"); + + EventBus.getDefault().postSticky("test"); + EventBus.getDefault().postSticky("test"); + } + @Test public void testSticky() { BusUtils.postSticky(TAG_NO_PARAM_STICKY); + System.out.println("----"); + BusUtilsTest test = new BusUtilsTest(); - BusUtils.register(test); + BusUtils.register(new BusUtilsTest()); + BusUtils.register(new BusUtilsTest()); + BusUtils.register(new BusUtilsTest()); - BusUtils.postSticky(TAG_NO_PARAM_STICKY); + System.out.println("----"); + + BusUtils.post(TAG_NO_PARAM_STICKY); +// BusUtils.post(TAG_NO_PARAM_STICKY); } @Test diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle index 11a345f42d..8a06562880 100644 --- a/lib/utildebug/build.gradle +++ b/lib/utildebug/build.gradle @@ -8,8 +8,4 @@ dependencies { testImplementation Config.depConfig.test_junit.dep testImplementation Config.depConfig.test_robolectric.dep testImplementation Config.depConfig.support_appcompat_v7.dep -} - -afterEvaluate { - verifyReleaseResources.enabled(false) } \ No newline at end of file diff --git a/plugin/api-gradle-plugin/README.md b/plugin/api-gradle-plugin/README.md index 1d7e39dee7..ed673a5070 100644 --- a/plugin/api-gradle-plugin/README.md +++ b/plugin/api-gradle-plugin/README.md @@ -44,7 +44,7 @@ apply plugin: "com.blankj.api" 给你的项目添加 **[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode)** 依赖: ```groovy -api "com.blankj:utilcode:latest_version" +api "com.blankj:utilcode:latest.release" ``` 如果你单纯只想引入 `ApiUtils` 也是可以的,需要你自己拷贝一份这个类放到你工程里,然后在 app 下的 `build.gradle` 中 配置 api 的 DSL 域如下所示: diff --git a/plugin/bus-gradle-plugin/README.md b/plugin/bus-gradle-plugin/README.md index 85c3eaf6f1..ec039ca8fd 100644 --- a/plugin/bus-gradle-plugin/README.md +++ b/plugin/bus-gradle-plugin/README.md @@ -33,7 +33,7 @@ apply plugin: "com.blankj.bus" 给你的项目添加 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) 依赖: ```groovy -api "com.blankj:utilcode:latest_version +api "com.blankj:utilcode:latest.release ``` 如果你单纯只想引入 `BusUtils` 也是可以的,需要你自己拷贝一份这个类放到你工程里,记得还要拷贝 `ThreadUtils` 哦,然后在 app 下的 `build.gradle` 中 配置 bus 的 DSL 域如下所示: From e84d6294fdd2a9462072c3564f387fdb51de9e78 Mon Sep 17 00:00:00 2001 From: limuyang Date: Mon, 12 Oct 2020 11:57:27 +0800 Subject: [PATCH 073/122] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=9B=BE=E7=89=87=E6=97=B6=E7=9A=84=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/blankj/utilcode/util/ImageUtils.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index f3222ad8f3..7b50da20d6 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -1709,6 +1709,7 @@ public static File save2Album(final Bitmap src, contentUri = MediaStore.Images.Media.INTERNAL_CONTENT_URI; } contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DCIM + "/" + Utils.getApp().getPackageName()); + contentValues.put(MediaStore.Video.Media.IS_PENDING, 1); Uri uri = Utils.getApp().getContentResolver().insert(contentUri, contentValues); if (uri == null) { return null; @@ -1717,8 +1718,14 @@ public static File save2Album(final Bitmap src, try { os = Utils.getApp().getContentResolver().openOutputStream(uri); src.compress(format, quality, os); + + contentValues.clear(); + contentValues.put(MediaStore.Video.Media.IS_PENDING, 0); + Utils.getApp().getContentResolver().update(uri, contentValues, null, null); + return UtilsBridge.uri2File(uri); } catch (Exception e) { + Utils.getApp().getContentResolver().delete(uri, null, null); e.printStackTrace(); return null; } finally { From 42982c4cb36f353c91fe822d0cbc562dd74a3c52 Mon Sep 17 00:00:00 2001 From: limuyang Date: Mon, 12 Oct 2020 12:47:11 +0800 Subject: [PATCH 074/122] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=9B=BE=E7=89=87=E6=97=B6=E7=9A=84=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/blankj/utilcode/util/ImageUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index 7b50da20d6..9e27fbde73 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -1709,7 +1709,7 @@ public static File save2Album(final Bitmap src, contentUri = MediaStore.Images.Media.INTERNAL_CONTENT_URI; } contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DCIM + "/" + Utils.getApp().getPackageName()); - contentValues.put(MediaStore.Video.Media.IS_PENDING, 1); + contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1); Uri uri = Utils.getApp().getContentResolver().insert(contentUri, contentValues); if (uri == null) { return null; @@ -1720,7 +1720,7 @@ public static File save2Album(final Bitmap src, src.compress(format, quality, os); contentValues.clear(); - contentValues.put(MediaStore.Video.Media.IS_PENDING, 0); + contentValues.put(MediaStore.MediaColumns.IS_PENDING, 0); Utils.getApp().getContentResolver().update(uri, contentValues, null, null); return UtilsBridge.uri2File(uri); From 538d76c9c8b1753f4114276bc0a04e60ed08c5ac Mon Sep 17 00:00:00 2001 From: Blankj Date: Sun, 25 Oct 2020 02:33:15 +0800 Subject: [PATCH 075/122] see 10/25 log --- CHANGELOG.md | 9 +- buildSrc/src/main/groovy/Config.groovy | 4 +- .../com/blankj/launcher/app/LauncherApp.java | 8 - .../feature/dangerous/DangerousActivity.kt | 16 +- .../pkg/feature/location/LocationActivity.kt | 43 +- .../utilcode/pkg/src/main/AndroidManifest.xml | 13 +- .../utilcode/pkg/feature/CoreUtilActivity.kt | 13 + .../utilcode/pkg/feature/api/ApiActivity.kt | 4 +- .../utilcode/pkg/feature/app/AppActivity.kt | 2 +- .../pkg/feature/bar/nav/BarNavActivity.kt | 16 +- .../feature/bar/status/BarStatusActivity.kt | 16 +- .../bar/status/BarStatusActivityAlpha.kt | 10 +- .../bar/status/BarStatusActivityDrawer.kt | 55 +- .../bar/status/BarStatusActivityImageView.kt | 10 +- .../status/fragment/BarStatusFragmentAlpha.kt | 10 +- .../fragment/BarStatusFragmentImageView.kt | 10 +- .../feature/brightness/BrightnessActivity.kt | 28 +- .../feature/clipboard/ClipboardActivity.kt | 76 ++ .../feature/flashlight/FlashlightActivity.kt | 8 +- .../pkg/feature/image/ImageActivity.kt | 94 ++- .../pkg/feature/language/LanguageActivity.kt | 39 +- .../utilcode/pkg/feature/log/LogActivity.kt | 70 +- .../pkg/feature/metaData/MetaDataActivity.kt | 4 +- .../utilcode/pkg/feature/mvp/MvpView.java | 27 +- .../pkg/feature/network/NetworkActivity.kt | 6 +- .../feature/permission/PermissionActivity.kt | 79 +- .../pkg/feature/screen/ScreenActivity.kt | 24 +- .../utilcode/pkg/feature/toast/CustomToast.kt | 51 +- .../pkg/feature/toast/ToastActivity.kt | 66 +- .../pkg/feature/volume/VolumeActivity.kt | 63 ++ .../pkg/src/main/res/layout/mvp_activity.xml | 13 + .../src/main/res/values-en-rUS/strings.xml | 4 +- .../src/main/res/values-zh-rCN/strings.xml | 10 +- .../pkg/src/main/res/values/strings.xml | 18 +- .../java/com/blankj/base/BaseApplication.java | 7 +- .../com/blankj/base/mvp/BasePresenter.java | 4 +- .../common/activity/CommonActivity.java | 7 + .../blankj/common/helper/PermissionHelper.kt | 16 +- .../blankj/common/item/CommonItemSeekBar.java | 47 +- lib/subutil/README-CN.md | 13 - lib/subutil/README.md | 13 - .../blankj/subutil/util/AppStoreUtils.java | 36 +- .../blankj/subutil/util/ClipboardUtils.java | 96 --- .../blankj/subutil/util/DangerousUtils.java | 2 +- .../com/blankj/subutil/util/HttpsUtil.java | 6 +- .../subutil/util/ClipboardUtilsTest.java | 50 -- .../com/blankj/subutil/util/TestUtils.java | 31 - lib/utilcode/README-CN.md | 171 ++-- lib/utilcode/README.md | 92 ++- .../constant/PermissionConstants.java | 48 +- .../blankj/utilcode/util/ActivityUtils.java | 18 + .../utilcode/util/AdaptScreenUtils.java | 3 +- .../com/blankj/utilcode/util/AppUtils.java | 3 +- .../com/blankj/utilcode/util/BarUtils.java | 7 +- .../com/blankj/utilcode/util/BusUtils.java | 6 +- .../blankj/utilcode/util/ClipboardUtils.java | 109 +++ .../com/blankj/utilcode/util/CrashUtils.java | 53 +- .../blankj/utilcode/util/DebouncingUtils.java | 3 - .../blankj/utilcode/util/EncryptUtils.java | 19 +- .../blankj/utilcode/util/FlashlightUtils.java | 2 +- .../com/blankj/utilcode/util/ImageUtils.java | 174 +++- .../com/blankj/utilcode/util/JsonUtils.java | 6 +- .../blankj/utilcode/util/KeyboardUtils.java | 2 +- .../blankj/utilcode/util/LanguageUtils.java | 319 ++++--- .../com/blankj/utilcode/util/LogUtils.java | 173 ++-- .../blankj/utilcode/util/MessengerUtils.java | 6 +- .../blankj/utilcode/util/NetworkUtils.java | 5 +- .../blankj/utilcode/util/PermissionUtils.java | 100 ++- .../com/blankj/utilcode/util/ScreenUtils.java | 27 +- .../com/blankj/utilcode/util/StringUtils.java | 43 +- .../com/blankj/utilcode/util/ToastUtils.java | 777 ++++++++++++------ .../util/UtilsActivityLifecycleImpl.java | 164 ++-- .../com/blankj/utilcode/util/UtilsBridge.java | 145 +++- .../utilcode/util/UtilsTransActivity.java | 4 +- .../com/blankj/utilcode/util/ViewUtils.java | 9 + .../com/blankj/utilcode/util/VolumeUtils.java | 120 +++ .../{toast_frame.xml => utils_toast_bg.xml} | 1 - .../src/main/res/layout/toast_layout.xml | 23 - .../src/main/res/layout/utils_toast_view.xml | 72 ++ .../java/com/blankj/utildebug/DebugUtils.java | 5 + .../utildebug/base/view/SwipeRightMenu.java | 4 +- 81 files changed, 2500 insertions(+), 1460 deletions(-) create mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clipboard/ClipboardActivity.kt create mode 100644 feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/volume/VolumeActivity.kt delete mode 100644 lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java delete mode 100644 lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java delete mode 100644 lib/subutil/src/test/java/com/blankj/subutil/util/TestUtils.java create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/ClipboardUtils.java create mode 100644 lib/utilcode/src/main/java/com/blankj/utilcode/util/VolumeUtils.java rename lib/utilcode/src/main/res/drawable/{toast_frame.xml => utils_toast_bg.xml} (79%) delete mode 100644 lib/utilcode/src/main/res/layout/toast_layout.xml create mode 100644 lib/utilcode/src/main/res/layout/utils_toast_view.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index a20bd884ef..f418e68ab7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ -* `20/09/06` [add] DebouncingUtils. +* `20/10/24` [add] Publish v1.30.0. +* `20/10/23` [fix] LanguageUtils crash on some device. +* `20/10/21` [add] LogUtils.Config#setOnConsoleOutputListener, setOnFileOutputListener, addFileExtraHead. LogUtils.getCurrentLogFilePath. +* `20/10/20` [opt] ToastUtils. +* `20/10/12` [add] PermissionUtils#explain. +* `20/10/10` [add] ClipboardUtils. +* `20/10/08` [add] VolumeUtils. +* `20/09/06` [add] DebouncingUtils#isValid. * `20/09/04` [fix] ToastUtils adapt SDK 30. * `20/05/28` [fix] IntentUtils#getInstallAppIntent file exist wrong. Publish v1.29.0. * `20/05/23` [fix] BusUtils#postSticky times not right. Publish v1.28.6. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 2c85babdf5..d292b40954 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_029_000 - static versionName = '1.29.0'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_000 + static versionName = '1.30.0'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/launcher/app/src/main/java/com/blankj/launcher/app/LauncherApp.java b/feature/launcher/app/src/main/java/com/blankj/launcher/app/LauncherApp.java index 0aa8be0786..7dc22cee69 100644 --- a/feature/launcher/app/src/main/java/com/blankj/launcher/app/LauncherApp.java +++ b/feature/launcher/app/src/main/java/com/blankj/launcher/app/LauncherApp.java @@ -1,9 +1,6 @@ package com.blankj.launcher.app; -import android.content.Context; - import com.blankj.common.CommonApplication; -import com.blankj.utilcode.util.ResourceUtils; /** *
    @@ -21,11 +18,6 @@ public static LauncherApp getInstance() {
             return sInstance;
         }
     
    -    @Override
    -    protected void attachBaseContext(Context base) {
    -        super.attachBaseContext(base);
    -    }
    -
         @Override
         public void onCreate() {
             super.onCreate();
    diff --git a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt
    index 8e0183c991..cc5c60f470 100644
    --- a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt
    +++ b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/dangerous/DangerousActivity.kt
    @@ -87,13 +87,15 @@ class DangerousActivity : CommonActivity() {
                     CommonItemClick(R.string.dangerous_reboot_to_bootloader) {
                         ToastUtils.showShort(DangerousUtils.reboot2Bootloader().toString())
                     },
    -                CommonItemSwitch(R.string.dangerous_data_enabled, Utils.Supplier {
    -                    NetworkUtils.getMobileDataEnabled()
    -                }, Utils.Consumer {
    -                    if (AppUtils.isAppSystem()) {
    -                        DangerousUtils.setMobileDataEnabled(it)
    -                    }
    -                }),
    +                CommonItemSwitch(
    +                        R.string.dangerous_data_enabled,
    +                        { NetworkUtils.getMobileDataEnabled() },
    +                        {
    +                            if (AppUtils.isAppSystem()) {
    +                                DangerousUtils.setMobileDataEnabled(it)
    +                            }
    +                        }
    +                ),
                     CommonItemClick(R.string.dangerous_send_sms_silent) {
                         DangerousUtils.sendSmsSilent("10000", "sendSmsSilent")
                     }
    diff --git a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt
    index 88e55b23f2..8f4217c96c 100755
    --- a/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt
    +++ b/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt
    @@ -24,6 +24,14 @@ import com.blankj.utilcode.util.PermissionUtils
      */
     class LocationActivity : CommonActivity() {
     
    +    private var lastLatitude: String = "unknown"
    +    private var lastLongitude: String = "unknown"
    +    private var latitude: String = "unknown"
    +    private var longitude: String = "unknown"
    +    private var country: String = "unknown"
    +    private var locality: String = "unknown"
    +    private var street: String = "unknown"
    +
         companion object {
             fun start(context: Context) {
                 PermissionHelper.request(context, object : PermissionUtils.SimpleCallback {
    @@ -48,18 +56,17 @@ class LocationActivity : CommonActivity() {
                 mLocationService.setOnGetLocationListener(object : LocationService.OnGetLocationListener {
                     override fun getLocation(lastLatitude: String, lastLongitude: String, latitude: String,
                                              longitude: String, country: String, locality: String, street: String) {
    +                    this@LocationActivity.apply {
    +                        this.lastLatitude = lastLatitude
    +                        this.lastLongitude = lastLongitude
    +                        this.latitude = latitude
    +                        this.longitude = longitude
    +                        this.country = country
    +                        this.locality = locality
    +                        this.street = street
    +                    }
                         runOnUiThread {
    -                        itemsView.updateItems(
    -                                CollectionUtils.newArrayList>(
    -                                        CommonItemTitle("lastLatitude", lastLatitude),
    -                                        CommonItemTitle("lastLongitude", lastLongitude),
    -                                        CommonItemTitle("latitude", latitude),
    -                                        CommonItemTitle("longitude", longitude),
    -                                        CommonItemTitle("getCountryName", country),
    -                                        CommonItemTitle("getLocality", locality),
    -                                        CommonItemTitle("getStreet", street)
    -                                )
    -                        )
    +                        itemsView.updateItems(bindItems())
                         }
                     }
                 })
    @@ -72,13 +79,13 @@ class LocationActivity : CommonActivity() {
     
         override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
    -                CommonItemTitle("lastLatitude", "unknown"),
    -                CommonItemTitle("lastLongitude", "unknown"),
    -                CommonItemTitle("latitude", "unknown"),
    -                CommonItemTitle("longitude", "unknown"),
    -                CommonItemTitle("getCountryName", "unknown"),
    -                CommonItemTitle("getLocality", "unknown"),
    -                CommonItemTitle("getStreet", "unknown")
    +                CommonItemTitle("lastLatitude", lastLatitude),
    +                CommonItemTitle("lastLongitude", lastLongitude),
    +                CommonItemTitle("latitude", latitude),
    +                CommonItemTitle("longitude", longitude),
    +                CommonItemTitle("getCountryName", country),
    +                CommonItemTitle("getLocality", locality),
    +                CommonItemTitle("getStreet", street)
             )
         }
     
    diff --git a/feature/utilcode/pkg/src/main/AndroidManifest.xml b/feature/utilcode/pkg/src/main/AndroidManifest.xml
    index fde82401a1..f77ad3d953 100644
    --- a/feature/utilcode/pkg/src/main/AndroidManifest.xml
    +++ b/feature/utilcode/pkg/src/main/AndroidManifest.xml
    @@ -139,6 +139,10 @@
                 android:name=".feature.click.ClickActivity"
                 android:configChanges="orientation|keyboardHidden|screenSize"
                 android:launchMode="singleTop" />
    +        
             
                 
    +                android:value="D1234567890123456789012345678901234567890" />
             
             
             
    +            android:configChanges="orientation|keyboardHidden|screenSize" />
             
    +        
     
             > {
    +    override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
                     CommonItemClick(R.string.api_invoke_with_params) {
                         ApiUtils.getApi(OtherModuleApi::class.java).invokeWithParams(OtherModuleApi.ApiBean("params"))
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    index f835845e6f..7e6f10785a 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    @@ -52,7 +52,7 @@ class AppActivity : CommonActivity() {
             LogUtils.e(requestCode, resultCode)
         }
     
    -    override fun bindItems(): List> {
    +    override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
                     CommonItemTitle("isAppRoot", AppUtils.isAppRoot().toString()),
                     CommonItemTitle("isAppDebug", AppUtils.isAppDebug().toString()),
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    index 997f83f78a..1b3032974f 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    @@ -42,22 +42,14 @@ class BarNavActivity : CommonActivity() {
                 if (BarUtils.isSupportNavBar()) {
                     add(CommonItemSwitch(
                             R.string.bar_nav_visibility,
    -                        Utils.Supplier {
    -                            BarUtils.isNavBarVisible(this@BarNavActivity)
    -                        },
    -                        Utils.Consumer {
    -                            BarUtils.setNavBarVisibility(this@BarNavActivity, it)
    -                        }
    +                        { BarUtils.isNavBarVisible(this@BarNavActivity) },
    +                        { BarUtils.setNavBarVisibility(this@BarNavActivity, it) }
                     ))
     
                     add(CommonItemSwitch(
                             R.string.bar_nav_light_mode,
    -                        Utils.Supplier {
    -                            BarUtils.isNavBarLightMode(this@BarNavActivity)
    -                        },
    -                        Utils.Consumer {
    -                            BarUtils.setNavBarLightMode(this@BarNavActivity, it)
    -                        }
    +                        { BarUtils.isNavBarLightMode(this@BarNavActivity) },
    +                        { BarUtils.setNavBarLightMode(this@BarNavActivity, it) }
                     ))
     
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivity.kt
    index 557de0a65a..da20870e79 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivity.kt
    @@ -37,21 +37,13 @@ class BarStatusActivity : CommonActivity() {
                     CommonItemTitle("getStatusBarHeight", BarUtils.getStatusBarHeight().toString()),
                     CommonItemSwitch(
                             R.string.bar_status_visibility,
    -                        Utils.Supplier {
    -                            BarUtils.isStatusBarVisible(this)
    -                        },
    -                        Utils.Consumer {
    -                            BarUtils.setStatusBarVisibility(this, it)
    -                        }
    +                        { BarUtils.isStatusBarVisible(this) },
    +                        { BarUtils.setStatusBarVisibility(this, it) }
                     ),
                     CommonItemSwitch(
                             R.string.bar_status_light_mode,
    -                        Utils.Supplier {
    -                            BarUtils.isStatusBarLightMode(this)
    -                        },
    -                        Utils.Consumer {
    -                            BarUtils.setStatusBarLightMode(this, it)
    -                        }
    +                        { BarUtils.isStatusBarLightMode(this) },
    +                        { BarUtils.setStatusBarLightMode(this, it) }
                     )
             )
         }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityAlpha.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityAlpha.kt
    index b7464443bd..fa886e5be5 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityAlpha.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityAlpha.kt
    @@ -45,15 +45,15 @@ class BarStatusActivityAlpha : CommonActivity() {
     
         private fun getItems(): List> {
             return CollectionUtils.newArrayList>(
    -                CommonItemSeekBar("Status Bar Alpha", 255, mAlpha, object : SeekBar.OnSeekBarChangeListener {
    +                CommonItemSeekBar("Status Bar Alpha", 255, object : CommonItemSeekBar.ProgressListener() {
    +                    override fun getCurValue(): Int {
    +                        return mAlpha
    +                    }
    +
                         override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                             mAlpha = progress
                             updateStatusBar()
                         }
    -
    -                    override fun onStartTrackingTouch(seekBar: SeekBar?) {}
    -
    -                    override fun onStopTrackingTouch(seekBar: SeekBar?) {}
                     }).apply {
                         backgroundColor = ColorUtils.setAlphaComponent(backgroundColor, 0.5f)
                     }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityDrawer.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityDrawer.kt
    index 348d349991..d8e092d466 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityDrawer.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityDrawer.kt
    @@ -15,7 +15,6 @@ import com.blankj.utilcode.pkg.R
     import com.blankj.utilcode.util.BarUtils
     import com.blankj.utilcode.util.CollectionUtils
     import com.blankj.utilcode.util.ColorUtils
    -import com.blankj.utilcode.util.Utils
     import kotlinx.android.synthetic.main.bar_status_drawer_activity.*
     
     
    @@ -61,37 +60,43 @@ class BarStatusActivityDrawer : CommonActivity() {
                 return@setOnClickUpdateContentListener ColorUtils.int2ArgbString(mColor)
             }
     
    -        val alphaItem: CommonItem<*> = CommonItemSeekBar("Status Bar Alpha", 255, mAlpha, object : SeekBar.OnSeekBarChangeListener {
    +        val alphaItem: CommonItem<*> = CommonItemSeekBar("Status Bar Alpha", 255, object : CommonItemSeekBar.ProgressListener() {
    +            override fun getCurValue(): Int {
    +                return mAlpha
    +            }
    +
                 override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                     mAlpha = progress
                     updateStatusBar()
                 }
    -
    -            override fun onStartTrackingTouch(seekBar: SeekBar?) {}
    -
    -            override fun onStopTrackingTouch(seekBar: SeekBar?) {}
             })
     
             return CollectionUtils.newArrayList(
    -                CommonItemSwitch(R.string.bar_status_title_alpha, Utils.Supplier {
    -                    updateStatusBar()
    -                    return@Supplier mAlphaStatus
    -                }, Utils.Consumer {
    -                    mAlphaStatus = it
    -                    if (mAlphaStatus) {
    -                        barStatusDrawerRootLl.setBackgroundResource(R.drawable.image_lena)
    -                        commonItemAdapter.replaceItem(2, alphaItem, true)
    -                    } else {
    -                        barStatusDrawerRootLl.setBackgroundColor(Color.TRANSPARENT)
    -                        commonItemAdapter.replaceItem(2, randomColorItem, true)
    -                    }
    -                }),
    -                CommonItemSwitch(R.string.bar_status_is_front, Utils.Supplier {
    -                    return@Supplier mFrontStatus
    -                }, Utils.Consumer {
    -                    mFrontStatus = it
    -                    updateStatusBar()
    -                }),
    +                CommonItemSwitch(
    +                        R.string.bar_status_title_alpha,
    +                        {
    +                            updateStatusBar()
    +                            mAlphaStatus
    +                        },
    +                        {
    +                            mAlphaStatus = it
    +                            if (mAlphaStatus) {
    +                                barStatusDrawerRootLl.setBackgroundResource(R.drawable.image_lena)
    +                                commonItemAdapter.replaceItem(2, alphaItem, true)
    +                            } else {
    +                                barStatusDrawerRootLl.setBackgroundColor(Color.TRANSPARENT)
    +                                commonItemAdapter.replaceItem(2, randomColorItem, true)
    +                            }
    +                        }
    +                ),
    +                CommonItemSwitch(
    +                        R.string.bar_status_is_front,
    +                        { mFrontStatus },
    +                        {
    +                            mFrontStatus = it
    +                            updateStatusBar()
    +                        }
    +                ),
                     randomColorItem
             )
         }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityImageView.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityImageView.kt
    index 533a40d7f5..86542caec5 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityImageView.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/BarStatusActivityImageView.kt
    @@ -44,15 +44,15 @@ class BarStatusActivityImageView : CommonActivity() {
     
         private fun getItems(): List> {
             return CollectionUtils.newArrayList>(
    -                CommonItemSeekBar("Status Bar Alpha", 255, mAlpha, object : SeekBar.OnSeekBarChangeListener {
    +                CommonItemSeekBar("Status Bar Alpha", 255, object : CommonItemSeekBar.ProgressListener() {
    +                    override fun getCurValue(): Int {
    +                        return mAlpha
    +                    }
    +
                         override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                             mAlpha = progress
                             updateStatusBar()
                         }
    -
    -                    override fun onStartTrackingTouch(seekBar: SeekBar?) {}
    -
    -                    override fun onStopTrackingTouch(seekBar: SeekBar?) {}
                     })
             )
         }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentAlpha.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentAlpha.kt
    index 15797fc505..ab368c0295 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentAlpha.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentAlpha.kt
    @@ -47,15 +47,15 @@ class BarStatusFragmentAlpha : CommonFragment() {
     
         private fun getItems(): List> {
             return CollectionUtils.newArrayList>(
    -                CommonItemSeekBar("Status Bar Alpha", 255, mAlpha, object : SeekBar.OnSeekBarChangeListener {
    +                CommonItemSeekBar("Status Bar Alpha", 255, object : CommonItemSeekBar.ProgressListener() {
    +                    override fun getCurValue(): Int {
    +                        return mAlpha
    +                    }
    +
                         override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                             mAlpha = progress
                             updateFakeStatusBar()
                         }
    -
    -                    override fun onStartTrackingTouch(seekBar: SeekBar?) {}
    -
    -                    override fun onStopTrackingTouch(seekBar: SeekBar?) {}
                     }).apply {
                         backgroundColor = ColorUtils.setAlphaComponent(backgroundColor, 0.5f)
                     }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentImageView.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentImageView.kt
    index 54571b6ddd..686e50995c 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentImageView.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/status/fragment/BarStatusFragmentImageView.kt
    @@ -46,15 +46,15 @@ class BarStatusFragmentImageView : CommonFragment() {
     
         private fun getItems(): List> {
             return CollectionUtils.newArrayList>(
    -                CommonItemSeekBar("Status Bar Alpha", 255, mAlpha, object : SeekBar.OnSeekBarChangeListener {
    +                CommonItemSeekBar("Status Bar Alpha", 255, object : CommonItemSeekBar.ProgressListener() {
    +                    override fun getCurValue(): Int {
    +                        return mAlpha
    +                    }
    +
                         override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                             mAlpha = progress
                             updateFakeStatusBar()
                         }
    -
    -                    override fun onStartTrackingTouch(seekBar: SeekBar?) {}
    -
    -                    override fun onStopTrackingTouch(seekBar: SeekBar?) {}
                     })
             )
         }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt
    index 639742c60b..435a1ecbed 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt
    @@ -48,32 +48,28 @@ class BrightnessActivity : CommonActivity() {
     
         override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
    -                CommonItemSeekBar("getBrightness", 255, BrightnessUtils.getBrightness(), object : SeekBar.OnSeekBarChangeListener {
    +                CommonItemSeekBar("getBrightness", 255, object : CommonItemSeekBar.ProgressListener() {
    +                    override fun getCurValue(): Int {
    +                        return BrightnessUtils.getBrightness()
    +                    }
    +
                         override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                             BrightnessUtils.setBrightness(progress)
                         }
    -
    -                    override fun onStartTrackingTouch(seekBar: SeekBar?) {}
    -
    -                    override fun onStopTrackingTouch(seekBar: SeekBar?) {}
                     }),
    -                CommonItemSeekBar("getWindowBrightness", 255, BrightnessUtils.getWindowBrightness(window), object : SeekBar.OnSeekBarChangeListener {
    +                CommonItemSeekBar("getWindowBrightness", 255, object : CommonItemSeekBar.ProgressListener() {
    +                    override fun getCurValue(): Int {
    +                        return BrightnessUtils.getWindowBrightness(window)
    +                    }
    +
                         override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                             BrightnessUtils.setWindowBrightness(window, progress)
                         }
    -
    -                    override fun onStartTrackingTouch(seekBar: SeekBar?) {}
    -
    -                    override fun onStopTrackingTouch(seekBar: SeekBar?) {}
                     }),
                     CommonItemSwitch(
                             R.string.brightness_auto_brightness,
    -                        Utils.Supplier {
    -                            BrightnessUtils.isAutoBrightnessEnabled()
    -                        },
    -                        Utils.Consumer {
    -                            BrightnessUtils.setAutoBrightnessEnabled(it)
    -                        }
    +                        { BrightnessUtils.isAutoBrightnessEnabled() },
    +                        { BrightnessUtils.setAutoBrightnessEnabled(it) }
                     )
             )
         }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clipboard/ClipboardActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clipboard/ClipboardActivity.kt
    new file mode 100644
    index 0000000000..824fdf02ca
    --- /dev/null
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clipboard/ClipboardActivity.kt
    @@ -0,0 +1,76 @@
    +package com.blankj.utilcode.pkg.feature.clipboard
    +
    +import android.content.Context
    +import android.content.Intent
    +import com.blankj.common.activity.CommonActivity
    +import com.blankj.common.item.CommonItem
    +import com.blankj.common.item.CommonItemClick
    +import com.blankj.common.item.CommonItemSwitch
    +import com.blankj.common.item.CommonItemTitle
    +import com.blankj.utilcode.pkg.R
    +import com.blankj.utilcode.util.ClipboardUtils
    +import com.blankj.utilcode.util.CollectionUtils
    +import com.blankj.utilcode.util.ToastUtils
    +
    +/**
    + * ```
    + * author: Blankj
    + * blog  : http://blankj.com
    + * time  : 2020/09/11
    + * desc  : demo about ClipboardUtils
    + * ```
    + */
    +class ClipboardActivity : CommonActivity() {
    +
    +    private var index: Int = 0
    +    private var isAddListener: Boolean = false
    +    private var listener = {
    +        ToastUtils.showShort(ClipboardUtils.getText())
    +    }
    +
    +    companion object {
    +        fun start(context: Context) {
    +            val starter = Intent(context, ClipboardActivity::class.java)
    +            context.startActivity(starter)
    +        }
    +    }
    +
    +    override fun bindTitleRes(): Int {
    +        return R.string.demo_clipboard
    +    }
    +
    +    override fun bindItems(): MutableList> {
    +        return CollectionUtils.newArrayList(
    +                CommonItemTitle("getText", ClipboardUtils.getText()),
    +                CommonItemTitle("getLabel", ClipboardUtils.getLabel()),
    +                CommonItemClick("copyText: value{$index}").setOnItemClickListener { _, _, _ ->
    +                    ClipboardUtils.copyText("value{${index++}}")
    +                    itemsView.updateItems(bindItems())
    +                },
    +                CommonItemClick("clear").setOnItemClickListener { _, _, _ ->
    +                    ClipboardUtils.clear()
    +                    itemsView.updateItems(bindItems())
    +                },
    +                CommonItemSwitch("clipChangeListener", { isAddListener }, {
    +                    isAddListener = it
    +                    if (isAddListener) {
    +                        ClipboardUtils.addChangedListener(listener)
    +                    } else {
    +                        ClipboardUtils.removeChangedListener(listener)
    +                    }
    +                })
    +        )
    +    }
    +
    +    override fun onResume() {
    +        super.onResume()
    +        itemsView.updateItems(bindItems())
    +    }
    +
    +    override fun onDestroy() {
    +        super.onDestroy()
    +        if (isAddListener) {
    +            ClipboardUtils.removeChangedListener(listener)
    +        }
    +    }
    +}
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt
    index dbfa38083c..c5f602b9e3 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt
    @@ -50,12 +50,8 @@ class FlashlightActivity : CommonActivity() {
                 if (FlashlightUtils.isFlashlightEnable()) {
                     add(CommonItemSwitch(
                             R.string.flashlight_status,
    -                        Utils.Supplier {
    -                            FlashlightUtils.isFlashlightOn()
    -                        },
    -                        Utils.Consumer {
    -                            FlashlightUtils.setFlashlightStatus(it)
    -                        }
    +                        { FlashlightUtils.isFlashlightOn() },
    +                        { FlashlightUtils.setFlashlightStatus(it) }
                     ))
                 }
             }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
    index 5035274ad9..995bbb22c1 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/image/ImageActivity.kt
    @@ -119,71 +119,77 @@ class ImageActivity : CommonActivity() {
                         }
                     })
                 })
    -            add(CommonItemImage(R.string.image_src, Utils.Consumer {
    +            add(CommonItemImage(R.string.image_src) {
                     it.setImageBitmap(src)
    -            }))
    -            add(CommonItemImage(R.string.image_add_color, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_add_color) {
                     it.setImageBitmap(ImageUtils.drawColor(src, Color.parseColor("#8000FF00")))
    -            }))
    -            add(CommonItemImage(R.string.image_scale, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_scale) {
                     it.setImageBitmap(ImageUtils.scale(src, width / 2, height / 2))
    -            }))
    -            add(CommonItemImage(R.string.image_clip, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_clip) {
                     it.setImageBitmap(ImageUtils.clip(src, 0, 0, width / 2, height / 2))
    -            }))
    -            add(CommonItemImage(R.string.image_skew, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_skew) {
                     it.setImageBitmap(ImageUtils.skew(src, 0.2f, 0.1f))
    -            }))
    -            add(CommonItemImage(R.string.image_rotate, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_rotate) {
                     it.setImageBitmap(ImageUtils.rotate(src, 90, (width / 2).toFloat(), (height / 2).toFloat()))
    -            }))
    -            add(CommonItemImage(R.string.image_to_round) { it ->
    +            })
    +            add(CommonItemImage(R.string.image_to_round) {
                     it.setImageBitmap(ImageUtils.toRound(src))
                 })
    -            add(CommonItemImage(R.string.image_to_round_border, Utils.Consumer {
    +            add(CommonItemImage(R.string.image_to_round_border) {
                     it.setImageBitmap(ImageUtils.toRound(src, 16, Color.GREEN))
    -            }))
    -            add(CommonItemImage(R.string.image_to_round_corner, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_to_round_corner) {
                     it.setImageBitmap(ImageUtils.toRoundCorner(src, 80f))
    -            }))
    -            add(CommonItemImage(R.string.image_to_round_corner_border, Utils.Consumer {
    -                it.setImageBitmap(ImageUtils.toRoundCorner(src, 80f, 16, Color.GREEN))
    -            }))
    -            add(CommonItemImage(R.string.image_add_corner_border, Utils.Consumer {
    -                it.setImageBitmap(ImageUtils.addCornerBorder(src, 16, Color.GREEN, 0f))
    -            }))
    -            add(CommonItemImage(R.string.image_add_circle_border, Utils.Consumer {
    -                it.setImageBitmap(ImageUtils.addCircleBorder(round, 16, Color.GREEN))
    -            }))
    -            add(CommonItemImage(R.string.image_add_reflection, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_to_round_corner_border) {
    +                it.setImageBitmap(ImageUtils.toRoundCorner(src, 80f, 16f, Color.GREEN))
    +            })
    +            add(CommonItemImage(R.string.image_to_round_corner_border) {
    +                it.setImageBitmap(ImageUtils.toRoundCorner(src, floatArrayOf(0f, 0f, 80f, 80f, 0f, 0f, 80f, 80f), 16f, Color.GREEN))
    +            })
    +            add(CommonItemImage(R.string.image_add_corner_border) {
    +                it.setImageBitmap(ImageUtils.addCornerBorder(src, 16f, Color.GREEN, 80f))
    +            })
    +            add(CommonItemImage(R.string.image_add_corner_border) {
    +                it.setImageBitmap(ImageUtils.addCornerBorder(src, 16f, Color.GREEN, floatArrayOf(0f, 0f, 80f, 80f, 0f, 0f, 80f, 80f)))
    +            })
    +            add(CommonItemImage(R.string.image_add_circle_border) {
    +                it.setImageBitmap(ImageUtils.addCircleBorder(src, 16f, Color.GREEN))
    +            })
    +            add(CommonItemImage(R.string.image_add_reflection) {
                     it.setImageBitmap(ImageUtils.addReflection(src, 80))
    -            }))
    -            add(CommonItemImage(R.string.image_add_text_watermark, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_add_text_watermark) {
                     it.setImageBitmap(ImageUtils.addTextWatermark(src, "blankj", 40, Color.GREEN, 0f, 0f))
    -            }))
    -            add(CommonItemImage(R.string.image_add_image_watermark, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_add_image_watermark) {
                     it.setImageBitmap(ImageUtils.addImageWatermark(src, watermark, 0, 0, 0x88))
    -            }))
    -            add(CommonItemImage(R.string.image_to_gray, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_to_gray) {
                     it.setImageBitmap(ImageUtils.toGray(src))
    -            }))
    -            add(CommonItemImage(R.string.image_fast_blur, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_fast_blur) {
                     it.setImageBitmap(ImageUtils.fastBlur(src, 0.1f, 5f))
    -            }))
    +            })
                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    -                add(CommonItemImage(R.string.image_render_script_blur, Utils.Consumer {
    +                add(CommonItemImage(R.string.image_render_script_blur) {
                         it.setImageBitmap(ImageUtils.renderScriptBlur(src, 10f))
    -                }))
    +                })
                 }
    -            add(CommonItemImage(R.string.image_stack_blur, Utils.Consumer {
    +            add(CommonItemImage(R.string.image_stack_blur) {
                     it.setImageBitmap(ImageUtils.stackBlur(src, 10))
    -            }))
    -            add(CommonItemImage(R.string.image_compress_by_scale, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_compress_by_scale) {
                     it.setImageBitmap(ImageUtils.compressByScale(src, 0.5f, 0.5f))
    -            }))
    -            add(CommonItemImage(R.string.image_compress_by_sample_size, Utils.Consumer {
    +            })
    +            add(CommonItemImage(R.string.image_compress_by_sample_size) {
                     it.setImageBitmap(ImageUtils.compressBySampleSize(src, 2))
    -            }))
    +            })
             }
         }
     
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt
    index 5d088ba01c..0e14482b91 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt
    @@ -3,15 +3,15 @@ package com.blankj.utilcode.pkg.feature.language
     import android.content.Context
     import android.content.Intent
     import com.blankj.common.activity.CommonActivity
    -import com.blankj.common.activity.CommonActivityItemsView
    -import com.blankj.common.activity.CommonActivityTitleView
     import com.blankj.common.item.CommonItem
     import com.blankj.common.item.CommonItemClick
    +import com.blankj.common.item.CommonItemSwitch
    +import com.blankj.common.item.CommonItemTitle
     import com.blankj.utilcode.pkg.R
    -import com.blankj.utilcode.pkg.feature.CoreUtilActivity
     import com.blankj.utilcode.util.CollectionUtils
     import com.blankj.utilcode.util.LanguageUtils
    -import com.blankj.utilcode.util.ToastUtils
    +import com.blankj.utilcode.util.SPStaticUtils
    +import com.blankj.utilcode.util.StringUtils
     import java.util.*
     
     /**
    @@ -25,6 +25,9 @@ import java.util.*
     class LanguageActivity : CommonActivity() {
     
         companion object {
    +
    +        const val SP_KEY_IS_RELAUNCH_APP = "SP_KEY_IS_RELAUNCH_APP"
    +
             fun start(context: Context) {
                 val starter = Intent(context, LanguageActivity::class.java)
                 context.startActivity(starter)
    @@ -37,21 +40,31 @@ class LanguageActivity : CommonActivity() {
     
         override fun bindItems(): List> {
             return CollectionUtils.newArrayList(
    -                CommonItemClick(R.string.language_app_context) {
    -                    ToastUtils.showLong(R.string.language)
    -                },
    -                CommonItemClick(R.string.language_activity_context) {
    -                    ToastUtils.showLong(getString(R.string.language))
    -                },
    +                CommonItemTitle("isAppliedLanguage", LanguageUtils.isAppliedLanguage().toString()),
    +                CommonItemTitle("isAppliedLanguage(SIMPLIFIED_CHINESE)", LanguageUtils.isAppliedLanguage(Locale.SIMPLIFIED_CHINESE).toString()),
    +                CommonItemTitle("getAppliedLanguage", (LanguageUtils.getAppliedLanguage() ?: "null").toString()),
    +                CommonItemTitle("getActivityContextLanguage", LanguageUtils.getContextLanguage(this).toString()),
    +                CommonItemTitle("getAppContextLanguage", LanguageUtils.getAppContextLanguage().toString()),
    +                CommonItemTitle("getSystemLanguage", LanguageUtils.getSystemLanguage().toString()),
    +                CommonItemSwitch(
    +                        StringUtils.getString(R.string.language_relaunch_app),
    +                        { isRelaunchApp() },
    +                        { SPStaticUtils.put(SP_KEY_IS_RELAUNCH_APP, it) }
    +                ),
                     CommonItemClick(R.string.language_apply_simple_chinese) {
    -                    LanguageUtils.applyLanguage(Locale.SIMPLIFIED_CHINESE, CoreUtilActivity::class.java)
    +                    LanguageUtils.applyLanguage(Locale.SIMPLIFIED_CHINESE, isRelaunchApp())
                     },
                     CommonItemClick(R.string.language_apply_american) {
    -                    LanguageUtils.applyLanguage(Locale.US, "")
    +                    LanguageUtils.applyLanguage(Locale.US, isRelaunchApp())
    +                },
    +                CommonItemClick(R.string.language_apply_english) {
    +                    LanguageUtils.applyLanguage(Locale.ENGLISH, isRelaunchApp())
                     },
                     CommonItemClick(R.string.language_apply_system) {
    -                    LanguageUtils.applySystemLanguage("")
    +                    LanguageUtils.applySystemLanguage(isRelaunchApp())
                     }
             )
         }
    +
    +    private fun isRelaunchApp() = SPStaticUtils.getBoolean(SP_KEY_IS_RELAUNCH_APP)
     }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
    index b26bd9644c..096df003e4 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
    @@ -5,11 +5,13 @@ import android.content.Context
     import android.content.Intent
     import android.net.Uri
     import android.os.Bundle
    +import android.util.Log
     import com.blankj.base.BaseApplication
     import com.blankj.common.activity.CommonActivity
     import com.blankj.common.item.CommonItem
     import com.blankj.common.item.CommonItemClick
     import com.blankj.common.item.CommonItemSwitch
    +import com.blankj.common.item.CommonItemTitle
     import com.blankj.utilcode.pkg.R
     import com.blankj.utilcode.util.*
     import java.io.File
    @@ -112,23 +114,21 @@ class LogActivity : CommonActivity() {
     
         override fun bindItems(): List> {
             return CollectionUtils.newArrayList(
    +                CommonItemTitle("getLogFiles", LogUtils.getLogFiles().toString()),
                     CommonItemSwitch(
                             R.string.log_switch,
    -                        Utils.Supplier {
    -                            mConfig.isLogSwitch
    -                        },
    -                        Utils.Consumer {
    -                            mConfig.isLogSwitch = it
    -                        }
    +                        { mConfig.isLogSwitch },
    +                        { mConfig.isLogSwitch = it }
                     ),
                     CommonItemSwitch(
    -                        R.string.log_console_console,
    -                        Utils.Supplier {
    -                            mConfig.isLog2ConsoleSwitch
    -                        },
    -                        Utils.Consumer {
    -                            mConfig.setConsoleSwitch(it)
    -                        }
    +                        R.string.log_console_switch,
    +                        { mConfig.isLog2ConsoleSwitch },
    +                        { mConfig.setConsoleSwitch(it) }
    +                ),
    +                CommonItemSwitch(
    +                        R.string.log_console_listener_switch,
    +                        { mConfig.haveSetOnConsoleOutputListener() },
    +                        { mConfig.setOnConsoleOutputListener { type, tag, content -> Log.println(type, tag, content) } }
                     ),
                     CommonItemClick("Global Tag", if (mConfig.globalTag == "") "null" else mConfig.globalTag).setOnClickUpdateContentListener {
                         if (StringUtils.isSpace(mConfig.globalTag)) {
    @@ -140,47 +140,41 @@ class LogActivity : CommonActivity() {
                     },
                     CommonItemSwitch(
                             R.string.log_head_switch,
    -                        Utils.Supplier {
    -                            mConfig.isLogHeadSwitch
    -                        },
    -                        Utils.Consumer {
    -                            mConfig.isLogHeadSwitch = it
    -                        }
    +                        { mConfig.isLogHeadSwitch },
    +                        { mConfig.isLogHeadSwitch = it }
                     ),
                     CommonItemSwitch(
                             R.string.log_file_switch,
    -                        Utils.Supplier {
    -                            mConfig.isLog2FileSwitch
    -                        },
    -                        Utils.Consumer {
    -                            mConfig.isLog2FileSwitch = it
    -                        }
    +                        { mConfig.isLog2FileSwitch },
    +                        { mConfig.isLog2FileSwitch = it }
    +                ),
    +                CommonItemSwitch(
    +                        R.string.log_file_listener_switch,
    +                        { mConfig.haveSetOnFileOutputListener() },
    +                        { mConfig.setOnFileOutputListener { filePath, content -> Log.d("LogActivity", filePath + "\n" + content) } }
                     ),
                     CommonItemClick("Dir", mConfig.dir).setOnClickUpdateContentListener {
                         if (mConfig.dir != mConfig.defaultDir) {
                             mConfig.dir = mConfig.defaultDir
                         } else {
    -                        mConfig.setDir(File(PathUtils.getInternalAppFilesPath(), "log"))
    +                        mConfig.setDir(File(PathUtils.getExternalAppFilesPath(), "log"))
                         }
                         return@setOnClickUpdateContentListener mConfig.dir
                     },
                     CommonItemSwitch(
                             R.string.log_border_switch,
    -                        Utils.Supplier {
    -                            mConfig.isLogBorderSwitch
    -                        },
    -                        Utils.Consumer {
    -                            mConfig.setBorderSwitch(it)
    -                        }
    +                        { mConfig.isLogBorderSwitch },
    +                        { mConfig.setBorderSwitch(it) }
    +                ),
    +                CommonItemSwitch(
    +                        R.string.log_single_tag_switch,
    +                        { mConfig.isSingleTagSwitch },
    +                        { mConfig.setSingleTagSwitch(it) }
                     ),
                     CommonItemSwitch(
                             R.string.log_single_tag_switch,
    -                        Utils.Supplier {
    -                            mConfig.isSingleTagSwitch
    -                        },
    -                        Utils.Consumer {
    -                            mConfig.setSingleTagSwitch(it)
    -                        }
    +                        { mConfig.isSingleTagSwitch },
    +                        { mConfig.setSingleTagSwitch(it) }
                     ),
                     CommonItemClick("ConsoleFilter", mConfig.consoleFilter.toString()).setOnClickUpdateContentListener {
                         mConfig.setConsoleFilter(if (mConfig.consoleFilter == 'V') LogUtils.W else LogUtils.V)
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/metaData/MetaDataActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/metaData/MetaDataActivity.kt
    index f45304d353..77bb5f8e82 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/metaData/MetaDataActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/metaData/MetaDataActivity.kt
    @@ -3,8 +3,6 @@ package com.blankj.utilcode.pkg.feature.metaData
     import android.content.Context
     import android.content.Intent
     import com.blankj.common.activity.CommonActivity
    -import com.blankj.common.activity.CommonActivityItemsView
    -import com.blankj.common.activity.CommonActivityTitleView
     import com.blankj.common.item.CommonItem
     import com.blankj.common.item.CommonItemTitle
     import com.blankj.utilcode.pkg.R
    @@ -35,7 +33,7 @@ class MetaDataActivity : CommonActivity() {
         override fun bindItems(): List> {
             return CollectionUtils.newArrayList(
                     CommonItemTitle("getMetaDataInApp", MetaDataUtils.getMetaDataInApp("app_meta_data")),
    -                CommonItemTitle("getMetaDataInActivity", MetaDataUtils.getMetaDataInActivity(this, "activity_meta_data"))
    +                CommonItemTitle("getMetaDataInActivity", MetaDataUtils.getMetaDataInActivity(this, "activity_meta_data").substring(1))
             )
         }
     }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java
    index 59ab715ac0..054cd7ade9 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java
    @@ -1,12 +1,16 @@
     package com.blankj.utilcode.pkg.feature.mvp;
     
    -import android.support.v4.app.FragmentActivity;
    +import android.text.Layout;
     import android.view.View;
     import android.widget.TextView;
     
     import com.blankj.base.mvp.BaseView;
     import com.blankj.utilcode.pkg.R;
    +import com.blankj.utilcode.pkg.feature.fragment.FragmentActivity;
     import com.blankj.utilcode.util.ClickUtils;
    +import com.blankj.utilcode.util.LogUtils;
    +import com.blankj.utilcode.util.SizeUtils;
    +import com.blankj.utilcode.util.ThreadUtils;
     import com.blankj.utilcode.util.ToastUtils;
     
     /**
    @@ -21,8 +25,10 @@ public class MvpView extends BaseView
             implements IMvp.View {
     
         private TextView mvpTv;
    +    private TextView mvpMeasureWidthTv;
    +    private int      i = 0;
     
    -    public MvpView(FragmentActivity activity) {
    +    public MvpView(MvpActivity activity) {
             super(activity);
             mvpTv = activity.findViewById(R.id.mvpUpdateTv);
             ClickUtils.applyPressedBgDark(mvpTv);
    @@ -32,6 +38,23 @@ public void onClick(View v) {
                     getPresenter(MvpPresenter.class).updateMsg();
                 }
             });
    +
    +        mvpMeasureWidthTv = activity.findViewById(R.id.mvpMeasureWidthTv);
    +
    +        measure();
    +    }
    +
    +    private void measure() {
    +        ThreadUtils.runOnUiThreadDelayed(new Runnable() {
    +            @Override
    +            public void run() {
    +                float textWidth = Layout.getDesiredWidth(mvpMeasureWidthTv.getText(), mvpMeasureWidthTv.getPaint()) + SizeUtils.dp2px(16);
    +                float textWidth2 = mvpMeasureWidthTv.getPaint().measureText(mvpMeasureWidthTv.getText().toString()) + SizeUtils.dp2px(16);
    +                LogUtils.i(mvpMeasureWidthTv.getWidth(), textWidth, textWidth2);
    +                mvpMeasureWidthTv.setText(mvpMeasureWidthTv.getText().toString() + i);
    +                measure();
    +            }
    +        }, 1000);
         }
     
         @Override
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
    index 2d39faf102..f0c9962b2d 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
    @@ -75,10 +75,8 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis
     
                     CommonItemSwitch(
                             R.string.network_wifi_enabled,
    -                        Utils.Supplier {
    -                            NetworkUtils.getWifiEnabled()
    -                        },
    -                        Utils.Consumer {
    +                        { NetworkUtils.getWifiEnabled() },
    +                        {
                                 NetworkUtils.setWifiEnabled(it)
                                 ThreadUtils.executeByIo(getItemsTask())
                             }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt
    index 6f69405355..c55d9c945b 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/permission/PermissionActivity.kt
    @@ -1,6 +1,6 @@
     package com.blankj.utilcode.pkg.feature.permission
     
    -import android.Manifest
    +import android.Manifest.permission
     import android.content.Context
     import android.content.Intent
     import android.os.Build
    @@ -56,56 +56,36 @@ class PermissionActivity : CommonActivity() {
                 add(CommonItemClick(R.string.permission_open_app_settings, true) { PermissionUtils.launchAppDetailsSettings() })
                 add(CommonItemSwitch(
                         R.string.permission_calendar_status,
    -                    Utils.Supplier {
    -                        return@Supplier PermissionUtils.isGranted(Manifest.permission.READ_CALENDAR)
    -                    },
    -                    Utils.Consumer {
    -                        requestCalendar()
    -                    }
    +                    { PermissionUtils.isGranted(PermissionConstants.CALENDAR) },
    +                    { requestCalendar() }
                 ))
                 add(CommonItemSwitch(
                         R.string.permission_record_audio_status,
    -                    Utils.Supplier {
    -                        return@Supplier PermissionUtils.isGranted(Manifest.permission.RECORD_AUDIO)
    -                    },
    -                    Utils.Consumer {
    -                        requestRecordAudio()
    -                    }
    +                    { PermissionUtils.isGranted(PermissionConstants.MICROPHONE) },
    +                    { requestRecordAudio() }
                 ))
                 add(CommonItemSwitch(
                         R.string.permission_calendar_and_record_audio_status,
    -                    Utils.Supplier {
    -                        return@Supplier PermissionUtils.isGranted(Manifest.permission.READ_CALENDAR, Manifest.permission.RECORD_AUDIO)
    -                    },
    -                    Utils.Consumer {
    -                        requestCalendarAndRecordAudio()
    -                    }
    +                    { PermissionUtils.isGranted(PermissionConstants.CALENDAR, PermissionConstants.MICROPHONE) },
    +                    { requestCalendarAndRecordAudio() }
                 ))
                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                     add(CommonItemSwitch(
                             R.string.permission_write_settings_status,
    -                        Utils.Supplier {
    -                            return@Supplier PermissionUtils.isGrantedWriteSettings()
    -                        },
    -                        Utils.Consumer {
    -                            requestWriteSettings()
    -                        }
    +                        { PermissionUtils.isGrantedWriteSettings() },
    +                        { requestWriteSettings() }
                     ))
                     add(CommonItemSwitch(
                             R.string.permission_write_settings_status,
    -                        Utils.Supplier {
    -                            return@Supplier PermissionUtils.isGrantedDrawOverlays()
    -                        },
    -                        Utils.Consumer {
    -                            requestDrawOverlays()
    -                        }
    +                        { PermissionUtils.isGrantedDrawOverlays() },
    +                        { requestDrawOverlays() }
                     ))
                 }
             }
         }
     
         private fun requestCalendar() {
    -        PermissionUtils.permission(PermissionConstants.CALENDAR)
    +        PermissionUtils.permissionGroup(PermissionConstants.CALENDAR)
                     .rationale { activity, shouldRequest -> PermissionHelper.showRationaleDialog(activity, shouldRequest) }
                     .callback(object : PermissionUtils.FullCallback {
                         override fun onGranted(permissionsGranted: List) {
    @@ -130,7 +110,7 @@ class PermissionActivity : CommonActivity() {
         }
     
         private fun requestRecordAudio() {
    -        PermissionUtils.permission(PermissionConstants.MICROPHONE)
    +        PermissionUtils.permissionGroup(PermissionConstants.MICROPHONE)
                     .rationale { activity, shouldRequest -> PermissionHelper.showRationaleDialog(activity, shouldRequest) }
                     .callback(object : PermissionUtils.FullCallback {
                         override fun onGranted(permissionsGranted: List) {
    @@ -154,28 +134,21 @@ class PermissionActivity : CommonActivity() {
         }
     
         private fun requestCalendarAndRecordAudio() {
    -        PermissionUtils.permission(PermissionConstants.CALENDAR, PermissionConstants.MICROPHONE)
    -                .rationale { activity, shouldRequest -> PermissionHelper.showRationaleDialog(activity, shouldRequest) }
    -                .callback(object : PermissionUtils.FullCallback {
    -                    override fun onGranted(permissionsGranted: List) {
    -                        LogUtils.d(permissionsGranted)
    -                        if (permissionsGranted.size == 2) {
    -                            showSnackbar(true, "Calendar or Microphone is granted")
    -                        }
    -                        itemsView.updateItems(bindItems())
    +        PermissionUtils.permission(permission.READ_CALENDAR, permission.RECORD_AUDIO)
    +                .explain { activity, denied, shouldRequest -> PermissionHelper.showExplainDialog(activity, denied, shouldRequest) }
    +                .callback { isAllGranted, granted, deniedForever, denied ->
    +                    LogUtils.d(granted, deniedForever, denied)
    +                    itemsView.updateItems(bindItems())
    +                    if (isAllGranted) {
    +                        showSnackbar(true, "Calendar and Microphone are granted")
    +                        return@callback
                         }
    -
    -                    override fun onDenied(permissionsDeniedForever: List,
    -                                          permissionsDenied: List) {
    -                        LogUtils.d(permissionsDeniedForever, permissionsDenied)
    -                        if (permissionsDeniedForever.isNotEmpty()) {
    -                            showSnackbar(false, "Calendar or Microphone is denied forever")
    -                        } else {
    -                            showSnackbar(false, "Calendar or Microphone is denied")
    -                        }
    -                        itemsView.updateItems(bindItems())
    +                    if (deniedForever.isNotEmpty()) {
    +                        showSnackbar(false, "Calendar or Microphone is denied forever")
    +                    } else {
    +                        showSnackbar(false, "Calendar or Microphone is denied")
                         }
    -                })
    +                }
                     .request()
         }
     
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/screen/ScreenActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/screen/ScreenActivity.kt
    index 246cb0dc8e..88286c4df5 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/screen/ScreenActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/screen/ScreenActivity.kt
    @@ -3,6 +3,8 @@ package com.blankj.utilcode.pkg.feature.screen
     import android.content.Context
     import android.content.Intent
     import android.os.Build
    +import android.widget.ImageView
    +import android.widget.TextView
     import com.blankj.common.activity.CommonActivity
     import com.blankj.common.item.CommonItem
     import com.blankj.common.item.CommonItemClick
    @@ -61,10 +63,8 @@ class ScreenActivity : CommonActivity() {
     
                     CommonItemSwitch(
                             "isFullScreen",
    -                        Utils.Supplier {
    -                            ScreenUtils.isFullScreen(this)
    -                        },
    -                        Utils.Consumer {
    +                        { ScreenUtils.isFullScreen(this) },
    +                        {
                                 if (it) {
                                     ScreenUtils.setFullScreen(this)
                                     BarUtils.setStatusBarVisibility(this, false)
    @@ -76,10 +76,8 @@ class ScreenActivity : CommonActivity() {
                     ),
                     CommonItemSwitch(
                             "isLandscape",
    -                        Utils.Supplier {
    -                            ScreenUtils.isLandscape()
    -                        },
    -                        Utils.Consumer {
    +                        { ScreenUtils.isLandscape() },
    +                        {
                                 if (it) {
                                     ScreenUtils.setLandscape(this)
                                 } else {
    @@ -88,7 +86,15 @@ class ScreenActivity : CommonActivity() {
                             }
                     ),
                     CommonItemClick(R.string.screen_screenshot) {
    -                    DialogHelper.showScreenshotDialog(ScreenUtils.screenShot(this))
    +                    val iv :ImageView = ImageView(this)
    +                    iv.setImageResource(R.mipmap.ic_launcher)
    +
    +                    val tv: TextView = TextView(this)
    +                    tv.setText("wowowowwowo")
    +
    +                    DialogHelper.showScreenshotDialog(ImageUtils.view2Bitmap(tv))
    +
    +//                    DialogHelper.showScreenshotDialog(ScreenUtils.screenShot(this))
                     }
             )
         }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
    index 314ba33d59..384b1877ea 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/CustomToast.kt
    @@ -1,14 +1,11 @@
     package com.blankj.utilcode.pkg.feature.toast
     
    -import android.os.Handler
    -import android.os.Looper
     import android.support.annotation.StringRes
     import android.widget.TextView
    -import android.widget.Toast
    -
     import com.blankj.utilcode.pkg.R
    +import com.blankj.utilcode.util.StringUtils
     import com.blankj.utilcode.util.ToastUtils
    -import com.blankj.utilcode.util.Utils
    +import com.blankj.utilcode.util.ViewUtils
     
     /**
      * ```
    @@ -20,62 +17,42 @@ import com.blankj.utilcode.util.Utils
      */
     object CustomToast {
     
    -    private val HANDLER = Handler(Looper.getMainLooper())
    -
         fun showShort(text: CharSequence) {
    -        showReal(text, Toast.LENGTH_SHORT)
    +        show(text, false)
         }
     
         fun showShort(@StringRes resId: Int) {
    -        show(resId, Toast.LENGTH_SHORT)
    +        show(StringUtils.getString(resId), false)
         }
     
         fun showShort(@StringRes resId: Int, vararg args: Any) {
    -        show(resId, Toast.LENGTH_SHORT, *args)
    +        show(StringUtils.getString(resId, args), false)
         }
     
         fun showShort(format: String, vararg args: Any) {
    -        show(format, Toast.LENGTH_SHORT, *args)
    +        show(StringUtils.format(format, args), false)
         }
     
         fun showLong(text: CharSequence) {
    -        showReal(text, Toast.LENGTH_LONG)
    +        show(text, true)
         }
     
         fun showLong(@StringRes resId: Int) {
    -        show(resId, Toast.LENGTH_LONG)
    +        show(StringUtils.getString(resId), true)
         }
     
         fun showLong(@StringRes resId: Int, vararg args: Any) {
    -        show(resId, Toast.LENGTH_LONG, *args)
    +        show(StringUtils.getString(resId, args), true)
         }
     
         fun showLong(format: String, vararg args: Any) {
    -        show(format, Toast.LENGTH_LONG, *args)
    -    }
    -
    -    private fun show(@StringRes resId: Int, duration: Int) {
    -        show(Utils.getApp().resources.getString(resId), duration)
    -    }
    -
    -    private fun show(@StringRes resId: Int, duration: Int, vararg args: Any) {
    -        show(String.format(Utils.getApp().resources.getString(resId), *args), duration)
    -    }
    -
    -    private fun show(format: String, duration: Int, vararg args: Any) {
    -        showReal(String.format(format, *args), duration)
    +        show(StringUtils.format(format, args), true)
         }
     
    -    private fun showReal(text: CharSequence, duration: Int) {
    -        HANDLER.post {
    -            val toastView: TextView
    -            if (duration == Toast.LENGTH_SHORT) {
    -                toastView = ToastUtils.showCustomShort(R.layout.toast_custom) as TextView
    -            } else {
    -                toastView = ToastUtils.showCustomLong(R.layout.toast_custom) as TextView
    -            }
    -            toastView.text = text
    -        }
    +    private fun show(text: CharSequence, isLong: Boolean) {
    +        val textView = ViewUtils.layoutId2View(R.layout.toast_custom) as TextView
    +        textView.text = text
    +        ToastUtils.make().setDurationIsLong(isLong).show(textView)
         }
     
         fun cancel() {
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
    index b62d9b33f8..5d55e3c754 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt
    @@ -3,7 +3,6 @@ package com.blankj.utilcode.pkg.feature.toast
     import android.content.Context
     import android.content.Intent
     import android.graphics.Color
    -import android.support.v4.content.ContextCompat
     import android.view.Gravity
     import com.blankj.common.activity.CommonActivity
     import com.blankj.common.item.CommonItem
    @@ -11,6 +10,7 @@ import com.blankj.common.item.CommonItemClick
     import com.blankj.utilcode.pkg.R
     import com.blankj.utilcode.pkg.helper.DialogHelper
     import com.blankj.utilcode.util.CollectionUtils
    +import com.blankj.utilcode.util.ColorUtils
     import com.blankj.utilcode.util.SpanUtils
     import com.blankj.utilcode.util.ToastUtils
     
    @@ -38,30 +38,18 @@ class ToastActivity : CommonActivity() {
         override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
                     CommonItemClick(R.string.toast_show_short) {
    -                    resetToast()
                         Thread(Runnable { ToastUtils.showShort(R.string.toast_short) }).start()
                     },
                     CommonItemClick(R.string.toast_show_long) {
    -                    resetToast()
                         Thread(Runnable { ToastUtils.showLong(R.string.toast_long) }).start()
                     },
    -                CommonItemClick(R.string.toast_show_green_font) {
    -                    resetToast()
    -                    ToastUtils.setMsgColor(Color.GREEN)
    -                    ToastUtils.showLong(R.string.toast_green_font)
    -                },
    -                CommonItemClick(R.string.toast_show_bg_color) {
    -                    resetToast()
    -                    ToastUtils.setBgColor(ContextCompat.getColor(this, R.color.colorAccent))
    -                    ToastUtils.showLong(R.string.toast_bg_color)
    +                CommonItemClick(R.string.toast_show_null) {
    +                    ToastUtils.showLong(null)
                     },
    -                CommonItemClick(R.string.toast_show_bg_resource) {
    -                    resetToast()
    -                    ToastUtils.setBgResource(R.drawable.toast_round_rect)
    -                    ToastUtils.showLong(R.string.toast_custom_bg)
    +                CommonItemClick(R.string.toast_show_empty) {
    +                    ToastUtils.showLong("")
                     },
                     CommonItemClick(R.string.toast_show_span) {
    -                    resetToast()
                         ToastUtils.showLong(
                                 SpanUtils()
                                         .appendImage(R.mipmap.ic_launcher, SpanUtils.ALIGN_CENTER)
    @@ -70,34 +58,40 @@ class ToastActivity : CommonActivity() {
                                         .create()
                         )
                     },
    -                CommonItemClick(R.string.toast_show_custom_view) {
    -                    resetToast()
    -                    Thread(Runnable { CustomToast.showLong(R.string.toast_custom_view) }).start()
    +                CommonItemClick(R.string.toast_show_long_string) {
    +                    ToastUtils.showLong(R.string.toast_long_string)
    +                },
    +                CommonItemClick(R.string.toast_show_green_font) {
    +                    ToastUtils.make().setTextColor(Color.GREEN).setDurationIsLong(true).show(R.string.toast_green_font)
    +                },
    +                CommonItemClick(R.string.toast_show_bg_color) {
    +                    ToastUtils.make().setBgColor(ColorUtils.getColor(R.color.colorAccent)).show(R.string.toast_bg_color)
    +                },
    +                CommonItemClick(R.string.toast_show_bg_resource) {
    +                    ToastUtils.make().setBgResource(R.drawable.toast_round_rect).show(R.string.toast_custom_bg)
    +                },
    +                CommonItemClick(R.string.toast_show_left_icon) {
    +                    ToastUtils.make().setLeftIcon(R.mipmap.ic_launcher).show(R.string.toast_show_left_icon)
    +                },
    +                CommonItemClick(R.string.toast_show_dark_mode) {
    +                    ToastUtils.make().setTopIcon(R.mipmap.ic_launcher).setMode(ToastUtils.MODE.DARK).show(R.string.toast_show_dark_mode)
                     },
                     CommonItemClick(R.string.toast_show_middle) {
    -                    resetToast()
    -                    ToastUtils.setGravity(Gravity.CENTER, 0, 0)
    -                    ToastUtils.showLong(R.string.toast_middle)
    +                    ToastUtils.make().setGravity(Gravity.CENTER, 0, 0).show(R.string.toast_middle)
    +                },
    +                CommonItemClick(R.string.toast_show_custom_view) {
    +                    Thread(Runnable { CustomToast.showLong(R.string.toast_custom_view) }).start()
                     },
                     CommonItemClick(R.string.toast_cancel) {
                         ToastUtils.cancel()
                     },
                     CommonItemClick(R.string.toast_show_toast_dialog) {
    -                    resetToast()
                         DialogHelper.showToastDialog()
    +                },
    +                CommonItemClick(R.string.toast_show_toast_when_start_activity) {
    +                    ToastUtils.showLong(R.string.toast_show_toast_when_start_activity)
    +                    start(this)
                     }
             )
         }
    -
    -    override fun onDestroy() {
    -        resetToast()
    -        super.onDestroy()
    -    }
    -
    -    private fun resetToast() {
    -        ToastUtils.setMsgColor(-0x1000001)
    -        ToastUtils.setBgColor(-0x1000001)
    -        ToastUtils.setBgResource(-1)
    -        ToastUtils.setGravity(-1, -1, -1)
    -    }
     }
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/volume/VolumeActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/volume/VolumeActivity.kt
    new file mode 100644
    index 0000000000..26d67dda07
    --- /dev/null
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/volume/VolumeActivity.kt
    @@ -0,0 +1,63 @@
    +package com.blankj.utilcode.pkg.feature.volume
    +
    +import android.content.Context
    +import android.content.Intent
    +import android.media.AudioManager
    +import android.widget.SeekBar
    +import com.blankj.common.activity.CommonActivity
    +import com.blankj.common.item.CommonItem
    +import com.blankj.common.item.CommonItemSeekBar
    +import com.blankj.utilcode.pkg.R
    +import com.blankj.utilcode.util.CollectionUtils
    +import com.blankj.utilcode.util.VolumeUtils
    +
    +/**
    + * ```
    + * author: Blankj
    + * blog  : http://blankj.com
    + * time  : 2018/12/29
    + * desc  : demo about VibrateUtils
    + * ```
    + */
    +class VolumeActivity : CommonActivity() {
    +
    +    companion object {
    +        fun start(context: Context) {
    +            val starter = Intent(context, VolumeActivity::class.java)
    +            context.startActivity(starter)
    +        }
    +    }
    +
    +    override fun bindTitleRes(): Int {
    +        return R.string.demo_volume
    +    }
    +
    +    override fun bindItems(): MutableList> {
    +        return CollectionUtils.newArrayList(
    +                getItemSeekBar("Voice Call", AudioManager.STREAM_VOICE_CALL),
    +                getItemSeekBar("System", AudioManager.STREAM_SYSTEM),
    +                getItemSeekBar("Music", AudioManager.STREAM_MUSIC),
    +                getItemSeekBar("Ring", AudioManager.STREAM_RING),
    +                getItemSeekBar("Alarm", AudioManager.STREAM_ALARM),
    +                getItemSeekBar("Notification", AudioManager.STREAM_NOTIFICATION),
    +                getItemSeekBar("Dtmf", AudioManager.STREAM_DTMF)
    +        )
    +    }
    +
    +    private fun getItemSeekBar(title: CharSequence, streamType: Int): CommonItemSeekBar {
    +        return CommonItemSeekBar(title, VolumeUtils.getMaxVolume(streamType), object : CommonItemSeekBar.ProgressListener() {
    +            override fun getCurValue(): Int {
    +                return VolumeUtils.getVolume(streamType)
    +            }
    +
    +            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
    +                VolumeUtils.setVolume(streamType, progress,  AudioManager.FLAG_SHOW_UI)
    +            }
    +        })
    +    }
    +
    +    override fun onResume() {
    +        super.onResume()
    +        itemsView.updateItems(bindItems())
    +    }
    +}
    diff --git a/feature/utilcode/pkg/src/main/res/layout/mvp_activity.xml b/feature/utilcode/pkg/src/main/res/layout/mvp_activity.xml
    index 807c158b67..d594eb654d 100644
    --- a/feature/utilcode/pkg/src/main/res/layout/mvp_activity.xml
    +++ b/feature/utilcode/pkg/src/main/res/layout/mvp_activity.xml
    @@ -14,4 +14,17 @@
             android:text="Get Update Msg"
             app:layout_constraintTop_toTopOf="parent" />
     
    +    
    +
     
    \ No newline at end of file
    diff --git a/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml b/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml
    index 84ac729412..414fa48424 100644
    --- a/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml
    +++ b/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml
    @@ -3,11 +3,9 @@
     
         Language Demo
     
    -    Language
    -    Language App Context
    -    Language Activity Context
         Apply Simple Chinese
         Apply American
    +    Apply English
         Apply System
     
     
    \ No newline at end of file
    diff --git a/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml b/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml
    index d1ba24cff1..5cab96988f 100644
    --- a/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml
    +++ b/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml
    @@ -3,11 +3,9 @@
     
         语言例子
     
    -    语言
    -    App 上下文语言
    -    Activity 上下文语言
    -    应用简体中文
    -    应用英语
    -    应用系统语言
    +    设置简体中文
    +    设置美语
    +    设置英语
    +    设置系统语言
     
     
    \ No newline at end of file
    diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml
    index 5bea803e40..ed7e15412f 100644
    --- a/feature/utilcode/pkg/src/main/res/values/strings.xml
    +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml
    @@ -9,6 +9,7 @@
         BusUtils Demo
         CleanUtils Demo
         ClickUtils Demo
    +    ClipboardUtils Demo
         CrashUtils Demo
         DeviceUtils Demo
         FileUtils Demo
    @@ -41,6 +42,7 @@
         UiMessage Demo
         TransActivity Demo
         VibrateUtils Demo
    +    VolumeUtils Demo
     
         
         Shared Element
    @@ -227,18 +229,19 @@
         Close Dialog
     
         
    -    Language
    -    Language App Context
    -    Language Activity Context
    +    Relaunch App
         Apply Simple Chinese
         Apply American
    +    Apply English
         Apply System
     
         
         Log Switch
    -    Console Switch
    +    Console Switch
    +    Console Listener Switch
         Head Switch
         File Switch
    +    File Listener Switch
         Border Switch
         Single Tag Switch
         Log With No Tag
    @@ -325,15 +328,22 @@
         
         Show Short
         Show Long
    +    Show Null
    +    Show Empty
         Show Green Font
         Show Bg Color
         Show Bg Resource
         Show Span
    +    Show Left Icon
    +    Show Dark Mode
    +    Show Long String
    +    A toast is a view containing a quick little message for the user. The ToastUtils class helps you create and show those.
         Show Custom View
         Custom View
         Show Middle
         Cancel
         Show Toast Dialog
    +    Show Toast When Start Activity
         Short
         Long
         Green Font
    diff --git a/lib/base/src/main/java/com/blankj/base/BaseApplication.java b/lib/base/src/main/java/com/blankj/base/BaseApplication.java
    index aedea57cb4..da049b589c 100644
    --- a/lib/base/src/main/java/com/blankj/base/BaseApplication.java
    +++ b/lib/base/src/main/java/com/blankj/base/BaseApplication.java
    @@ -74,15 +74,16 @@ public String format(ArrayList arrayList) {
                             return "LogUtils Formatter ArrayList { " + arrayList.toString() + " }";
                         }
                     })
    -                .setFileWriter(null);
    +                .addFileExtraHead("ExtraKey", "ExtraValue");
             LogUtils.i(config.toString());
         }
     
         private void initCrash() {
             CrashUtils.init(new CrashUtils.OnCrashListener() {
                 @Override
    -            public void onCrash(String crashInfo, Throwable e) {
    -                LogUtils.e(crashInfo);
    +            public void onCrash(CrashUtils.CrashInfo crashInfo) {
    +                crashInfo.addExtraHead("extraKey", "extraValue");
    +                LogUtils.e(crashInfo.toString());
                     AppUtils.relaunchApp();
                 }
             });
    diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    index a067e2aff5..2c6806708a 100644
    --- a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    +++ b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java
    @@ -47,9 +47,9 @@ public  M getModel(Class modelClass) {
                 model.onCreate();
                 return model;
             } catch (IllegalAccessException e) {
    -            e.printStackTrace();
    +            Log.e("BasePresenter", "getModel", e);
             } catch (InstantiationException e) {
    -            e.printStackTrace();
    +            Log.e("BasePresenter", "getModel", e);
             }
             return null;
         }
    diff --git a/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java b/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java
    index e7e4c0475d..6a58dfea04 100644
    --- a/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java
    +++ b/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java
    @@ -1,5 +1,6 @@
     package com.blankj.common.activity;
     
    +import android.content.Context;
     import android.os.Bundle;
     import android.support.annotation.CallSuper;
     import android.support.annotation.NonNull;
    @@ -20,6 +21,7 @@
     import com.blankj.common.dialog.CommonDialogLoading;
     import com.blankj.common.item.CommonItem;
     import com.blankj.swipepanel.SwipePanel;
    +import com.blankj.utilcode.util.LanguageUtils;
     import com.blankj.utilcode.util.SizeUtils;
     
     import java.util.List;
    @@ -42,6 +44,11 @@ public abstract class CommonActivity extends BaseActivity {
     
         public View commonContentView;
     
    +//    @Override
    +//    protected void attachBaseContext(Context newBase) {
    +//        super.attachBaseContext(LanguageUtils.attachBaseContext(newBase));
    +//    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // title view
         ///////////////////////////////////////////////////////////////////////////
    diff --git a/lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt b/lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt
    index 00ac76df68..1df23cb1a4 100644
    --- a/lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt
    +++ b/lib/common/src/main/java/com/blankj/common/helper/PermissionHelper.kt
    @@ -19,7 +19,7 @@ import com.blankj.utilcode.util.*
     object PermissionHelper {
     
         fun request(context: Context, callback: PermissionUtils.SimpleCallback,
    -                @PermissionConstants.Permission vararg permissions: String) {
    +                @PermissionConstants.PermissionGroup vararg permissions: String) {
             PermissionUtils.permission(*permissions)
                     .rationale { activity, shouldRequest -> showRationaleDialog(activity, shouldRequest) }
                     .callback(object : PermissionUtils.SingleCallback {
    @@ -68,6 +68,20 @@ object PermissionHelper {
                     .show()
         }
     
    +    fun showExplainDialog(context: Context, denied: List, shouldRequest: PermissionUtils.OnExplainListener.ShouldRequest) {
    +        CommonDialogContent().init(context,
    +                StringUtils.getString(android.R.string.dialog_alert_title),
    +                "We needs the permissions of $denied to test the utils of permission.",
    +                Pair(StringUtils.getString(android.R.string.ok), View.OnClickListener {
    +                    shouldRequest.start(true)
    +                }),
    +                Pair(StringUtils.getString(android.R.string.cancel), View.OnClickListener {
    +                    ToastUtils.showShort("request failed.")
    +                    shouldRequest.start(false)
    +                }))
    +                .show()
    +    }
    +
         fun showOpenAppSettingDialog(context: Context) {
             CommonDialogContent().init(context,
                     StringUtils.getString(android.R.string.dialog_alert_title),
    diff --git a/lib/common/src/main/java/com/blankj/common/item/CommonItemSeekBar.java b/lib/common/src/main/java/com/blankj/common/item/CommonItemSeekBar.java
    index 2629e3d2d5..c68db9dc9f 100644
    --- a/lib/common/src/main/java/com/blankj/common/item/CommonItemSeekBar.java
    +++ b/lib/common/src/main/java/com/blankj/common/item/CommonItemSeekBar.java
    @@ -21,22 +21,22 @@
      */
     public class CommonItemSeekBar extends CommonItem {
     
    -    private CharSequence                    mTitle;
    -    private CharSequence                    mContent;
    -    private int                             mMaxProgress;
    -    private int                             mCurProgress;
    -    private SeekBar.OnSeekBarChangeListener mOnSeekBarChangeListener;
    -
    -    public CommonItemSeekBar(@StringRes int title, int maxProgress, int curProgress, @NonNull SeekBar.OnSeekBarChangeListener itemClickListener) {
    -        this(StringUtils.getString(title), maxProgress, curProgress, itemClickListener);
    +    private CharSequence     mTitle;
    +    private CharSequence     mContent;
    +    private int              mMaxProgress;
    +    private int              mCurProgress;
    +    private ProgressListener mProgressListener;
    +
    +    public CommonItemSeekBar(@StringRes int title, int maxProgress, @NonNull ProgressListener listener) {
    +        this(StringUtils.getString(title), maxProgress, listener);
         }
     
    -    public CommonItemSeekBar(@NonNull CharSequence title, int maxProgress, int curProgress, @NonNull SeekBar.OnSeekBarChangeListener itemClickListener) {
    +    public CommonItemSeekBar(@NonNull CharSequence title, int maxProgress, @NonNull ProgressListener listener) {
             super(R.layout.common_item_title_seekbar);
             mTitle = title;
             mMaxProgress = maxProgress;
    -        mCurProgress = curProgress;
    -        mOnSeekBarChangeListener = itemClickListener;
    +        mCurProgress = listener.getCurValue();
    +        mProgressListener = listener;
             mContent = String.valueOf(mCurProgress);
         }
     
    @@ -62,19 +62,21 @@ public boolean onTouch(View v, MotionEvent event) {
             seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                 @Override
                 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    -                mOnSeekBarChangeListener.onProgressChanged(seekBar, progress, fromUser);
    -                mCurProgress = progress;
    -                contentTv.setText(String.valueOf(progress));
    +                mProgressListener.onProgressChanged(seekBar, progress, fromUser);
    +                int curValue = mProgressListener.getCurValue();
    +                mCurProgress = curValue;
    +                contentTv.setText(String.valueOf(curValue));
    +                seekBar.setProgress(curValue);
                 }
     
                 @Override
                 public void onStartTrackingTouch(SeekBar seekBar) {
    -                mOnSeekBarChangeListener.onStartTrackingTouch(seekBar);
    +                mProgressListener.onStartTrackingTouch(seekBar);
                 }
     
                 @Override
                 public void onStopTrackingTouch(SeekBar seekBar) {
    -                mOnSeekBarChangeListener.onStartTrackingTouch(seekBar);
    +                mProgressListener.onStopTrackingTouch(seekBar);
                 }
             });
         }
    @@ -87,4 +89,17 @@ public void setTitle(CharSequence title) {
         public CharSequence getTitle() {
             return mTitle;
         }
    +
    +    public static abstract class ProgressListener implements SeekBar.OnSeekBarChangeListener {
    +
    +        public abstract int getCurValue();
    +
    +        @Override
    +        public void onStartTrackingTouch(SeekBar seekBar) {
    +        }
    +
    +        @Override
    +        public void onStopTrackingTouch(SeekBar seekBar) {
    +        }
    +    }
     }
    diff --git a/lib/subutil/README-CN.md b/lib/subutil/README-CN.md
    index 2a8b920cf8..a712609087 100644
    --- a/lib/subutil/README-CN.md
    +++ b/lib/subutil/README-CN.md
    @@ -18,16 +18,6 @@ isRegisteredBatteryStatusChangedListener: 判断是否注册电池状态改变
     unregisterBatteryStatusChangedListener  : 注销电池状态改变监听器
     ```
     
    -* ### 剪贴板相关 -> [ClipboardUtils.java][clipboard.java] -> [Test][clipboard.test]
    -```
    -copyText  : 复制文本到剪贴板
    -getText   : 获取剪贴板的文本
    -copyUri   : 复制 uri 到剪贴板
    -getUri    : 获取剪贴板的 uri
    -copyIntent: 复制意图到剪贴板
    -getIntent : 获取剪贴板的意图
    -```
    -
     * ### 坐标转换相关 -> [CoordinateUtils.java][coordinate.java] -> [Test][coordinate.test]
     ```
     bd09ToGcj02 : BD09 坐标转 GCJ02 坐标
    @@ -91,9 +81,6 @@ getSurnameFirstLetter: 根据名字获取姓氏的首字母
     [battery.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java
     [battery.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/battery/BatteryActivity.kt
     
    -[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
    -[clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java
    -
     [coordinate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
     [coordinate.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/test/java/com/blankj/subutil/util/CoordinateUtilsTest.java
     
    diff --git a/lib/subutil/README.md b/lib/subutil/README.md
    index 0ebcf92e8b..f25b631c1b 100644
    --- a/lib/subutil/README.md
    +++ b/lib/subutil/README.md
    @@ -18,16 +18,6 @@ isRegisteredBatteryStatusChangedListener
     unregisterBatteryStatusChangedListener
     ```
     
    -* ### About Clipboard -> [ClipboardUtils.java][clipboard.java] -> [Test][clipboard.test]
    -```
    -copyText
    -getText
    -copyUri
    -getUri
    -copyIntent
    -getIntent
    -```
    -
     * ### About Coordinate -> [CoordinateUtils.java][coordinate.java] -> [Test][coordinate.test]
     ```
     bd09ToGcj02
    @@ -91,9 +81,6 @@ getSurnameFirstLetter
     [battery.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java
     [battery.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/battery/BatteryActivity.kt
     
    -[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
    -[clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java
    -
     [coordinate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
     [coordinate.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/src/test/java/com/blankj/subutil/util/CoordinateUtilsTest.java
     
    diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java
    index 61b497a462..92aa89be0b 100644
    --- a/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java
    +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/AppStoreUtils.java
    @@ -1,13 +1,12 @@
     package com.blankj.subutil.util;
     
     import android.content.Intent;
    -import android.content.pm.ApplicationInfo;
     import android.content.pm.PackageManager;
     import android.content.pm.ResolveInfo;
     import android.net.Uri;
    -import android.text.TextUtils;
     import android.util.Log;
     
    +import com.blankj.utilcode.util.AppUtils;
     import com.blankj.utilcode.util.RomUtils;
     import com.blankj.utilcode.util.Utils;
     
    @@ -88,7 +87,7 @@ public static Intent getAppStoreIntent(final String packageName, boolean isInclu
             for (ResolveInfo resolveInfo : resolveInfos) {
                 String pkgName = resolveInfo.activityInfo.packageName;
                 if (!GOOGLE_PLAY_APP_STORE_PACKAGE_NAME.equals(pkgName)) {
    -                if (isAppSystem(pkgName)) {
    +                if (AppUtils.isAppSystem(pkgName)) {
                         intent.setPackage(pkgName);
                         return intent;
                     }
    @@ -105,25 +104,6 @@ public static Intent getAppStoreIntent(final String packageName, boolean isInclu
             return intent;
         }
     
    -    private static boolean go2NormalAppStore(String packageName) {
    -        Intent intent = getNormalAppStoreIntent();
    -        if (intent == null) return false;
    -        intent.setData(Uri.parse("market://details?id=" + packageName));
    -        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    -        Utils.getApp().startActivity(intent);
    -        return true;
    -    }
    -
    -    private static Intent getNormalAppStoreIntent() {
    -        Intent intent = new Intent();
    -        Uri uri = Uri.parse("market://details?id=" + Utils.getApp().getPackageName());
    -        intent.setData(uri);
    -        if (getAvailableIntentSize(intent) > 0) {
    -            return intent;
    -        }
    -        return null;
    -    }
    -
         private static Intent getSamsungAppStoreIntent(final String packageName) {
             Intent intent = new Intent();
             intent.setClassName("com.sec.android.app.samsungapps", "com.sec.android.app.samsungapps.Main");
    @@ -152,16 +132,4 @@ private static int getAvailableIntentSize(final Intent intent) {
                     .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
                     .size();
         }
    -
    -    private static boolean isAppSystem(final String packageName) {
    -        if (TextUtils.isEmpty(packageName)) return false;
    -        try {
    -            PackageManager pm = Utils.getApp().getPackageManager();
    -            ApplicationInfo ai = pm.getApplicationInfo(packageName, 0);
    -            return ai != null && (ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
    -        } catch (PackageManager.NameNotFoundException e) {
    -            e.printStackTrace();
    -            return false;
    -        }
    -    }
     }
    diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
    deleted file mode 100644
    index 13f1061d7e..0000000000
    --- a/lib/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
    +++ /dev/null
    @@ -1,96 +0,0 @@
    -package com.blankj.subutil.util;
    -
    -import android.content.ClipData;
    -import android.content.ClipboardManager;
    -import android.content.Context;
    -import android.content.Intent;
    -import android.net.Uri;
    -
    -import com.blankj.utilcode.util.Utils;
    -
    -/**
    - * 
    - *     author: Blankj
    - *     blog  : http://blankj.com
    - *     time  : 2016/09/25
    - *     desc  : 剪贴板相关工具类
    - * 
    - */ -public final class ClipboardUtils { - - private ClipboardUtils() { - throw new UnsupportedOperationException("u can't instantiate me..."); - } - - /** - * 复制文本到剪贴板 - * - * @param text 文本 - */ - public static void copyText(final CharSequence text) { - ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); - cm.setPrimaryClip(ClipData.newPlainText("text", text)); - } - - /** - * 获取剪贴板的文本 - * - * @return 剪贴板的文本 - */ - public static CharSequence getText() { - ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); - ClipData clip = cm.getPrimaryClip(); - if (clip != null && clip.getItemCount() > 0) { - return clip.getItemAt(0).coerceToText(Utils.getApp()); - } - return null; - } - - /** - * 复制uri到剪贴板 - * - * @param uri uri - */ - public static void copyUri(final Uri uri) { - ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); - cm.setPrimaryClip(ClipData.newUri(Utils.getApp().getContentResolver(), "uri", uri)); - } - - /** - * 获取剪贴板的uri - * - * @return 剪贴板的uri - */ - public static Uri getUri() { - ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); - ClipData clip = cm.getPrimaryClip(); - if (clip != null && clip.getItemCount() > 0) { - return clip.getItemAt(0).getUri(); - } - return null; - } - - /** - * 复制意图到剪贴板 - * - * @param intent 意图 - */ - public static void copyIntent(final Intent intent) { - ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); - cm.setPrimaryClip(ClipData.newIntent("intent", intent)); - } - - /** - * 获取剪贴板的意图 - * - * @return 剪贴板的意图 - */ - public static Intent getIntent() { - ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); - ClipData clip = cm.getPrimaryClip(); - if (clip != null && clip.getItemCount() > 0) { - return clip.getItemAt(0).getIntent(); - } - return null; - } -} diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/DangerousUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/DangerousUtils.java index 8469d47a14..a2670674b4 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/DangerousUtils.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/DangerousUtils.java @@ -325,7 +325,7 @@ public static boolean setMobileDataEnabled(final boolean enabled) { setDataEnabledMethod.invoke(tm, enabled); return true; } catch (Exception e) { - Log.e("NetworkUtils", "setMobileDataEnabled: ", e); + e.printStackTrace(); } return false; } diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/HttpsUtil.java b/lib/subutil/src/main/java/com/blankj/subutil/util/HttpsUtil.java index 24356f5187..e0acb09850 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/HttpsUtil.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/HttpsUtil.java @@ -8,7 +8,11 @@ import java.util.Scanner; /** - * Create by MilkZS on 2019/1/9 13:36 + *
    + *     author: MilkZS
    + *     time  : 2019/01/09
    + *     desc  : https 工具类
    + * 
    */ public final class HttpsUtil { diff --git a/lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java b/lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java deleted file mode 100644 index e1d550fb5c..0000000000 --- a/lib/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.blankj.subutil.util; - -import android.content.Intent; -import android.net.Uri; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; - -import static org.junit.Assert.assertEquals; - - -/** - *
    - *     author: Blankj
    - *     blog  : http://blankj.com
    - *     time  : 2016/09/26
    - *     desc  : ClipboardUtils 单元测试
    - * 
    - */ -@RunWith(RobolectricTestRunner.class) -@Config(manifest = Config.NONE) -public class ClipboardUtilsTest { - - static { - TestUtils.init(); - } - - @Test - public void testText() throws Exception { - ClipboardUtils.copyText("test"); - assertEquals("test", ClipboardUtils.getText()); - } - - @Test - public void testUri() throws Exception { - ClipboardUtils.copyUri(Uri.parse("http://www.blankj.com/")); - System.out.println((ClipboardUtils.getUri())); - } - - @Test - public void testIntent() throws Exception { - Intent intent = new Intent(); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setAction(Intent.ACTION_DIAL); - ClipboardUtils.copyIntent(intent); - System.out.println(ClipboardUtils.getText()); - } -} \ No newline at end of file diff --git a/lib/subutil/src/test/java/com/blankj/subutil/util/TestUtils.java b/lib/subutil/src/test/java/com/blankj/subutil/util/TestUtils.java deleted file mode 100644 index 78422556ed..0000000000 --- a/lib/subutil/src/test/java/com/blankj/subutil/util/TestUtils.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.blankj.subutil.util; - -import com.blankj.utilcode.util.Utils; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; - -/** - *
    - *     author: Blankj
    - *     blog  : http://blankj.com
    - *     time  : 2016/08/21
    - *     desc  : utils about test
    - * 
    - */ -@RunWith(RobolectricTestRunner.class) -@Config(manifest = Config.NONE) -public class TestUtils { - - public static void init() { - Utils.init(RuntimeEnvironment.application); - } - - @Test - public void test() throws Exception { - - } -} \ No newline at end of file diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 3f5cd01a41..45928eec20 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.29.0' +implementation 'com.blankj:utilcode:1.30.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.29.0' +implementation 'com.blankj:utilcodex:1.30.0' ``` @@ -13,7 +13,7 @@ implementation 'com.blankj:utilcodex:1.29.0' * ### Activity 相关 -> [ActivityUtils.java][activity.java] -> [Demo][activity.demo] ``` -addActivityLifecycleCallbacks : 新增 Activity 生命周期监听 +addActivityLifecycleCallbacks : 增加 Activity 生命周期监听 removeActivityLifecycleCallbacks: 移除 Activity 生命周期监听 getAliveActivityByContext : 根据上下文获取存活的 Activity getActivityByContext : 根据上下文获取 Activity @@ -280,6 +280,18 @@ ClickUtils#OnDebouncingClickListener: 防抖点击监听器 ClickUtils#OnMultiClickListener : 连续点击监听器 ``` +* ### 剪贴板相关 -> [ClipboardUtils.java][clipboard.java] -> [Demo][clipboard.demo] +``` +copyText : 复制文本到剪贴板 +getText : 获取剪贴板的文本 +copyUri : 复制 uri 到剪贴板 +getUri : 获取剪贴板的 uri +copyIntent : 复制意图到剪贴板 +getIntent : 获取剪贴板的意图 +addChangedListener : 增加剪贴板监听器 +removeChangedListener: 移除剪贴板监听器 +``` + * ### 克隆相关 -> [CloneUtils.java][clone.java] -> [Test][clone.test] ``` deepClone: 深度克隆 @@ -319,8 +331,8 @@ transform : 对原集合进行转变 collect : 转变为新的集合 countMatches : 查找到匹配的元素个数 exists : 判断集合是否存在符合条件的元素 -addIgnoreNull : 新增元素如果不为空 -addAll : 新增多个元素 +addIgnoreNull : 增加元素如果不为空 +addAll : 增加多个元素 get : 获取集合元素 size : 获取集合个数 sizeIsEmpty : 判断个数是否为零 @@ -376,7 +388,10 @@ sp2px, px2sp : sp 与 px 互转 * ### 崩溃相关 -> [CrashUtils.java][crash.java] ``` -init: 初始化 +init : 初始化 +CrashInfo.addExtraHead: 增加额外头部 +CrashInfo.getThrowable: 获取崩溃异常 +CrashInfo.toString : 获取崩溃信息 ``` * ### 防抖相关 -> [DebouncingUtils.java][debouncing.java] @@ -500,7 +515,7 @@ getFsAvailableSize : 获取文件系统可用大小 * ### Fragment 相关 -> [FragmentUtils.java][fragment.java] -> [Demo][fragment.demo] ``` -add : 新增 fragment +add : 增加 fragment show : 显示 fragment hide : 隐藏 fragment showHide : 先显示后隐藏 fragment @@ -565,6 +580,7 @@ fastBlur : 快速模糊 renderScriptBlur : renderScript 模糊图片 stackBlur : stack 模糊图片 save : 保存图片 +save2Album : 保存图片到相册 isImage : 根据文件名判断文件是否为图片 getImageType : 获取图片类型 compressByScale : 按缩放压缩 @@ -603,47 +619,57 @@ clickBlankArea2HideSoftInput : 点击屏幕空白区域隐藏软键盘 * ### 语言相关 -> [LanguageUtils.java][language.java] -> [Demo][language.demo] ``` -applySystemLanguage : 应用系统语言 -applyLanguage : 应用语言 -isAppliedSystemLanguage: 判断是否使用系统语言 -isAppliedLanguage : 判断是否使用某语言 -getCurrentLocale : 获取当前语言 +applySystemLanguage : 设置系统语言 +applyLanguage : 设置语言 +isAppliedLanguage : 是否设置了语言 +getAppliedLanguage : 获取设置的语言 +getContextLanguage : 获取上下文的语言 +getAppContextLanguage : 获取应用上下文的语言 +getSystemLanguage : 获取系统的语言 +updateAppContextLanguage: 更新应用上下文语言 +attachBaseContext : 如果设置语言无效则在 Activity#attachBaseContext 调用它 ``` * ### 日志相关 -> [LogUtils.java][log.java] -> [Demo][log.demo] ``` -getConfig : 获取 log 配置 -Config.setLogSwitch : 设置 log 总开关 -Config.setConsoleSwitch : 设置 log 控制台开关 -Config.setGlobalTag : 设置 log 全局 tag -Config.setLogHeadSwitch : 设置 log 头部信息开关 -Config.setLog2FileSwitch : 设置 log 文件开关 -Config.setDir : 设置 log 文件存储目录 -Config.setFilePrefix : 设置 log 文件前缀 -Config.setBorderSwitch : 设置 log 边框开关 -Config.setSingleTagSwitch: 设置 log 单一 tag 开关(为美化 AS 3.1 的 Logcat) -Config.setConsoleFilter : 设置 log 控制台过滤器 -Config.setFileFilter : 设置 log 文件过滤器 -Config.setStackDeep : 设置 log 栈深度 -Config.setStackOffset : 设置 log 栈偏移 -Config.setSaveDays : 设置 log 可保留天数 -Config.addFormatter : 新增 log 格式化器 -log : 自定义 tag 的 type 日志 -v : tag 为类名的 Verbose 日志 -vTag : 自定义 tag 的 Verbose 日志 -d : tag 为类名的 Debug 日志 -dTag : 自定义 tag 的 Debug 日志 -i : tag 为类名的 Info 日志 -iTag : 自定义 tag 的 Info 日志 -w : tag 为类名的 Warn 日志 -wTag : 自定义 tag 的 Warn 日志 -e : tag 为类名的 Error 日志 -eTag : 自定义 tag 的 Error 日志 -a : tag 为类名的 Assert 日志 -aTag : 自定义 tag 的 Assert 日志 -file : log 到文件 -json : log 字符串之 json -xml : log 字符串之 xml +getConfig : 获取 log 配置 +Config.setLogSwitch : 设置 log 总开关 +Config.setConsoleSwitch : 设置 log 控制台开关 +Config.setGlobalTag : 设置 log 全局 tag +Config.setLogHeadSwitch : 设置 log 头部信息开关 +Config.setLog2FileSwitch : 设置 log 文件开关 +Config.setDir : 设置 log 文件存储目录 +Config.setFilePrefix : 设置 log 文件前缀 +Config.setBorderSwitch : 设置 log 边框开关 +Config.setSingleTagSwitch : 设置 log 单一 tag 开关(为美化 AS 3.1 的 Logcat) +Config.setConsoleFilter : 设置 log 控制台过滤器 +Config.setFileFilter : 设置 log 文件过滤器 +Config.setStackDeep : 设置 log 栈深度 +Config.setStackOffset : 设置 log 栈偏移 +Config.setSaveDays : 设置 log 可保留天数 +Config.addFormatter : 增加 log 格式化器 +Config.setFileWriter : 设置文件写入器 +Config.setOnConsoleOutputListener: 设置控制台输出监听器 +Config.setOnFileOutputListener : 设置文件输出监听器 +Config.addFileExtraHead : 增加 log 文件头部 +log : 自定义 tag 的 type 日志 +v : tag 为类名的 Verbose 日志 +vTag : 自定义 tag 的 Verbose 日志 +d : tag 为类名的 Debug 日志 +dTag : 自定义 tag 的 Debug 日志 +i : tag 为类名的 Info 日志 +iTag : 自定义 tag 的 Info 日志 +w : tag 为类名的 Warn 日志 +wTag : 自定义 tag 的 Warn 日志 +e : tag 为类名的 Error 日志 +eTag : 自定义 tag 的 Error 日志 +a : tag 为类名的 Assert 日志 +aTag : 自定义 tag 的 Assert 日志 +file : log 到文件 +json : log 字符串之 json +xml : log 字符串之 xml +getCurrentLogFilePath : 获取当前日志文件路径 +getLogFiles : 获取所有日志 ``` * ### Map 相关 -> [MapUtils.java][map.java] -> [Test][map.test] @@ -770,6 +796,13 @@ getCachePathExternalFirst : 优先获取外部缓存路径 * ### 权限相关 -> [PermissionUtils.java][permission.java] -> [Demo][permission.demo] ``` +permission : 设置请求权限 +permissionGroup : 设置请求权限组 +permission.explain : 设置权限请求前的解释 +permission.rationale : 设置拒绝权限后再次请求的回调接口 +permission.callback : 设置回调 +permission.theme : 设置主题 +permission.request : 开始请求 getPermissions : 获取应用权限 isGranted : 判断权限是否被授予 isGrantedWriteSettings : 判断修改系统权限是否被授予 @@ -777,11 +810,6 @@ requestWriteSettings : 申请修改系统权限 isGrantedDrawOverlays : 判断悬浮窗权限是否被授予 requestDrawOverlays : 申请悬浮窗权限 launchAppDetailsSettings: 打开应用具体设置 -permission : 设置请求权限 -rationale : 设置拒绝权限后再次请求的回调接口 -callback : 设置回调 -theme : 设置主题 -request : 开始请求 ``` * ### 手机相关 -> [PhoneUtils.java][phone.java] -> [Demo][phone.demo] @@ -1067,6 +1095,7 @@ toDBC : 转化为半角字符 toSBC : 转化为全角字符 getString : 获取字符资源 getStringArray : 获取字符数组资源 +format : 格式化字符串 ``` * ### 线程相关 -> [ThreadUtils.java][thread.java] -> [Test][thread.test] @@ -1138,16 +1167,23 @@ getZodiac : 获取星座 * ### 吐司相关 -> [ToastUtils.java][toast.java] -> [Demo][toast.demo] ``` -setGravity : 设置吐司位置 -setBgColor : 设置背景颜色 -setBgResource : 设置背景资源 -setMsgColor : 设置消息颜色 -setMsgTextSize : 设置消息字体大小 -showShort : 显示短时吐司 -showLong : 显示长时吐司 -showCustomShort: 显示短时自定义吐司 -showCustomLong : 显示长时自定义吐司 -cancel : 取消吐司显示 +make : 制作吐司 +make.setMode : 设置模式 +make.setGravity : 设置位置 +make.setBgColor : 设置背景颜色 +make.setBgResource : 设置背景资源 +make.setTextColor : 设置字体颜色 +make.setTextSize : 设置字体大小 +make.setDurationIsLong : 设置是否长时间显示 +make.setLeftIcon : 设置左侧图标 +make.setTopIcon : 设置顶部图标 +make.setRightIcon : 设置右侧图标 +make.setBottomIcon : 设置底部图标 +make.setNotUseSystemToast: 设置不使用系统吐司 +make.show : 显示吐司 +showShort : 显示短时吐司 +showLong : 显示长时吐司 +cancel : 取消吐司显示 ``` * ### 触摸相关 -> [TouchUtils.java][touch.java] @@ -1158,7 +1194,7 @@ setOnTouchListener: 设置触摸事件 * ### UI 消息相关 -> [UiMessageUtils.java][uiMessage.java] -> [Demo][uiMessage.demo] ``` send : 发送消息 -addListener : 新增消息监听器 +addListener : 增加消息监听器 removeListener: 移除消息监听器 ``` @@ -1193,6 +1229,15 @@ runOnUiThread : 在 UI 线程运行 runOnUiThreadDelayed: 在 UI 线程延迟运行 isLayoutRtl : 布局是否从右到左 fixScrollViewTopping: 修复 ScrollView 置顶问题 +layoutId2View : layoutId 转为 view +``` + +* ### 音量相关 -> [VolumeUtils.java][volume.java] +``` +getVolume : 获取音量 +setVolume : 设置音量 +getMaxVolume: 获取最大音量 +getMinVolume: 获取最小音量 ``` * ### 压缩相关 -> [ZipUtils.java][zip.java] -> [Test][zip.test] @@ -1262,6 +1307,9 @@ getComments : 获取压缩文件中的注释链表 [click.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java [click.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt +[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClipboardUtils.java +[clipboard.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clipboard/ClipboardActivity.kt + [clone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/CloneUtils.java [clone.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java @@ -1417,5 +1465,8 @@ getComments : 获取压缩文件中的注释链表 [view.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java +[volume.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VolumeUtils.java +[volume.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/volume/VolumeActivity.kt + [zip.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java [zip.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/ZipUtilsTest.java diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index e29bf3dae1..27bb7c4990 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.29.0' +implementation 'com.blankj:utilcode:1.30.0' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.29.0' +implementation 'com.blankj:utilcodex:1.30.0' ``` @@ -280,6 +280,18 @@ ClickUtils#OnDebouncingClickListener ClickUtils#OnMultiClickListener ``` +* ### About Clipboard -> [ClipboardUtils.java][clipboard.java] -> [Demo][clipboard.demo] +``` +copyText +getText +copyUri +getUri +copyIntent +getIntent +addChangedListener +removeChangedListener +``` + * ### About Clone -> [CloneUtils.java][clone.java] -> [Test][clone.test] ``` deepClone @@ -342,6 +354,7 @@ string2Int int2RgbString int2ArgbString getRandomColor +isLightColor ``` * ### About Convert -> [ConvertUtils.java][convert.java] -> [Test][convert.test] @@ -376,6 +389,14 @@ sp2px, px2sp * ### About Crash -> [CrashUtils.java][crash.java] ``` init +CrashInfo.addExtraHead +CrashInfo.getThrowable +CrashInfo.toString +``` + +* ### About Debouncing -> [DebouncingUtils.java][debouncing.java] +``` +isValid ``` * ### About Device -> [DeviceUtils.java][device.java] -> [Demo][device.demo] @@ -559,6 +580,7 @@ fastBlur renderScriptBlur stackBlur save +save2Album isImage getImageType compressByScale @@ -576,6 +598,7 @@ getLaunchAppIntent getLaunchAppDetailsSettingsIntent getShareTextIntent getShareImageIntent +getShareTextImageIntent getComponentIntent getShutdownIntent getCaptureIntent @@ -598,9 +621,13 @@ clickBlankArea2HideSoftInput ``` applySystemLanguage applyLanguage -isAppliedSystemLanguage isAppliedLanguage -getCurrentLocale +getAppliedLanguage +getContextLanguage +getAppContextLanguage +getSystemLanguage +updateAppContextLanguage +attachBaseContext ``` * ### About Log -> [LogUtils.java][log.java] -> [Demo][log.demo] @@ -621,6 +648,10 @@ Config.setStackDeep Config.setStackOffset Config.setSaveDays Config.addFormatter +Config.setFileWriter +Config.setOnConsoleOutputListener +Config.setOnFileOutputListener +Config.addFileExtraHead log v vTag @@ -637,6 +668,8 @@ aTag file json xml +getCurrentLogFilePath +getLogFiles ``` * ### About Map -> [MapUtils.java][map.java] -> [Test][map.test] @@ -763,6 +796,13 @@ getCachePathExternalFirst * ### About Permission -> [PermissionUtils.java][permission.java] -> [Demo][permission.demo] ``` +permission +permissionGroup +permission.explain +permission.rationale +permission.callback +permission.theme +permission.request getPermissions isGranted isGrantedWriteSettings @@ -770,11 +810,6 @@ requestWriteSettings isGrantedDrawOverlays requestDrawOverlays launchAppDetailsSettings -permission -rationale -callback -theme -request ``` * ### About Phone -> [PhoneUtils.java][phone.java] -> [Demo][phone.demo] @@ -1060,6 +1095,7 @@ toDBC toSBC getString getStringArray +format ``` * ### About Thread -> [ThreadUtils.java][thread.java] -> [Test][thread.test] @@ -1131,15 +1167,22 @@ getZodiac * ### About Toast -> [ToastUtils.java][toast.java] -> [Demo][toast.demo] ``` -setGravity -setBgColor -setBgResource -setMsgColor -setMsgTextSize +make +make.setMode +make.setGravity +make.setBgColor +make.setBgResource +make.setTextColor +make.setTextSize +make.setDurationIsLong +make.setLeftIcon +make.setTopIcon +make.setRightIcon +make.setBottomIcon +make.setNotUseSystemToast +make.show showShort showLong -showCustomShort -showCustomLong cancel ``` @@ -1186,6 +1229,15 @@ runOnUiThread runOnUiThreadDelayed isLayoutRtl fixScrollViewTopping +layoutId2View +``` + +* ### About Volume -> [VolumeUtils.java][volume.java] +``` +getVolume +setVolume +getMaxVolume +getMinVolume ``` * ### About Zip -> [ZipUtils.java][zip.java] -> [Test][zip.test] @@ -1252,6 +1304,9 @@ getComments [click.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java [click.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/click/ClickActivity.kt +[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClipboardUtils.java +[clipboard.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clipboard/ClipboardActivity.kt + [clone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/CloneUtils.java [clone.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java @@ -1268,6 +1323,8 @@ getComments [crash.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java +[debouncing.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java + [device.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java [device.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt @@ -1405,5 +1462,8 @@ getComments [view.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java +[volume.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/VolumeUtils.java +[volume.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/volume/VolumeActivity.kt + [zip.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ZipUtils.java [zip.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/test/java/com/blankj/utilcode/util/ZipUtilsTest.java diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java index ed92d88f0f..671b654bd9 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java @@ -20,58 +20,62 @@ @SuppressLint("InlinedApi") public final class PermissionConstants { - public static final String CALENDAR = "CALENDAR"; - public static final String CAMERA = "CAMERA"; - public static final String CONTACTS = "CONTACTS"; - public static final String LOCATION = "LOCATION"; - public static final String MICROPHONE = "MICROPHONE"; - public static final String PHONE = "PHONE"; - public static final String SENSORS = "SENSORS"; - public static final String SMS = "SMS"; - public static final String STORAGE = "STORAGE"; + public static final String CALENDAR = "CALENDAR"; + public static final String CAMERA = "CAMERA"; + public static final String CONTACTS = "CONTACTS"; + public static final String LOCATION = "LOCATION"; + public static final String MICROPHONE = "MICROPHONE"; + public static final String PHONE = "PHONE"; + public static final String SENSORS = "SENSORS"; + public static final String SMS = "SMS"; + public static final String STORAGE = "STORAGE"; + public static final String ACTIVITY_RECOGNITION = "ACTIVITY_RECOGNITION"; - private static final String[] GROUP_CALENDAR = { + private static final String[] GROUP_CALENDAR = { permission.READ_CALENDAR, permission.WRITE_CALENDAR }; - private static final String[] GROUP_CAMERA = { + private static final String[] GROUP_CAMERA = { permission.CAMERA }; - private static final String[] GROUP_CONTACTS = { + private static final String[] GROUP_CONTACTS = { permission.READ_CONTACTS, permission.WRITE_CONTACTS, permission.GET_ACCOUNTS }; - private static final String[] GROUP_LOCATION = { + private static final String[] GROUP_LOCATION = { permission.ACCESS_FINE_LOCATION, permission.ACCESS_COARSE_LOCATION }; - private static final String[] GROUP_MICROPHONE = { + private static final String[] GROUP_MICROPHONE = { permission.RECORD_AUDIO }; - private static final String[] GROUP_PHONE = { + private static final String[] GROUP_PHONE = { permission.READ_PHONE_STATE, permission.READ_PHONE_NUMBERS, permission.CALL_PHONE, permission.READ_CALL_LOG, permission.WRITE_CALL_LOG, permission.ADD_VOICEMAIL, permission.USE_SIP, permission.PROCESS_OUTGOING_CALLS, permission.ANSWER_PHONE_CALLS }; - private static final String[] GROUP_PHONE_BELOW_O = { + private static final String[] GROUP_PHONE_BELOW_O = { permission.READ_PHONE_STATE, permission.READ_PHONE_NUMBERS, permission.CALL_PHONE, permission.READ_CALL_LOG, permission.WRITE_CALL_LOG, permission.ADD_VOICEMAIL, permission.USE_SIP, permission.PROCESS_OUTGOING_CALLS }; - private static final String[] GROUP_SENSORS = { + private static final String[] GROUP_SENSORS = { permission.BODY_SENSORS }; - private static final String[] GROUP_SMS = { + private static final String[] GROUP_SMS = { permission.SEND_SMS, permission.RECEIVE_SMS, permission.READ_SMS, permission.RECEIVE_WAP_PUSH, permission.RECEIVE_MMS, }; - private static final String[] GROUP_STORAGE = { + private static final String[] GROUP_STORAGE = { permission.READ_EXTERNAL_STORAGE, permission.WRITE_EXTERNAL_STORAGE, }; + private static final String[] GROUP_ACTIVITY_RECOGNITION = { + permission.ACTIVITY_RECOGNITION, + }; @StringDef({CALENDAR, CAMERA, CONTACTS, LOCATION, MICROPHONE, PHONE, SENSORS, SMS, STORAGE,}) @Retention(RetentionPolicy.SOURCE) - public @interface Permission { + public @interface PermissionGroup { } - public static String[] getPermissions(@Permission final String permission) { + public static String[] getPermissions(@PermissionGroup final String permission) { if (permission == null) return new String[0]; switch (permission) { case CALENDAR: @@ -96,6 +100,8 @@ public static String[] getPermissions(@Permission final String permission) { return GROUP_SMS; case STORAGE: return GROUP_STORAGE; + case ACTIVITY_RECOGNITION: + return GROUP_ACTIVITY_RECOGNITION; } return new String[]{permission}; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 2a5cc80f3c..c4c2e0a8a5 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -39,6 +39,15 @@ private ActivityUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } + /** + * Add callbacks of activity lifecycle. + * + * @param callbacks The callbacks. + */ + public static void addActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks callbacks) { + UtilsBridge.addActivityLifecycleCallbacks(callbacks); + } + /** * Add callbacks of activity lifecycle. * @@ -50,6 +59,15 @@ public static void addActivityLifecycleCallbacks(final Activity activity, UtilsBridge.addActivityLifecycleCallbacks(activity, callbacks); } + /** + * Remove callbacks of activity lifecycle. + * + * @param callbacks The callbacks. + */ + public static void removeActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks callbacks) { + UtilsBridge.removeActivityLifecycleCallbacks(callbacks); + } + /** * Remove callbacks of activity lifecycle. * diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java index 5a47ecc9d8..3a5ec1f12b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java @@ -2,7 +2,6 @@ import android.content.res.Resources; import android.util.DisplayMetrics; -import android.util.Log; import java.lang.reflect.Field; import java.util.ArrayList; @@ -145,7 +144,7 @@ private static void applyMetricsFields(final Resources resources, final float ne DisplayMetrics dm = (DisplayMetrics) metricsField.get(resources); if (dm != null) dm.xdpi = newXdpi; } catch (Exception e) { - Log.e("AdaptScreenUtils", "applyMetricsFields: " + e); + e.printStackTrace(); } } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index f1a33238ab..9ba8830644 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -1,6 +1,5 @@ package com.blankj.utilcode.util; -import android.annotation.SuppressLint; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; @@ -633,8 +632,8 @@ public static int getAppUid(String pkgName) { return Utils.getApp().getPackageManager().getApplicationInfo(pkgName, 0).uid; } catch (Exception e) { e.printStackTrace(); + return -1; } - return -1; } private static String getAppSignatureHash(final String packageName, final String algorithm) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index 7f96cce7dd..0092763b12 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -13,6 +13,7 @@ import android.support.annotation.RequiresApi; import android.support.annotation.RequiresPermission; import android.support.v4.widget.DrawerLayout; +import android.util.Log; import android.util.TypedValue; import android.view.Display; import android.view.KeyCharacterMap; @@ -56,7 +57,7 @@ private BarUtils() { * @return the status bar's height */ public static int getStatusBarHeight() { - Resources resources = Resources.getSystem(); + Resources resources = Utils.getApp().getResources(); int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android"); return resources.getDimensionPixelSize(resourceId); } @@ -432,7 +433,7 @@ public static int getActionBarHeight() { TypedValue tv = new TypedValue(); if (Utils.getApp().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { return TypedValue.complexToDimensionPixelSize( - tv.data, Resources.getSystem().getDisplayMetrics() + tv.data, Utils.getApp().getResources().getDisplayMetrics() ); } return 0; @@ -482,7 +483,7 @@ private static void invokePanels(final String methodName) { * @return the navigation bar's height */ public static int getNavBarHeight() { - Resources res = Resources.getSystem(); + Resources res = Utils.getApp().getResources(); int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId != 0) { return res.getDimensionPixelSize(resourceId); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java index 87138eada4..adb88cc697 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java @@ -8,7 +8,6 @@ import java.lang.annotation.Target; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -31,8 +30,7 @@ public final class BusUtils { private static final Object NULL = "nULl"; private static final String TAG = "BusUtils"; - private final Map> mTag_BusInfoListMap = new HashMap<>(); - + private final Map> mTag_BusInfoListMap = new ConcurrentHashMap<>(); private final Map> mClassName_BusesMap = new ConcurrentHashMap<>(); private final Map> mClassName_TagsMap = new ConcurrentHashMap<>(); private final Map> mClassName_Tag_Arg4StickyMap = new ConcurrentHashMap<>(); @@ -58,7 +56,7 @@ private void registerBus(String tag, boolean sticky, String threadMode, int priority) { List busInfoList = mTag_BusInfoListMap.get(tag); if (busInfoList == null) { - busInfoList = new ArrayList<>(); + busInfoList = new CopyOnWriteArrayList<>(); mTag_BusInfoListMap.put(tag, busInfoList); } busInfoList.add(new BusInfo(tag, className, funName, paramType, paramName, sticky, threadMode, priority)); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClipboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClipboardUtils.java new file mode 100644 index 0000000000..82127b4847 --- /dev/null +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClipboardUtils.java @@ -0,0 +1,109 @@ +package com.blankj.utilcode.util; + +import android.content.ClipData; +import android.content.ClipDescription; +import android.content.ClipboardManager; +import android.content.Context; + +/** + *
    + *     author: Blankj
    + *     blog  : http://blankj.com
    + *     time  : 2016/09/25
    + *     desc  : utils about clipboard
    + * 
    + */ +public final class ClipboardUtils { + + private ClipboardUtils() { + throw new UnsupportedOperationException("u can't instantiate me..."); + } + + /** + * Copy the text to clipboard. + *

    The label equals name of package.

    + * + * @param text The text. + */ + public static void copyText(final CharSequence text) { + ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); + //noinspection ConstantConditions + cm.setPrimaryClip(ClipData.newPlainText(Utils.getApp().getPackageName(), text)); + } + + /** + * Copy the text to clipboard. + * + * @param label The label. + * @param text The text. + */ + public static void copyText(final CharSequence label, final CharSequence text) { + ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); + //noinspection ConstantConditions + cm.setPrimaryClip(ClipData.newPlainText(label, text)); + } + + /** + * Clear the clipboard. + */ + public static void clear() { + ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); + //noinspection ConstantConditions + cm.setPrimaryClip(ClipData.newPlainText(null, "")); + } + + /** + * Return the label for clipboard. + * + * @return the label for clipboard + */ + public static CharSequence getLabel() { + ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); + //noinspection ConstantConditions + ClipDescription des = cm.getPrimaryClipDescription(); + if (des == null) { + return ""; + } + CharSequence label = des.getLabel(); + if (label == null) { + return ""; + } + return label; + } + + /** + * Return the text for clipboard. + * + * @return the text for clipboard + */ + public static CharSequence getText() { + ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); + //noinspection ConstantConditions + ClipData clip = cm.getPrimaryClip(); + if (clip != null && clip.getItemCount() > 0) { + CharSequence text = clip.getItemAt(0).coerceToText(Utils.getApp()); + if (text != null) { + return text; + } + } + return ""; + } + + /** + * Add the clipboard changed listener. + */ + public static void addChangedListener(final ClipboardManager.OnPrimaryClipChangedListener listener) { + ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); + //noinspection ConstantConditions + cm.addPrimaryClipChangedListener(listener); + } + + /** + * Remove the clipboard changed listener. + */ + public static void removeChangedListener(final ClipboardManager.OnPrimaryClipChangedListener listener) { + ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE); + //noinspection ConstantConditions + cm.removePrimaryClipChangedListener(listener); + } +} diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java index dd049e7e77..8154d9e069 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java @@ -1,13 +1,13 @@ package com.blankj.utilcode.util; import android.annotation.SuppressLint; -import android.os.Build; import android.support.annotation.NonNull; import java.io.File; import java.lang.Thread.UncaughtExceptionHandler; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Map; /** *
    @@ -99,24 +99,12 @@ private static UncaughtExceptionHandler getUncaughtExceptionHandler(final String
                 @Override
                 public void uncaughtException(@NonNull final Thread t, @NonNull final Throwable e) {
                     final String time = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss").format(new Date());
    -                final StringBuilder sb = new StringBuilder();
    -                final String head = "************* Log Head ****************" +
    -                        "\nTime Of Crash      : " + time +
    -                        "\nDevice Manufacturer: " + Build.MANUFACTURER +
    -                        "\nDevice Model       : " + Build.MODEL +
    -                        "\nAndroid Version    : " + Build.VERSION.RELEASE +
    -                        "\nAndroid SDK        : " + Build.VERSION.SDK_INT +
    -                        "\nApp VersionName    : " + UtilsBridge.getAppVersionName() +
    -                        "\nApp VersionCode    : " + UtilsBridge.getAppVersionCode() +
    -                        "\n************* Log Head ****************\n\n";
    -                sb.append(head).append(UtilsBridge.getFullStackTrace(e));
    -                final String crashInfo = sb.toString();
    -                final String crashFile = dirPath + time + ".txt";
    -                UtilsBridge.writeFileFromString(crashFile, crashInfo, true);
    -
    +                CrashInfo info = new CrashInfo(time, e);
                     if (onCrashListener != null) {
    -                    onCrashListener.onCrash(crashInfo, e);
    +                    onCrashListener.onCrash(info);
                     }
    +                final String crashFile = dirPath + time + ".txt";
    +                UtilsBridge.writeFileFromString(crashFile, info.toString(), true);
     
                     if (DEFAULT_UNCAUGHT_EXCEPTION_HANDLER != null) {
                         DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(t, e);
    @@ -130,6 +118,35 @@ public void uncaughtException(@NonNull final Thread t, @NonNull final Throwable
         ///////////////////////////////////////////////////////////////////////////
     
         public interface OnCrashListener {
    -        void onCrash(String crashInfo, Throwable e);
    +        void onCrash(CrashInfo crashInfo);
    +    }
    +
    +    public static final class CrashInfo {
    +        private UtilsBridge.FileHead mFileHeadProvider;
    +        private Throwable            mThrowable;
    +
    +        private CrashInfo(String time, Throwable throwable) {
    +            mThrowable = throwable;
    +            mFileHeadProvider = new UtilsBridge.FileHead("Crash");
    +            mFileHeadProvider.addFirst("Time Of Crash", time);
    +        }
    +
    +        public final void addExtraHead(Map extraHead) {
    +            mFileHeadProvider.append(extraHead);
    +        }
    +
    +        public final void addExtraHead(String key, String value) {
    +            mFileHeadProvider.append(key, value);
    +        }
    +
    +        public final Throwable getThrowable() {
    +            return mThrowable;
    +        }
    +
    +        @Override
    +        public String toString() {
    +            return mFileHeadProvider.toString() +
    +                    UtilsBridge.getFullStackTrace(mThrowable);
    +        }
         }
     }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java
    index faac477b22..c9f2c8ff79 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java
    @@ -45,9 +45,6 @@ public static boolean isValid(@NonNull final View view) {
          * @return {@code true}: yes
    {@code false}: no */ public static boolean isValid(@NonNull final View view, final long duration) { - if (view == null) { - throw new IllegalArgumentException("The view is null."); - } return isValid(String.valueOf(view.hashCode()), duration); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java index 40de5ef5bb..933f8e4953 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/EncryptUtils.java @@ -11,17 +11,12 @@ import java.security.KeyFactory; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; -import javax.crypto.BadPaddingException; import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; import javax.crypto.Mac; -import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; @@ -1132,19 +1127,7 @@ private static byte[] rsaTemplate(final byte[] data, } else { return cipher.doFinal(data); } - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (NoSuchPaddingException e) { - e.printStackTrace(); - } catch (InvalidKeyException e) { - e.printStackTrace(); - } catch (BadPaddingException e) { - e.printStackTrace(); - } catch (IllegalBlockSizeException e) { - e.printStackTrace(); - } catch (InvalidKeySpecException e) { - e.printStackTrace(); - } catch (NoSuchProviderException e) { + } catch (Exception e) { e.printStackTrace(); } return null; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FlashlightUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FlashlightUtils.java index 1b864f6ef5..e74996d4e4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FlashlightUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FlashlightUtils.java @@ -65,7 +65,7 @@ public static void setFlashlightStatus(final boolean isOn) { parameters.setFlashMode(FLASH_MODE_TORCH); mCamera.setParameters(parameters); } catch (IOException e) { - Log.e("FlashlightUtils", "setFlashlightStatusOn: ", e); + e.printStackTrace(); } } } else { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index 9e27fbde73..242b9dcfd5 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -14,6 +14,7 @@ import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; +import android.graphics.Path; import android.graphics.PixelFormat; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; @@ -39,7 +40,6 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; -import android.support.v4.content.ContextCompat; import android.util.Log; import android.view.View; @@ -191,23 +191,22 @@ public static Bitmap view2Bitmap(final View view) { view.setWillNotCacheDrawing(false); Bitmap drawingCache = view.getDrawingCache(); Bitmap bitmap; - if (null == drawingCache) { + if (null == drawingCache || drawingCache.isRecycled()) { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); drawingCache = view.getDrawingCache(); - if (drawingCache != null) { - bitmap = Bitmap.createBitmap(drawingCache); - } else { - bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); + if (null == drawingCache || drawingCache.isRecycled()) { + bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.RGB_565); Canvas canvas = new Canvas(bitmap); view.draw(canvas); + } else { + bitmap = Bitmap.createBitmap(drawingCache); } } else { bitmap = Bitmap.createBitmap(drawingCache); } - view.destroyDrawingCache(); view.setWillNotCacheDrawing(willNotCacheDrawing); view.setDrawingCacheEnabled(drawingCacheEnabled); return bitmap; @@ -341,15 +340,7 @@ public static Bitmap getBitmap(final byte[] data, * @return bitmap */ public static Bitmap getBitmap(@DrawableRes final int resId) { - Drawable drawable = ContextCompat.getDrawable(Utils.getApp(), resId); - Canvas canvas = new Canvas(); - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), - drawable.getIntrinsicHeight(), - Bitmap.Config.ARGB_8888); - canvas.setBitmap(bitmap); - drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); - drawable.draw(canvas); - return bitmap; + return BitmapFactory.decodeResource(Utils.getApp().getResources(), resId); } /** @@ -792,11 +783,27 @@ public static Bitmap toRoundCorner(final Bitmap src, */ public static Bitmap toRoundCorner(final Bitmap src, final float radius, - @IntRange(from = 0) int borderSize, + @FloatRange(from = 0) float borderSize, @ColorInt int borderColor) { return toRoundCorner(src, radius, borderSize, borderColor, false); } + /** + * Return the round corner bitmap. + * + * @param src The source of bitmap. + * @param radii Array of 8 values, 4 pairs of [X,Y] radii + * @param borderSize The size of border. + * @param borderColor The color of border. + * @return the round corner bitmap + */ + public static Bitmap toRoundCorner(final Bitmap src, + final float[] radii, + @FloatRange(from = 0) float borderSize, + @ColorInt int borderColor) { + return toRoundCorner(src, radii, borderSize, borderColor, false); + } + /** * Return the round corner bitmap. * @@ -809,7 +816,26 @@ public static Bitmap toRoundCorner(final Bitmap src, */ public static Bitmap toRoundCorner(final Bitmap src, final float radius, - @IntRange(from = 0) int borderSize, + @FloatRange(from = 0) float borderSize, + @ColorInt int borderColor, + final boolean recycle) { + float[] radii = {radius, radius, radius, radius, radius, radius, radius, radius}; + return toRoundCorner(src, radii, borderSize, borderColor, recycle); + } + + /** + * Return the round corner bitmap. + * + * @param src The source of bitmap. + * @param radii Array of 8 values, 4 pairs of [X,Y] radii + * @param borderSize The size of border. + * @param borderColor The color of border. + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return the round corner bitmap + */ + public static Bitmap toRoundCorner(final Bitmap src, + final float[] radii, + @FloatRange(from = 0) float borderSize, @ColorInt int borderColor, final boolean recycle) { if (isEmptyBitmap(src)) return null; @@ -823,14 +849,16 @@ public static Bitmap toRoundCorner(final Bitmap src, RectF rectF = new RectF(0, 0, width, height); float halfBorderSize = borderSize / 2f; rectF.inset(halfBorderSize, halfBorderSize); - canvas.drawRoundRect(rectF, radius, radius, paint); + Path path = new Path(); + path.addRoundRect(rectF, radii, Path.Direction.CW); + canvas.drawPath(path, paint); if (borderSize > 0) { paint.setShader(null); paint.setColor(borderColor); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(borderSize); paint.setStrokeCap(Paint.Cap.ROUND); - canvas.drawRoundRect(rectF, radius, radius, paint); + canvas.drawPath(path, paint); } if (recycle && !src.isRecycled() && ret != src) src.recycle(); return ret; @@ -846,12 +874,46 @@ public static Bitmap toRoundCorner(final Bitmap src, * @return the round corner bitmap with border */ public static Bitmap addCornerBorder(final Bitmap src, - @IntRange(from = 1) final int borderSize, + @FloatRange(from = 1) final float borderSize, @ColorInt final int color, @FloatRange(from = 0) final float cornerRadius) { return addBorder(src, borderSize, color, false, cornerRadius, false); } + /** + * Return the round corner bitmap with border. + * + * @param src The source of bitmap. + * @param borderSize The size of border. + * @param color The color of border. + * @param radii Array of 8 values, 4 pairs of [X,Y] radii + * @return the round corner bitmap with border + */ + public static Bitmap addCornerBorder(final Bitmap src, + @FloatRange(from = 1) final float borderSize, + @ColorInt final int color, + final float[] radii) { + return addBorder(src, borderSize, color, false, radii, false); + } + + /** + * Return the round corner bitmap with border. + * + * @param src The source of bitmap. + * @param borderSize The size of border. + * @param color The color of border. + * @param radii Array of 8 values, 4 pairs of [X,Y] radii + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return the round corner bitmap with border + */ + public static Bitmap addCornerBorder(final Bitmap src, + @FloatRange(from = 1) final float borderSize, + @ColorInt final int color, + final float[] radii, + final boolean recycle) { + return addBorder(src, borderSize, color, false, radii, recycle); + } + /** * Return the round corner bitmap with border. * @@ -863,7 +925,7 @@ public static Bitmap addCornerBorder(final Bitmap src, * @return the round corner bitmap with border */ public static Bitmap addCornerBorder(final Bitmap src, - @IntRange(from = 1) final int borderSize, + @FloatRange(from = 1) final float borderSize, @ColorInt final int color, @FloatRange(from = 0) final float cornerRadius, final boolean recycle) { @@ -879,7 +941,7 @@ public static Bitmap addCornerBorder(final Bitmap src, * @return the round bitmap with border */ public static Bitmap addCircleBorder(final Bitmap src, - @IntRange(from = 1) final int borderSize, + @FloatRange(from = 1) final float borderSize, @ColorInt final int color) { return addBorder(src, borderSize, color, true, 0, false); } @@ -894,7 +956,7 @@ public static Bitmap addCircleBorder(final Bitmap src, * @return the round bitmap with border */ public static Bitmap addCircleBorder(final Bitmap src, - @IntRange(from = 1) final int borderSize, + @FloatRange(from = 1) final float borderSize, @ColorInt final int color, final boolean recycle) { return addBorder(src, borderSize, color, true, 0, recycle); @@ -912,11 +974,33 @@ public static Bitmap addCircleBorder(final Bitmap src, * @return the bitmap with border */ private static Bitmap addBorder(final Bitmap src, - @IntRange(from = 1) final int borderSize, + @FloatRange(from = 1) final float borderSize, @ColorInt final int color, final boolean isCircle, final float cornerRadius, final boolean recycle) { + float[] radii = {cornerRadius, cornerRadius, cornerRadius, cornerRadius, + cornerRadius, cornerRadius, cornerRadius, cornerRadius}; + return addBorder(src, borderSize, color, isCircle, radii, recycle); + } + + /** + * Return the bitmap with border. + * + * @param src The source of bitmap. + * @param borderSize The size of border. + * @param color The color of border. + * @param isCircle True to draw circle, false to draw corner. + * @param radii Array of 8 values, 4 pairs of [X,Y] radii + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return the bitmap with border + */ + private static Bitmap addBorder(final Bitmap src, + @FloatRange(from = 1) final float borderSize, + @ColorInt final int color, + final boolean isCircle, + final float[] radii, + final boolean recycle) { if (isEmptyBitmap(src)) return null; Bitmap ret = recycle ? src : src.copy(src.getConfig(), true); int width = ret.getWidth(); @@ -930,10 +1014,12 @@ private static Bitmap addBorder(final Bitmap src, float radius = Math.min(width, height) / 2f - borderSize / 2f; canvas.drawCircle(width / 2f, height / 2f, radius, paint); } else { - int halfBorderSize = borderSize >> 1; - RectF rectF = new RectF(halfBorderSize, halfBorderSize, - width - halfBorderSize, height - halfBorderSize); - canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint); + RectF rectF = new RectF(0, 0, width, height); + float halfBorderSize = borderSize / 2f; + rectF.inset(halfBorderSize, halfBorderSize); + Path path = new Path(); + path.addRoundRect(rectF, radii, Path.Direction.CW); + canvas.drawPath(path, paint); } return ret; } @@ -1659,12 +1745,23 @@ public static boolean save(final Bitmap src, return ret; } + /** + * @param src The source of bitmap. + * @param format The format of the image. + * @return the file if save success, otherwise return null. + */ @Nullable public static File save2Album(final Bitmap src, final CompressFormat format) { return save2Album(src, format, 100, false); } + /** + * @param src The source of bitmap. + * @param format The format of the image. + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return the file if save success, otherwise return null. + */ @Nullable public static File save2Album(final Bitmap src, final CompressFormat format, @@ -1672,6 +1769,15 @@ public static File save2Album(final Bitmap src, return save2Album(src, format, 100, recycle); } + /** + * @param src The source of bitmap. + * @param format The format of the image. + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @return the file if save success, otherwise return null. + */ @Nullable public static File save2Album(final Bitmap src, final CompressFormat format, @@ -1679,6 +1785,16 @@ public static File save2Album(final Bitmap src, return save2Album(src, format, quality, false); } + /** + * @param src The source of bitmap. + * @param format The format of the image. + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return the file if save success, otherwise return null. + */ @Nullable public static File save2Album(final Bitmap src, final CompressFormat format, diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java index 5945b05807..ea40ac3162 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java @@ -1,7 +1,5 @@ package com.blankj.utilcode.util; -import android.util.Log; - import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -191,7 +189,7 @@ private static T getValueByType(final JSONObject jsonObject, //noinspection unchecked return (T) ret; } catch (JSONException e) { - Log.e("JsonUtils", "getValueByType: ", e); + e.printStackTrace(); return defaultValue; } } @@ -207,7 +205,7 @@ private static T getValueByType(final String json, try { return getValueByType(new JSONObject(json), key, defaultValue, type); } catch (JSONException e) { - Log.e("JsonUtils", "getValueByType: ", e); + e.printStackTrace(); return defaultValue; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index 38d08eff2d..7f95fdee75 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -143,7 +143,7 @@ public static void hideSoftInput(@NonNull final View view) { * @param activity The activity. */ public static void hideSoftInputByToggle(final Activity activity) { - long nowMillis = SystemClock.uptimeMillis(); + long nowMillis = SystemClock.elapsedRealtime(); long delta = nowMillis - millis; if (Math.abs(delta) > 500 && KeyboardUtils.isSoftInputVisible(activity)) { KeyboardUtils.toggleSoftInput(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java index d0ba85d243..dae5c97bfe 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LanguageUtils.java @@ -1,21 +1,15 @@ package com.blankj.utilcode.util; import android.app.Activity; -import android.app.Application; -import android.content.ComponentName; import android.content.Context; -import android.content.ContextWrapper; -import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Build; -import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.text.TextUtils; -import android.util.DisplayMetrics; import android.util.Log; -import java.lang.reflect.Field; import java.util.Locale; /** @@ -37,206 +31,287 @@ private LanguageUtils() { /** * Apply the system language. - * It will not restart Activity. u can put it in ur {@link Activity#onCreate(Bundle)}. */ public static void applySystemLanguage() { - if (isAppliedSystemLanguage()) return; - applyLanguage(Resources.getSystem().getConfiguration().locale, "", true, false); + applySystemLanguage(false); } /** * Apply the system language. * - * @param activityClz The class of activity will be started after apply system language. + * @param isRelaunchApp True to relaunch app, false to recreate all activities. */ - public static void applySystemLanguage(final Class activityClz) { - applyLanguage(Resources.getSystem().getConfiguration().locale, activityClz, true, true); - } - - /** - * Apply the system language. - * - * @param activityClassName The full class name of activity will be started after apply system language. - */ - public static void applySystemLanguage(final String activityClassName) { - applyLanguage(Resources.getSystem().getConfiguration().locale, activityClassName, true, true); + public static void applySystemLanguage(final boolean isRelaunchApp) { + applyLanguageReal(null, isRelaunchApp); } /** * Apply the language. - * It will not restart Activity. u can put it in ur {@link Activity#onCreate(Bundle)}. * * @param locale The language of locale. */ public static void applyLanguage(@NonNull final Locale locale) { - if (isAppliedLanguage(locale)) return; - applyLanguage(locale, "", false, false); + applyLanguage(locale, false); } /** * Apply the language. * - * @param locale The language of locale. - * @param activityClz The class of activity will be started after apply system language. - * It will start the launcher activity if the class is null. + * @param locale The language of locale. + * @param isRelaunchApp True to relaunch app, false to recreate all activities. */ public static void applyLanguage(@NonNull final Locale locale, - final Class activityClz) { - applyLanguage(locale, activityClz, false, true); + final boolean isRelaunchApp) { + applyLanguageReal(locale, isRelaunchApp); + } + + private static void applyLanguageReal(final Locale locale, + final boolean isRelaunchApp) { + if (locale == null) { + UtilsBridge.getSpUtils4Utils().put(KEY_LOCALE, VALUE_FOLLOW_SYSTEM, true); + } else { + UtilsBridge.getSpUtils4Utils().put(KEY_LOCALE, locale2String(locale), true); + } + + Locale destLocal = locale == null ? getLocal(Resources.getSystem().getConfiguration()) : locale; + updateAppContextLanguage(destLocal, new Utils.Consumer() { + @Override + public void accept(Boolean success) { + if (success) { + restart(isRelaunchApp); + } else { + // use relaunch app + UtilsBridge.relaunchApp(); + } + } + }); + } + + private static void restart(final boolean isRelaunchApp) { + if (isRelaunchApp) { + UtilsBridge.relaunchApp(); + } else { + for (Activity activity : UtilsBridge.getActivityList()) { + activity.recreate(); + } + } } /** - * Apply the language. + * Return whether applied the language by {@link LanguageUtils}. * - * @param locale The language of locale. - * @param activityClassName The class of activity will be started after apply system language. - * It will start the launcher activity if the class name is null. + * @return {@code true}: yes
    {@code false}: no */ - public static void applyLanguage(@NonNull final Locale locale, - final String activityClassName) { - applyLanguage(locale, activityClassName, false, true); + public static boolean isAppliedLanguage() { + return getAppliedLanguage() != null; } - private static void applyLanguage(@NonNull final Locale locale, - final Class activityClz, - final boolean isFollowSystem, - final boolean isNeedStartActivity) { - if (activityClz == null) { - applyLanguage(locale, "", isFollowSystem, isNeedStartActivity); - return; + /** + * Return whether applied the language by {@link LanguageUtils}. + * + * @param locale The locale. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isAppliedLanguage(@NonNull Locale locale) { + Locale appliedLocale = getAppliedLanguage(); + if (appliedLocale == null) { + return false; } - applyLanguage(locale, activityClz.getName(), isFollowSystem, isNeedStartActivity); + return isSameLocale(locale, appliedLocale); } - private static void applyLanguage(@NonNull final Locale locale, - final String activityClassName, - final boolean isFollowSystem, - final boolean isNeedStartActivity) { - if (isFollowSystem) { - UtilsBridge.getSpUtils4Utils().put(KEY_LOCALE, VALUE_FOLLOW_SYSTEM); - } else { - UtilsBridge.getSpUtils4Utils().put(KEY_LOCALE, locale2String(locale)); + /** + * Return the applied locale. + * + * @return the applied locale + */ + public static Locale getAppliedLanguage() { + final String spLocaleStr = UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE); + if (TextUtils.isEmpty(spLocaleStr) || VALUE_FOLLOW_SYSTEM.equals(spLocaleStr)) { + return null; } + return string2Locale(spLocaleStr); + } - updateLanguage(Utils.getApp(), locale); - - if (isNeedStartActivity) { - Intent intent = new Intent(); - String realActivityClassName = TextUtils.isEmpty(activityClassName) ? UtilsBridge.getLauncherActivity() : activityClassName; - intent.setComponent(new ComponentName(Utils.getApp(), realActivityClassName)); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK); - Utils.getApp().startActivity(intent); - } + /** + * Return the locale of context. + * + * @return the locale of context + */ + public static Locale getContextLanguage(Context context) { + return getLocal(context.getResources().getConfiguration()); } /** - * Return whether applied the system language by {@link LanguageUtils}. + * Return the locale of applicationContext. * - * @return {@code true}: yes
    {@code false}: no + * @return the locale of applicationContext */ - public static boolean isAppliedSystemLanguage() { - return VALUE_FOLLOW_SYSTEM.equals(UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE)); + public static Locale getAppContextLanguage() { + return getContextLanguage(Utils.getApp()); } /** - * Return whether applied the language by {@link LanguageUtils}. + * Return the locale of system * - * @return {@code true}: yes
    {@code false}: no + * @return the locale of system */ - public static boolean isAppliedLanguage() { - return !TextUtils.isEmpty(UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE)); + public static Locale getSystemLanguage() { + return getLocal(Resources.getSystem().getConfiguration()); } /** - * Return whether applied the language by {@link LanguageUtils}. + * Update the locale of applicationContext. * - * @param locale The locale. - * @return {@code true}: yes
    {@code false}: no + * @param destLocale The dest locale. + * @param consumer The consumer. */ - public static boolean isAppliedLanguage(Locale locale) { - final String spLocale = UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE); - if (TextUtils.isEmpty(spLocale)) { - return false; - } - if (VALUE_FOLLOW_SYSTEM.equals(spLocale)) { - return false; + public static void updateAppContextLanguage(@NonNull Locale destLocale, @Nullable Utils.Consumer consumer) { + pollCheckAppContextLocal(destLocale, 0, consumer); + } + + static void pollCheckAppContextLocal(final Locale destLocale, final int index, final Utils.Consumer consumer) { + Resources appResources = Utils.getApp().getResources(); + Configuration appConfig = appResources.getConfiguration(); + Locale appLocal = getLocal(appConfig); + + setLocal(appConfig, destLocale); + + Utils.getApp().getResources().updateConfiguration(appConfig, appResources.getDisplayMetrics()); + + if (consumer == null) return; + + if (isSameLocale(appLocal, destLocale)) { + consumer.accept(true); + } else { + if (index < 20) { + UtilsBridge.runOnUiThreadDelayed(new Runnable() { + @Override + public void run() { + pollCheckAppContextLocal(destLocale, index + 1, consumer); + } + }, 16); + return; + } + Log.e("LanguageUtils", "appLocal didn't update."); + consumer.accept(false); } - Locale settingLocale = string2Locale(spLocale); - if (settingLocale == null) return false; - return isSameLocale(settingLocale, locale); } /** - * Return the locale. + * If applyLanguage not work, try to call it in {@link Activity#attachBaseContext(Context)}. * - * @return the locale + * @param context The baseContext. + * @return the context with language */ - public static Locale getCurrentLocale() { - return Utils.getApp().getResources().getConfiguration().locale; + public static Context attachBaseContext(Context context) { + String spLocaleStr = UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE); + if (TextUtils.isEmpty(spLocaleStr) || VALUE_FOLLOW_SYSTEM.equals(spLocaleStr)) { + return context; + } + + Locale settingsLocale = string2Locale(spLocaleStr); + if (settingsLocale == null) return context; + + Resources resources = context.getResources(); + Configuration config = resources.getConfiguration(); + + setLocal(config, settingsLocale); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + return context.createConfigurationContext(config); + } else { + resources.updateConfiguration(config, resources.getDisplayMetrics()); + return context; + } } - static void applyLanguage(@NonNull final Activity activity) { + static void applyLanguage(final Activity activity) { String spLocale = UtilsBridge.getSpUtils4Utils().getString(KEY_LOCALE); if (TextUtils.isEmpty(spLocale)) { return; } + Locale destLocal; if (VALUE_FOLLOW_SYSTEM.equals(spLocale)) { - Locale sysLocale = Resources.getSystem().getConfiguration().locale; - updateLanguage(Utils.getApp(), sysLocale); - updateLanguage(activity, sysLocale); - return; + destLocal = getLocal(Resources.getSystem().getConfiguration()); + } else { + destLocal = string2Locale(spLocale); } - Locale settingLocale = string2Locale(spLocale); - if (settingLocale == null) return; - updateLanguage(Utils.getApp(), settingLocale); - updateLanguage(activity, settingLocale); + if (destLocal == null) return; + + updateConfiguration(activity, destLocal); + updateConfiguration(Utils.getApp(), destLocal); + } + + private static void updateConfiguration(Context context, Locale destLocal) { + Resources resources = context.getResources(); + Configuration config = resources.getConfiguration(); + setLocal(config, destLocal); + resources.updateConfiguration(config, resources.getDisplayMetrics()); } private static String locale2String(Locale locale) { - String localLanguage = locale.getLanguage(); - String localCountry = locale.getCountry(); + String localLanguage = locale.getLanguage(); // this may be empty + String localCountry = locale.getCountry(); // this may be empty return localLanguage + "$" + localCountry; } private static Locale string2Locale(String str) { - String[] language_country = str.split("\\$"); - if (language_country.length != 2) { + Locale locale = string2LocaleReal(str); + if (locale == null) { Log.e("LanguageUtils", "The string of " + str + " is not in the correct format."); - return null; + UtilsBridge.getSpUtils4Utils().remove(KEY_LOCALE); } - return new Locale(language_country[0], language_country[1]); + return locale; } + private static Locale string2LocaleReal(String str) { + if (!isRightFormatLocalStr(str)) { + return null; + } - private static void updateLanguage(final Context context, Locale locale) { - Resources resources = context.getResources(); - Configuration config = resources.getConfiguration(); - Locale contextLocale = config.locale; - if (isSameLocale(contextLocale, locale)) { - return; + try { + int splitIndex = str.indexOf("$"); + return new Locale(str.substring(0, splitIndex), str.substring(splitIndex + 1)); + } catch (Exception ignore) { + return null; } - DisplayMetrics dm = resources.getDisplayMetrics(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - config.setLocale(locale); - if (context instanceof Application) { - Context newContext = context.createConfigurationContext(config); - try { - //noinspection JavaReflectionMemberAccess - Field mBaseField = ContextWrapper.class.getDeclaredField("mBase"); - mBaseField.setAccessible(true); - mBaseField.set(context, newContext); - } catch (Exception ignored) {/**/} + } + + private static boolean isRightFormatLocalStr(String localStr) { + char[] chars = localStr.toCharArray(); + int count = 0; + for (char c : chars) { + if (c == '$') { + if (count >= 1) { + return false; + } + ++count; } - } else { - config.locale = locale; } - resources.updateConfiguration(config, dm); + return count == 1; } private static boolean isSameLocale(Locale l0, Locale l1) { return UtilsBridge.equals(l1.getLanguage(), l0.getLanguage()) && UtilsBridge.equals(l1.getCountry(), l0.getCountry()); } + + private static Locale getLocal(Configuration configuration) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return configuration.getLocales().get(0); + } else { + return configuration.locale; + } + } + + private static void setLocal(Configuration configuration, Locale locale) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + configuration.setLocale(locale); + } else { + configuration.locale = locale; + } + } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java index 040a3545d0..ad254474db 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java @@ -36,6 +36,7 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -228,6 +229,10 @@ public void run() { } } + public static String getCurrentLogFilePath() { + return getCurrentLogFilePath(new Date()); + } + public static List getLogFiles() { String dir = CONFIG.getDir(); File logDir = new File(dir); @@ -379,16 +384,16 @@ private static void print2Console(final int type, private static void printBorder(final int type, final String tag, boolean isTop) { if (CONFIG.isLogBorderSwitch()) { - Log.println(type, tag, isTop ? TOP_BORDER : BOTTOM_BORDER); + print2Console(type, tag, isTop ? TOP_BORDER : BOTTOM_BORDER); } } private static void printHead(final int type, final String tag, final String[] head) { if (head != null) { for (String aHead : head) { - Log.println(type, tag, CONFIG.isLogBorderSwitch() ? LEFT_BORDER + aHead : aHead); + print2Console(type, tag, CONFIG.isLogBorderSwitch() ? LEFT_BORDER + aHead : aHead); } - if (CONFIG.isLogBorderSwitch()) Log.println(type, tag, MIDDLE_BORDER); + if (CONFIG.isLogBorderSwitch()) print2Console(type, tag, MIDDLE_BORDER); } } @@ -411,13 +416,13 @@ private static void printMsg(final int type, final String tag, final String msg) private static void printSubMsg(final int type, final String tag, final String msg) { if (!CONFIG.isLogBorderSwitch()) { - Log.println(type, tag, msg); + print2Console(type, tag, msg); return; } StringBuilder sb = new StringBuilder(); String[] lines = msg.split(LINE_SEP); for (String line : lines) { - Log.println(type, tag, LEFT_BORDER + line); + print2Console(type, tag, LEFT_BORDER + line); } } @@ -456,56 +461,70 @@ private static void printSingleTagMsg(final int type, final String tag, final St int countOfSub = CONFIG.isLogBorderSwitch() ? (len - BOTTOM_BORDER.length()) / MAX_LEN : len / MAX_LEN; if (countOfSub > 0) { if (CONFIG.isLogBorderSwitch()) { - Log.println(type, tag, msg.substring(0, MAX_LEN) + LINE_SEP + BOTTOM_BORDER); + print2Console(type, tag, msg.substring(0, MAX_LEN) + LINE_SEP + BOTTOM_BORDER); int index = MAX_LEN; for (int i = 1; i < countOfSub; i++) { - Log.println(type, tag, PLACEHOLDER + LINE_SEP + TOP_BORDER + LINE_SEP + print2Console(type, tag, PLACEHOLDER + LINE_SEP + TOP_BORDER + LINE_SEP + LEFT_BORDER + msg.substring(index, index + MAX_LEN) + LINE_SEP + BOTTOM_BORDER); index += MAX_LEN; } if (index != len - BOTTOM_BORDER.length()) { - Log.println(type, tag, PLACEHOLDER + LINE_SEP + TOP_BORDER + LINE_SEP + print2Console(type, tag, PLACEHOLDER + LINE_SEP + TOP_BORDER + LINE_SEP + LEFT_BORDER + msg.substring(index, len)); } } else { - Log.println(type, tag, msg.substring(0, MAX_LEN)); + print2Console(type, tag, msg.substring(0, MAX_LEN)); int index = MAX_LEN; for (int i = 1; i < countOfSub; i++) { - Log.println(type, tag, + print2Console(type, tag, PLACEHOLDER + LINE_SEP + msg.substring(index, index + MAX_LEN)); index += MAX_LEN; } if (index != len) { - Log.println(type, tag, PLACEHOLDER + LINE_SEP + msg.substring(index, len)); + print2Console(type, tag, PLACEHOLDER + LINE_SEP + msg.substring(index, len)); } } } else { - Log.println(type, tag, msg); + print2Console(type, tag, msg); + } + } + + private static void print2Console(int type, String tag, String msg) { + Log.println(type, tag, msg); + if (CONFIG.mOnConsoleOutputListener != null) { + CONFIG.mOnConsoleOutputListener.onConsoleOutput(type, tag, msg); } } private static void print2File(final int type, final String tag, final String msg) { - String format = getSdf().format(new Date()); + Date d = new Date(); + String format = getSdf().format(d); String date = format.substring(0, 10); - String time = format.substring(11); - final String fullPath = - CONFIG.getDir() + CONFIG.getFilePrefix() + "_" - + date + "_" + - CONFIG.getProcessName() + CONFIG.getFileExtension(); - if (!createOrExistsFile(fullPath, date)) { - Log.e("LogUtils", "create " + fullPath + " failed!"); + String currentLogFilePath = getCurrentLogFilePath(d); + if (!createOrExistsFile(currentLogFilePath, date)) { + Log.e("LogUtils", "create " + currentLogFilePath + " failed!"); return; } + String time = format.substring(11); final String content = time + T[type - V] + "/" + tag + msg + LINE_SEP; - input2File(fullPath, content); + input2File(currentLogFilePath, content); + } + + private static String getCurrentLogFilePath(Date d) { + String format = getSdf().format(d); + String date = format.substring(0, 10); + return CONFIG.getDir() + CONFIG.getFilePrefix() + "_" + + date + "_" + + CONFIG.getProcessName() + CONFIG.getFileExtension(); } + private static SimpleDateFormat getSdf() { if (simpleDateFormat == null) { simpleDateFormat = new SimpleDateFormat("yyyy_MM_dd HH:mm:ss.SSS ", Locale.getDefault()); @@ -579,16 +598,8 @@ private static String findDate(String str) { } private static void printDeviceInfo(final String filePath, final String date) { - final String head = "************* Log Head ****************" + - "\nDate of Log : " + date + - "\nDevice Manufacturer: " + Build.MANUFACTURER + - "\nDevice Model : " + Build.MODEL + - "\nAndroid Version : " + Build.VERSION.RELEASE + - "\nAndroid SDK : " + Build.VERSION.SDK_INT + - "\nApp VersionName : " + UtilsBridge.getAppVersionName() + - "\nApp VersionCode : " + UtilsBridge.getAppVersionCode() + - "\n************* Log Head ****************\n\n"; - input2File(filePath, head); + CONFIG.mFileHead.addFirst("Date of Log", date); + input2File(filePath, CONFIG.mFileHead.toString()); } private static void input2File(final String filePath, final String input) { @@ -597,28 +608,34 @@ private static void input2File(final String filePath, final String input) { } else { CONFIG.mFileWriter.write(filePath, input); } + if (CONFIG.mOnFileOutputListener != null) { + CONFIG.mOnFileOutputListener.onFileOutput(filePath, input); + } } public static final class Config { - private String mDefaultDir;// The default storage directory of log. - private String mDir; // The storage directory of log. - private String mFilePrefix = "util";// The file prefix of log. - private String mFileExtension = ".txt";// The file extension of log. - private boolean mLogSwitch = true; // The switch of log. - private boolean mLog2ConsoleSwitch = true; // The logcat's switch of log. - private String mGlobalTag = ""; // The global tag of log. - private boolean mTagIsSpace = true; // The global tag is space. - private boolean mLogHeadSwitch = true; // The head's switch of log. - private boolean mLog2FileSwitch = false; // The file's switch of log. - private boolean mLogBorderSwitch = true; // The border's switch of log. - private boolean mSingleTagSwitch = true; // The single tag of log. - private int mConsoleFilter = V; // The console's filter of log. - private int mFileFilter = V; // The file's filter of log. - private int mStackDeep = 1; // The stack's deep of log. - private int mStackOffset = 0; // The stack's offset of log. - private int mSaveDays = -1; // The save days of log. - private String mProcessName = UtilsBridge.getCurrentProcessName(); - private IFileWriter mFileWriter; + private String mDefaultDir; // The default storage directory of log. + private String mDir; // The storage directory of log. + private String mFilePrefix = "util";// The file prefix of log. + private String mFileExtension = ".txt";// The file extension of log. + private boolean mLogSwitch = true; // The switch of log. + private boolean mLog2ConsoleSwitch = true; // The logcat's switch of log. + private String mGlobalTag = ""; // The global tag of log. + private boolean mTagIsSpace = true; // The global tag is space. + private boolean mLogHeadSwitch = true; // The head's switch of log. + private boolean mLog2FileSwitch = false; // The file's switch of log. + private boolean mLogBorderSwitch = true; // The border's switch of log. + private boolean mSingleTagSwitch = true; // The single tag of log. + private int mConsoleFilter = V; // The console's filter of log. + private int mFileFilter = V; // The file's filter of log. + private int mStackDeep = 1; // The stack's deep of log. + private int mStackOffset = 0; // The stack's offset of log. + private int mSaveDays = -1; // The save days of log. + private String mProcessName = UtilsBridge.getCurrentProcessName(); + private IFileWriter mFileWriter; + private OnConsoleOutputListener mOnConsoleOutputListener; + private OnFileOutputListener mOnFileOutputListener; + private UtilsBridge.FileHead mFileHead = new UtilsBridge.FileHead("Log"); private Config() { if (UtilsBridge.isSDCardEnableByEnvironment() @@ -743,6 +760,26 @@ public final Config setFileWriter(final IFileWriter fileWriter) { return this; } + public final Config setOnConsoleOutputListener(final OnConsoleOutputListener listener) { + mOnConsoleOutputListener = listener; + return this; + } + + public final Config setOnFileOutputListener(final OnFileOutputListener listener) { + mOnFileOutputListener = listener; + return this; + } + + public final Config addFileExtraHead(final Map fileExtraHead) { + mFileHead.append(fileExtraHead); + return this; + } + + public final Config addFileExtraHead(final String key, final String value) { + mFileHead.append(key, value); + return this; + } + public final String getProcessName() { if (mProcessName == null) return ""; return mProcessName.replace(":", "_"); @@ -813,24 +850,36 @@ public final int getSaveDays() { return mSaveDays; } + public final boolean haveSetOnConsoleOutputListener() { + return mOnConsoleOutputListener != null; + } + + public final boolean haveSetOnFileOutputListener() { + return mOnFileOutputListener != null; + } + @Override public String toString() { return "process: " + getProcessName() - + LINE_SEP + "switch: " + isLogSwitch() - + LINE_SEP + "console: " + isLog2ConsoleSwitch() - + LINE_SEP + "tag: " + getGlobalTag() - + LINE_SEP + "head: " + isLogHeadSwitch() - + LINE_SEP + "file: " + isLog2FileSwitch() + + LINE_SEP + "logSwitch: " + isLogSwitch() + + LINE_SEP + "consoleSwitch: " + isLog2ConsoleSwitch() + + LINE_SEP + "tag: " + (getGlobalTag().equals("") ? "null" : getGlobalTag()) + + LINE_SEP + "headSwitch: " + isLogHeadSwitch() + + LINE_SEP + "fileSwitch: " + isLog2FileSwitch() + LINE_SEP + "dir: " + getDir() + LINE_SEP + "filePrefix: " + getFilePrefix() - + LINE_SEP + "border: " + isLogBorderSwitch() - + LINE_SEP + "singleTag: " + isSingleTagSwitch() + + LINE_SEP + "borderSwitch: " + isLogBorderSwitch() + + LINE_SEP + "singleTagSwitch: " + isSingleTagSwitch() + LINE_SEP + "consoleFilter: " + getConsoleFilter() + LINE_SEP + "fileFilter: " + getFileFilter() + LINE_SEP + "stackDeep: " + getStackDeep() + LINE_SEP + "stackOffset: " + getStackOffset() + LINE_SEP + "saveDays: " + getSaveDays() - + LINE_SEP + "formatter: " + I_FORMATTER_MAP; + + LINE_SEP + "formatter: " + I_FORMATTER_MAP + + LINE_SEP + "fileWriter: " + mFileWriter + + LINE_SEP + "onConsoleOutputListener: " + mOnConsoleOutputListener + + LINE_SEP + "onFileOutputListener: " + mOnFileOutputListener + + LINE_SEP + "fileExtraHeader: " + mFileHead.getAppended(); } } @@ -842,6 +891,14 @@ public interface IFileWriter { void write(String file, String content); } + public interface OnConsoleOutputListener { + void onConsoleOutput(@TYPE int type, String tag, String content); + } + + public interface OnFileOutputListener { + void onFileOutput(String filePath, String content); + } + private final static class TagHead { String tag; String[] consoleHead; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java index 2ea696a6a3..e6ec4eec2a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java @@ -159,7 +159,7 @@ public void onServiceConnected(ComponentName name, IBinder service) { try { mServer.send(msg); } catch (RemoteException e) { - Log.e("MessengerUtils", "onServiceConnected: ", e); + e.printStackTrace(); } sendCachedMsg2Server(); } @@ -205,7 +205,7 @@ void unbind() { try { mServer.send(msg); } catch (RemoteException e) { - Log.e("MessengerUtils", "unbind: ", e); + e.printStackTrace(); } try { Utils.getApp().unbindService(mConn); @@ -242,7 +242,7 @@ private boolean send2Server(Bundle bundle) { mServer.send(msg); return true; } catch (RemoteException e) { - Log.e("MessengerUtils", "send2Server: ", e); + e.printStackTrace(); return false; } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index 9b6f36a1a8..f9ba566cc9 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -15,7 +15,6 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.format.Formatter; -import android.util.Log; import java.lang.reflect.Method; import java.net.InetAddress; @@ -227,8 +226,8 @@ public static boolean isAvailableByDns(final String domain) { return inetAddress != null; } catch (UnknownHostException e) { e.printStackTrace(); + return false; } - return false; } /** @@ -251,7 +250,7 @@ public static boolean getMobileDataEnabled() { return (boolean) getMobileDataEnabledMethod.invoke(tm); } } catch (Exception e) { - Log.e("NetworkUtils", "getMobileDataEnabled: ", e); + e.printStackTrace(); } return false; } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index a550bf2820..2e3a985124 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -27,7 +27,7 @@ import java.util.List; import java.util.Set; -import static com.blankj.utilcode.constant.PermissionConstants.Permission; +import static com.blankj.utilcode.constant.PermissionConstants.PermissionGroup; /** *
    @@ -42,6 +42,7 @@ public final class PermissionUtils {
         private static PermissionUtils sInstance;
     
         private String[]            mPermissionsParam;
    +    private OnExplainListener   mOnExplainListener;
         private OnRationaleListener mOnRationaleListener;
         private SingleCallback      mSingleCallback;
         private SimpleCallback      mSimpleCallback;
    @@ -89,7 +90,7 @@ public static List getPermissions(final String packageName) {
          * @param permissions The permissions.
          * @return {@code true}: yes
    {@code false}: no */ - public static boolean isGranted(@Permission final String... permissions) { + public static boolean isGranted(final String... permissions) { Pair, List> requestAndDeniedPermissions = getRequestAndDeniedPermissions(permissions); List deniedPermissions = requestAndDeniedPermissions.second; if (!deniedPermissions.isEmpty()) { @@ -208,7 +209,17 @@ public static void launchAppDetailsSettings() { * @param permissions The permissions. * @return the single {@link PermissionUtils} instance */ - public static PermissionUtils permission(@Permission final String... permissions) { + public static PermissionUtils permissionGroup(@PermissionGroup final String... permissions) { + return new PermissionUtils(permissions); + } + + /** + * Set the permissions. + * + * @param permissions The permissions. + * @return the single {@link PermissionUtils} instance + */ + public static PermissionUtils permission(final String... permissions) { return new PermissionUtils(permissions); } @@ -217,6 +228,17 @@ private PermissionUtils(final String... permissions) { sInstance = this; } + /** + * Set explain listener. + * + * @param listener The explain listener. + * @return the single {@link PermissionUtils} instance + */ + public PermissionUtils explain(final OnExplainListener listener) { + mOnExplainListener = listener; + return this; + } + /** * Set rationale listener. * @@ -416,25 +438,41 @@ public void accept(Intent data) { } @Override - public void onCreated(final UtilsTransActivity activity, @Nullable Bundle savedInstanceState) { + public void onCreated(@NonNull final UtilsTransActivity activity, @Nullable Bundle savedInstanceState) { activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH); int type = activity.getIntent().getIntExtra(TYPE, -1); if (type == TYPE_RUNTIME) { if (sInstance == null) { - Log.e("PermissionUtils", "request permissions failed"); + Log.e("PermissionUtils", "sInstance is null."); + activity.finish(); + return; + } + if (sInstance.mPermissionsRequest == null) { + Log.e("PermissionUtils", "mPermissionsRequest is null."); + activity.finish(); + return; + } + if (sInstance.mPermissionsRequest.size() <= 0) { + Log.e("PermissionUtils", "mPermissionsRequest's size is no more than 0."); activity.finish(); return; } if (sInstance.mThemeCallback != null) { sInstance.mThemeCallback.onActivityCreate(activity); } - if (sInstance.shouldRationale(activity, new Runnable() { - @Override - public void run() { - requestPermissions(activity); - } - })) { + if (sInstance.mOnExplainListener != null) { + sInstance.mOnExplainListener.explain(activity, sInstance.mPermissionsRequest, new OnExplainListener.ShouldRequest() { + @Override + public void start(boolean start) { + if (!start) { + activity.finish(); + } else { + requestPermissions(activity); + } + } + }); + sInstance.mOnExplainListener = null; return; } requestPermissions(activity); @@ -450,22 +488,23 @@ public void run() { } } - private void requestPermissions(Activity activity) { - if (sInstance.mPermissionsRequest != null) { - int size = sInstance.mPermissionsRequest.size(); - if (size <= 0) { - activity.finish(); - return; + private void requestPermissions(final UtilsTransActivity activity) { + if (sInstance.shouldRationale(activity, new Runnable() { + @Override + public void run() { + activity.requestPermissions(sInstance.mPermissionsRequest.toArray(new String[0]), 1); } - activity.requestPermissions(sInstance.mPermissionsRequest.toArray(new String[size]), 1); + })) { + return; } + activity.requestPermissions(sInstance.mPermissionsRequest.toArray(new String[0]), 1); } @Override - public void onRequestPermissionsResult(UtilsTransActivity activity, + public void onRequestPermissionsResult(@NonNull UtilsTransActivity activity, int requestCode, - String[] permissions, - int[] grantResults) { + @NonNull String[] permissions, + @NonNull int[] grantResults) { activity.finish(); if (sInstance != null && sInstance.mPermissionsRequest != null) { sInstance.onRequestPermissionsResult(activity); @@ -474,13 +513,13 @@ public void onRequestPermissionsResult(UtilsTransActivity activity, @Override - public boolean dispatchTouchEvent(UtilsTransActivity activity, MotionEvent ev) { + public boolean dispatchTouchEvent(@NonNull UtilsTransActivity activity, MotionEvent ev) { activity.finish(); return true; } @Override - public void onDestroy(final UtilsTransActivity activity) { + public void onDestroy(@NonNull final UtilsTransActivity activity) { if (currentRequestCode != -1) { checkRequestCallback(currentRequestCode); currentRequestCode = -1; @@ -489,7 +528,7 @@ public void onDestroy(final UtilsTransActivity activity) { } @Override - public void onActivityResult(UtilsTransActivity activity, int requestCode, int resultCode, Intent data) { + public void onActivityResult(@NonNull UtilsTransActivity activity, int requestCode, int resultCode, Intent data) { activity.finish(); } @@ -518,9 +557,18 @@ private void checkRequestCallback(int requestCode) { // interface /////////////////////////////////////////////////////////////////////////// + public interface OnExplainListener { + + void explain(@NonNull UtilsTransActivity activity, @NonNull List denied, @NonNull ShouldRequest shouldRequest); + + interface ShouldRequest { + void start(boolean start); + } + } + public interface OnRationaleListener { - void rationale(UtilsTransActivity activity, ShouldRequest shouldRequest); + void rationale(@NonNull UtilsTransActivity activity, @NonNull ShouldRequest shouldRequest); interface ShouldRequest { void again(boolean again); @@ -546,6 +594,6 @@ public interface FullCallback { } public interface ThemeCallback { - void onActivityCreate(Activity activity); + void onActivityCreate(@NonNull Activity activity); } } \ No newline at end of file diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java index 079d138eea..b5cad7ef99 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java @@ -237,27 +237,12 @@ public static Bitmap screenShot(@NonNull final Activity activity) { */ public static Bitmap screenShot(@NonNull final Activity activity, boolean isDeleteStatusBar) { View decorView = activity.getWindow().getDecorView(); - boolean drawingCacheEnabled = decorView.isDrawingCacheEnabled(); - boolean willNotCacheDrawing = decorView.willNotCacheDrawing(); - decorView.setDrawingCacheEnabled(true); - decorView.setWillNotCacheDrawing(false); - Bitmap bmp = decorView.getDrawingCache(); - if (bmp == null || bmp.isRecycled()) { - decorView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), - View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); - decorView.layout(0, 0, decorView.getMeasuredWidth(), decorView.getMeasuredHeight()); - decorView.buildDrawingCache(); - bmp = Bitmap.createBitmap(decorView.getDrawingCache()); - } - if (bmp == null || bmp.isRecycled()) return null; + Bitmap bmp = UtilsBridge.view2Bitmap(decorView); DisplayMetrics dm = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(dm); - Bitmap ret; if (isDeleteStatusBar) { - Resources resources = activity.getResources(); - int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android"); - int statusBarHeight = resources.getDimensionPixelSize(resourceId); - ret = Bitmap.createBitmap( + int statusBarHeight = UtilsBridge.getStatusBarHeight(); + return Bitmap.createBitmap( bmp, 0, statusBarHeight, @@ -265,12 +250,8 @@ public static Bitmap screenShot(@NonNull final Activity activity, boolean isDele dm.heightPixels - statusBarHeight ); } else { - ret = Bitmap.createBitmap(bmp, 0, 0, dm.widthPixels, dm.heightPixels); + return Bitmap.createBitmap(bmp, 0, 0, dm.widthPixels, dm.heightPixels); } - decorView.destroyDrawingCache(); - decorView.setWillNotCacheDrawing(willNotCacheDrawing); - decorView.setDrawingCacheEnabled(drawingCacheEnabled); - return ret; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java index c3254e3d32..28efede8d4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java @@ -4,6 +4,8 @@ import android.support.annotation.ArrayRes; import android.support.annotation.StringRes; +import java.util.IllegalFormatException; + /** *
      *     author: Blankj
    @@ -117,7 +119,7 @@ public static int length(final CharSequence s) {
         public static String upperFirstLetter(final String s) {
             if (s == null || s.length() == 0) return "";
             if (!Character.isLowerCase(s.charAt(0))) return s;
    -        return String.valueOf((char) (s.charAt(0) - 32)) + s.substring(1);
    +        return (char) (s.charAt(0) - 32) + s.substring(1);
         }
     
         /**
    @@ -202,11 +204,7 @@ public static String toSBC(final String s) {
          * @return the string value associated with a particular resource ID.
          */
         public static String getString(@StringRes int id) {
    -        try {
    -            return Utils.getApp().getResources().getString(id);
    -        } catch (Resources.NotFoundException ignore) {
    -            return "";
    -        }
    +        return getString(id, (Object[]) null);
         }
     
         /**
    @@ -218,9 +216,10 @@ public static String getString(@StringRes int id) {
          */
         public static String getString(@StringRes int id, Object... formatArgs) {
             try {
    -            return Utils.getApp().getString(id, formatArgs);
    -        } catch (Resources.NotFoundException ignore) {
    -            return "";
    +            return format(Utils.getApp().getString(id), formatArgs);
    +        } catch (Resources.NotFoundException e) {
    +            e.printStackTrace();
    +            return String.valueOf(id);
             }
         }
     
    @@ -233,8 +232,30 @@ public static String getString(@StringRes int id, Object... formatArgs) {
         public static String[] getStringArray(@ArrayRes int id) {
             try {
                 return Utils.getApp().getResources().getStringArray(id);
    -        } catch (Resources.NotFoundException ignore) {
    -            return new String[0];
    +        } catch (Resources.NotFoundException e) {
    +            e.printStackTrace();
    +            return new String[]{String.valueOf(id)};
    +        }
    +    }
    +
    +    /**
    +     * Format the string.
    +     *
    +     * @param str  The string.
    +     * @param args The args.
    +     * @return a formatted string.
    +     */
    +    public static String format(String str, Object... args) {
    +        String text = str;
    +        if (text != null) {
    +            if (args != null && args.length > 0) {
    +                try {
    +                    text = String.format(str, args);
    +                } catch (IllegalFormatException e) {
    +                    e.printStackTrace();
    +                }
    +            }
             }
    +        return text;
         }
     }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java
    index 3abb3b35ab..0bdd221a29 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java
    @@ -2,32 +2,42 @@
     
     import android.app.Activity;
     import android.content.Context;
    +import android.graphics.Bitmap;
     import android.graphics.Color;
     import android.graphics.PixelFormat;
     import android.graphics.PorterDuff;
     import android.graphics.PorterDuffColorFilter;
     import android.graphics.drawable.Drawable;
    +import android.graphics.drawable.GradientDrawable;
     import android.os.Build;
     import android.os.Handler;
     import android.os.Message;
     import android.support.annotation.CallSuper;
     import android.support.annotation.ColorInt;
     import android.support.annotation.DrawableRes;
    -import android.support.annotation.LayoutRes;
     import android.support.annotation.NonNull;
     import android.support.annotation.Nullable;
    +import android.support.annotation.StringDef;
     import android.support.annotation.StringRes;
     import android.support.v4.app.NotificationManagerCompat;
    -import android.util.Log;
    +import android.support.v4.content.ContextCompat;
    +import android.support.v4.view.ViewCompat;
    +import android.util.AttributeSet;
     import android.view.Gravity;
    -import android.view.LayoutInflater;
     import android.view.View;
    +import android.view.ViewGroup;
    +import android.view.Window;
     import android.view.WindowManager;
    +import android.widget.FrameLayout;
    +import android.widget.ImageView;
    +import android.widget.RelativeLayout;
     import android.widget.TextView;
     import android.widget.Toast;
     
     import com.blankj.utilcode.R;
     
    +import java.lang.annotation.Retention;
    +import java.lang.annotation.RetentionPolicy;
     import java.lang.reflect.Field;
     
     /**
    @@ -40,20 +50,49 @@
      */
     public final class ToastUtils {
     
    -    private static final int    COLOR_DEFAULT = 0xFEFFFFFF;
    -    private static final String NULL          = "null";
    +    @StringDef({MODE.LIGHT, MODE.DARK})
    +    @Retention(RetentionPolicy.SOURCE)
    +    public @interface MODE {
    +        String LIGHT = "light";
    +        String DARK  = "dark";
    +    }
    +
    +    private static final String     TAG_TOAST           = "TAG_TOAST";
    +    private static final int        COLOR_DEFAULT       = 0xFEFFFFFF;
    +    private static final String     NULL                = "toast null";
    +    private static final String     NOTHING             = "toast nothing";
    +    private static final ToastUtils DEFAULT_TOAST_UTILS = make();
     
         private static IToast iToast;
    -    private static int    sGravity     = -1;
    -    private static int    sXOffset     = -1;
    -    private static int    sYOffset     = -1;
    -    private static int    sBgColor     = COLOR_DEFAULT;
    -    private static int    sBgResource  = -1;
    -    private static int    sMsgColor    = COLOR_DEFAULT;
    -    private static int    sMsgTextSize = -1;
     
    -    private ToastUtils() {
    -        throw new UnsupportedOperationException("u can't instantiate me...");
    +    private String     mMode;
    +    private int        mGravity            = -1;
    +    private int        mXOffset            = -1;
    +    private int        mYOffset            = -1;
    +    private int        mBgColor            = COLOR_DEFAULT;
    +    private int        mBgResource         = -1;
    +    private int        mTextColor          = COLOR_DEFAULT;
    +    private int        mTextSize           = -1;
    +    private boolean    isLong              = false;
    +    private Drawable[] mIcons              = new Drawable[4];
    +    private boolean    isNotUseSystemToast = false;
    +
    +    /**
    +     * Make a toast.
    +     *
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public static ToastUtils make() {
    +        return new ToastUtils();
    +    }
    +
    +    /**
    +     * @param mode The mode.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setMode(@MODE String mode) {
    +        mMode = mode;
    +        return this;
         }
     
         /**
    @@ -62,47 +101,161 @@ private ToastUtils() {
          * @param gravity The gravity.
          * @param xOffset X-axis offset, in pixel.
          * @param yOffset Y-axis offset, in pixel.
    +     * @return the single {@link ToastUtils} instance
          */
    -    public static void setGravity(final int gravity, final int xOffset, final int yOffset) {
    -        sGravity = gravity;
    -        sXOffset = xOffset;
    -        sYOffset = yOffset;
    +    public final ToastUtils setGravity(final int gravity, final int xOffset, final int yOffset) {
    +        mGravity = gravity;
    +        mXOffset = xOffset;
    +        mYOffset = yOffset;
    +        return this;
         }
     
         /**
          * Set the color of background.
          *
          * @param backgroundColor The color of background.
    +     * @return the single {@link ToastUtils} instance
          */
    -    public static void setBgColor(@ColorInt final int backgroundColor) {
    -        sBgColor = backgroundColor;
    +    public final ToastUtils setBgColor(@ColorInt final int backgroundColor) {
    +        mBgColor = backgroundColor;
    +        return this;
         }
     
         /**
          * Set the resource of background.
          *
          * @param bgResource The resource of background.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setBgResource(@DrawableRes final int bgResource) {
    +        mBgResource = bgResource;
    +        return this;
    +    }
    +
    +    /**
    +     * Set the text color of toast.
    +     *
    +     * @param msgColor The text color of toast.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setTextColor(@ColorInt final int msgColor) {
    +        mTextColor = msgColor;
    +        return this;
    +    }
    +
    +    /**
    +     * Set the text size of toast.
    +     *
    +     * @param textSize The text size of toast.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setTextSize(final int textSize) {
    +        mTextSize = textSize;
    +        return this;
    +    }
    +
    +    /**
    +     * Set the toast for a long period of time.
    +     *
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setDurationIsLong(boolean isLong) {
    +        this.isLong = isLong;
    +        return this;
    +    }
    +
    +    /**
    +     * Set the left icon of toast.
    +     *
    +     * @param resId The left icon resource identifier.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setLeftIcon(@DrawableRes int resId) {
    +        return setLeftIcon(ContextCompat.getDrawable(Utils.getApp(), resId));
    +    }
    +
    +    /**
    +     * Set the left icon of toast.
    +     *
    +     * @param drawable The left icon drawable.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setLeftIcon(Drawable drawable) {
    +        mIcons[0] = drawable;
    +        return this;
    +    }
    +
    +    /**
    +     * Set the top icon of toast.
    +     *
    +     * @param resId The top icon resource identifier.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setTopIcon(@DrawableRes int resId) {
    +        return setTopIcon(ContextCompat.getDrawable(Utils.getApp(), resId));
    +    }
    +
    +    /**
    +     * Set the top icon of toast.
    +     *
    +     * @param drawable The top icon drawable.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setTopIcon(Drawable drawable) {
    +        mIcons[1] = drawable;
    +        return this;
    +    }
    +
    +    /**
    +     * Set the right icon of toast.
    +     *
    +     * @param resId The right icon resource identifier.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setRightIcon(@DrawableRes int resId) {
    +        return setRightIcon(ContextCompat.getDrawable(Utils.getApp(), resId));
    +    }
    +
    +    /**
    +     * Set the right icon of toast.
    +     *
    +     * @param drawable The right icon drawable.
    +     * @return the single {@link ToastUtils} instance
    +     */
    +    public final ToastUtils setRightIcon(Drawable drawable) {
    +        mIcons[2] = drawable;
    +        return this;
    +    }
    +
    +    /**
    +     * Set the left bottom of toast.
    +     *
    +     * @param resId The bottom icon resource identifier.
    +     * @return the single {@link ToastUtils} instance
          */
    -    public static void setBgResource(@DrawableRes final int bgResource) {
    -        sBgResource = bgResource;
    +    public final ToastUtils setBottomIcon(int resId) {
    +        return setBottomIcon(ContextCompat.getDrawable(Utils.getApp(), resId));
         }
     
         /**
    -     * Set the color of message.
    +     * Set the bottom icon of toast.
          *
    -     * @param msgColor The color of message.
    +     * @param drawable The bottom icon drawable.
    +     * @return the single {@link ToastUtils} instance
          */
    -    public static void setMsgColor(@ColorInt final int msgColor) {
    -        sMsgColor = msgColor;
    +    public final ToastUtils setBottomIcon(Drawable drawable) {
    +        mIcons[3] = drawable;
    +        return this;
         }
     
         /**
    -     * Set the text size of message.
    +     * Set not use system toast.
          *
    -     * @param textSize The text size of message.
    +     * @return the single {@link ToastUtils} instance
          */
    -    public static void setMsgTextSize(final int textSize) {
    -        sMsgTextSize = textSize;
    +    public final ToastUtils setNotUseSystemToast() {
    +        isNotUseSystemToast = true;
    +        return this;
         }
     
         /**
    @@ -110,8 +263,8 @@ public static void setMsgTextSize(final int textSize) {
          *
          * @param text The text.
          */
    -    public static void showShort(final CharSequence text) {
    -        show(text == null ? NULL : text, Toast.LENGTH_SHORT);
    +    public final void show(final CharSequence text) {
    +        show(text, getDuration(), this);
         }
     
         /**
    @@ -119,8 +272,8 @@ public static void showShort(final CharSequence text) {
          *
          * @param resId The resource id for text.
          */
    -    public static void showShort(@StringRes final int resId) {
    -        show(resId, Toast.LENGTH_SHORT);
    +    public final void show(@StringRes final int resId) {
    +        show(UtilsBridge.getString(resId), getDuration(), this);
         }
     
         /**
    @@ -129,8 +282,8 @@ public static void showShort(@StringRes final int resId) {
          * @param resId The resource id for text.
          * @param args  The args.
          */
    -    public static void showShort(@StringRes final int resId, final Object... args) {
    -        show(resId, Toast.LENGTH_SHORT, args);
    +    public final void show(@StringRes final int resId, final Object... args) {
    +        show(UtilsBridge.getString(resId, args), getDuration(), this);
         }
     
         /**
    @@ -139,84 +292,133 @@ public static void showShort(@StringRes final int resId, final Object... args) {
          * @param format The format.
          * @param args   The args.
          */
    -    public static void showShort(final String format, final Object... args) {
    -        show(format, Toast.LENGTH_SHORT, args);
    +    public final void show(final String format, final Object... args) {
    +        show(UtilsBridge.format(format, args), getDuration(), this);
         }
     
         /**
    -     * Show the toast for a long period of time.
    +     * Show custom toast.
    +     */
    +    public final void show(final View view) {
    +        show(view, getDuration(), this);
    +    }
    +
    +    private int getDuration() {
    +        return isLong ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT;
    +    }
    +
    +    private View tryApplyUtilsToastView(final CharSequence text) {
    +        if (!MODE.DARK.equals(mMode) && !MODE.LIGHT.equals(mMode)
    +                && mIcons[0] == null && mIcons[1] == null && mIcons[2] == null && mIcons[3] == null) {
    +            return null;
    +        }
    +
    +        View toastView = UtilsBridge.layoutId2View(R.layout.utils_toast_view);
    +        TextView messageTv = toastView.findViewById(android.R.id.message);
    +        if (MODE.DARK.equals(mMode)) {
    +            GradientDrawable bg = (GradientDrawable) toastView.getBackground().mutate();
    +            bg.setColor(Color.parseColor("#BB000000"));
    +            messageTv.setTextColor(Color.WHITE);
    +        }
    +        messageTv.setText(text);
    +        if (mIcons[0] != null) {
    +            View leftIconView = toastView.findViewById(R.id.utvLeftIconView);
    +            ViewCompat.setBackground(leftIconView, mIcons[0]);
    +            leftIconView.setVisibility(View.VISIBLE);
    +        }
    +        if (mIcons[1] != null) {
    +            View topIconView = toastView.findViewById(R.id.utvTopIconView);
    +            ViewCompat.setBackground(topIconView, mIcons[1]);
    +            topIconView.setVisibility(View.VISIBLE);
    +        }
    +        if (mIcons[2] != null) {
    +            View rightIconView = toastView.findViewById(R.id.utvRightIconView);
    +            ViewCompat.setBackground(rightIconView, mIcons[2]);
    +            rightIconView.setVisibility(View.VISIBLE);
    +        }
    +        if (mIcons[3] != null) {
    +            View bottomIconView = toastView.findViewById(R.id.utvBottomIconView);
    +            ViewCompat.setBackground(bottomIconView, mIcons[3]);
    +            bottomIconView.setVisibility(View.VISIBLE);
    +        }
    +        return toastView;
    +    }
    +
    +
    +    /**
    +     * Show the toast for a short period of time.
          *
          * @param text The text.
          */
    -    public static void showLong(final CharSequence text) {
    -        show(text == null ? NULL : text, Toast.LENGTH_LONG);
    +    public static void showShort(final CharSequence text) {
    +        show(text, Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS);
         }
     
         /**
    -     * Show the toast for a long period of time.
    +     * Show the toast for a short period of time.
          *
          * @param resId The resource id for text.
          */
    -    public static void showLong(@StringRes final int resId) {
    -        show(resId, Toast.LENGTH_LONG);
    +    public static void showShort(@StringRes final int resId) {
    +        show(UtilsBridge.getString(resId), Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS);
         }
     
         /**
    -     * Show the toast for a long period of time.
    +     * Show the toast for a short period of time.
          *
          * @param resId The resource id for text.
          * @param args  The args.
          */
    -    public static void showLong(@StringRes final int resId, final Object... args) {
    -        show(resId, Toast.LENGTH_LONG, args);
    +    public static void showShort(@StringRes final int resId, final Object... args) {
    +        show(UtilsBridge.getString(resId, args), Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS);
         }
     
         /**
    -     * Show the toast for a long period of time.
    +     * Show the toast for a short period of time.
          *
          * @param format The format.
          * @param args   The args.
          */
    -    public static void showLong(final String format, final Object... args) {
    -        show(format, Toast.LENGTH_LONG, args);
    +    public static void showShort(final String format, final Object... args) {
    +        show(UtilsBridge.format(format, args), Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS);
         }
     
         /**
    -     * Show custom toast for a short period of time.
    +     * Show the toast for a long period of time.
          *
    -     * @param layoutId ID for an XML layout resource to load.
    +     * @param text The text.
          */
    -    public static View showCustomShort(@LayoutRes final int layoutId) {
    -        return showCustomShort(getView(layoutId));
    +    public static void showLong(final CharSequence text) {
    +        show(text, Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS);
         }
     
         /**
    -     * Show custom toast for a short period of time.
    +     * Show the toast for a long period of time.
          *
    -     * @param view The view of toast.
    +     * @param resId The resource id for text.
          */
    -    public static View showCustomShort(final View view) {
    -        show(view, Toast.LENGTH_SHORT);
    -        return view;
    +    public static void showLong(@StringRes final int resId) {
    +        show(UtilsBridge.getString(resId), Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS);
         }
     
         /**
    -     * Show custom toast for a long period of time.
    +     * Show the toast for a long period of time.
          *
    -     * @param layoutId ID for an XML layout resource to load.
    +     * @param resId The resource id for text.
    +     * @param args  The args.
          */
    -    public static View showCustomLong(@LayoutRes final int layoutId) {
    -        return showCustomLong(getView(layoutId));
    +    public static void showLong(@StringRes final int resId, final Object... args) {
    +        show(UtilsBridge.getString(resId), Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS);
         }
     
         /**
    -     * Show custom toast for a long period of time.
    +     * Show the toast for a long period of time.
          *
    -     * @param view The view of toast.
    +     * @param format The format.
    +     * @param args   The args.
          */
    -    public static View showCustomLong(final View view) {
    -        show(view, Toast.LENGTH_LONG);
    -        return view;
    +    public static void showLong(final String format, final Object... args) {
    +        show(UtilsBridge.format(format, args), Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS);
         }
     
         /**
    @@ -225,93 +427,79 @@ public static View showCustomLong(final View view) {
         public static void cancel() {
             if (iToast != null) {
                 iToast.cancel();
    +            iToast = null;
             }
         }
     
    -    private static void show(final int resId, final int duration) {
    -        show(resId, duration, (Object) null);
    -    }
    -
    -    private static void show(final int resId, final int duration, final Object... args) {
    -        try {
    -            CharSequence text = Utils.getApp().getResources().getText(resId);
    -            if (args != null && args.length > 0) {
    -                text = String.format(text.toString(), args);
    -            }
    -            show(text, duration);
    -        } catch (Exception ignore) {
    -            show(String.valueOf(resId), duration);
    -        }
    +    private static void show(final CharSequence text, final int duration, final ToastUtils utils) {
    +        show(null, getToastFriendlyText(text), duration, utils);
         }
     
    -    private static void show(final String format, final int duration, final Object... args) {
    -        String text = format;
    -        if (text == null) {
    -            text = NULL;
    -        } else {
    -            if (args != null && args.length > 0) {
    -                text = String.format(format, args);
    -            }
    -        }
    -        show(text, duration);
    +    private static void show(final View view, final int duration, final ToastUtils utils) {
    +        show(view, null, duration, utils);
         }
     
    -    private static void show(final CharSequence text, final int duration) {
    -        show(null, text, duration);
    -    }
    -
    -    private static void show(final View view, final int duration) {
    -        show(view, null, duration);
    -    }
    -
    -    private static void show(@Nullable final View view, final CharSequence text, final int duration) {
    +    private static void show(@Nullable final View view, final CharSequence text, final int duration, final ToastUtils utils) {
             UtilsBridge.runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
                     cancel();
    -                iToast = newToast();
    +                iToast = newToast(utils);
                     if (view != null) {
    -                    iToast.setView(view);
    +                    iToast.setToastView(view);
                     } else {
    -                    iToast.setMsgView(text);
    +                    iToast.setToastView(text);
                     }
    -                iToast.setDuration(duration);
    -                if (sGravity != -1 || sXOffset != -1 || sYOffset != -1) {
    -                    iToast.setGravity(sGravity, sXOffset, sYOffset);
    -                }
    -                iToast.show();
    +                iToast.show(duration);
                 }
             });
         }
     
    +    private static CharSequence getToastFriendlyText(CharSequence src) {
    +        CharSequence text = src;
    +        if (text == null) {
    +            text = NULL;
    +        } else if (text.length() == 0) {
    +            text = NOTHING;
    +        }
    +        return text;
    +    }
     
    -    private static IToast newToast() {
    -        if (NotificationManagerCompat.from(Utils.getApp()).areNotificationsEnabled()) {
    -            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    +    private static IToast newToast(ToastUtils toastUtils) {
    +        if (!toastUtils.isNotUseSystemToast) {
    +            if (NotificationManagerCompat.from(Utils.getApp()).areNotificationsEnabled()) {
    +                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
    +                    return new SystemToast(toastUtils);
    +                }
                     if (!UtilsBridge.isGrantedDrawOverlays()) {
    -                    return new SystemToast(new Toast(Utils.getApp()));
    +                    return new SystemToast(toastUtils);
                     }
                 }
             }
    -        return new ToastWithoutNotification(new Toast(Utils.getApp()));
    -    }
     
    -    private static View getView(@LayoutRes final int layoutId) {
    -        LayoutInflater inflate =
    -                (LayoutInflater) Utils.getApp().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    -        return inflate.inflate(layoutId, null);
    +        // no notification
    +        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
    +            return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_TOAST);
    +        } else if (UtilsBridge.isGrantedDrawOverlays()) {
    +            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    +                new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
    +            } else {
    +                new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_PHONE);
    +            }
    +        }
    +        return new ActivityToast(toastUtils);
         }
     
    -    static class SystemToast extends AbsToast {
    +    static final class SystemToast extends AbsToast {
     
    -        SystemToast(Toast toast) {
    -            super(toast);
    +        SystemToast(ToastUtils toastUtils) {
    +            super(toastUtils);
                 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.N_MR1) {
                     try {
                         //noinspection JavaReflectionMemberAccess
                         Field mTNField = Toast.class.getDeclaredField("mTN");
                         mTNField.setAccessible(true);
    -                    Object mTN = mTNField.get(toast);
    +                    Object mTN = mTNField.get(mToast);
                         Field mTNmHandlerField = mTNField.getType().getDeclaredField("mHandler");
                         mTNmHandlerField.setAccessible(true);
                         Handler tnHandler = (Handler) mTNmHandlerField.get(mTN);
    @@ -321,16 +509,12 @@ static class SystemToast extends AbsToast {
             }
     
             @Override
    -        public void show() {
    +        public void show(int duration) {
    +            if (mToast == null) return;
    +            mToast.setDuration(duration);
                 mToast.show();
             }
     
    -        @Override
    -        public void cancel() {
    -            mToast.cancel();
    -            super.cancel();
    -        }
    -
             static class SafeHandler extends Handler {
                 private Handler impl;
     
    @@ -339,82 +523,38 @@ static class SafeHandler extends Handler {
                 }
     
                 @Override
    -            public void handleMessage(Message msg) {
    +            public void handleMessage(@NonNull Message msg) {
                     impl.handleMessage(msg);
                 }
     
                 @Override
    -            public void dispatchMessage(Message msg) {
    +            public void dispatchMessage(@NonNull Message msg) {
                     try {
                         impl.dispatchMessage(msg);
                     } catch (Exception e) {
    -                    Log.e("ToastUtils", e.toString());
    +                    e.printStackTrace();
                     }
                 }
             }
         }
     
    -    static class ToastWithoutNotification extends AbsToast {
    +    static final class WindowManagerToast extends AbsToast {
     
             private WindowManager mWM;
     
    -        private WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
    +        private WindowManager.LayoutParams mParams;
     
    -        ToastWithoutNotification(Toast toast) {
    -            super(toast);
    +        private Utils.ActivityLifecycleCallbacks mActivityLifecycleCallbacks;
    +
    +        WindowManagerToast(ToastUtils toastUtils, int type) {
    +            super(toastUtils);
    +            mParams = new WindowManager.LayoutParams();
    +            mParams.type = type;
             }
     
             @Override
    -        public void show() {
    +        public void show(final int duration) {
                 if (mToast == null) return;
    -            boolean isActivityContext = false;
    -            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
    -                mWM = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE);
    -                mParams.type = WindowManager.LayoutParams.TYPE_TOAST;
    -            } else if (UtilsBridge.isGrantedDrawOverlays()) {
    -                mWM = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE);
    -                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    -                    mParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
    -                } else {
    -                    mParams.type = WindowManager.LayoutParams.TYPE_PHONE;
    -                }
    -            } else {
    -                Context topActivityOrApp = UtilsBridge.getTopActivityOrApp();
    -                if (!(topActivityOrApp instanceof Activity)) {
    -                    Log.w("ToastUtils", "Couldn't get top Activity.");
    -                    // try to use system toast
    -                    new SystemToast(mToast).show();
    -                    return;
    -                }
    -                Activity topActivity = (Activity) topActivityOrApp;
    -                if (topActivity.isFinishing() || topActivity.isDestroyed()) {
    -                    Log.w("ToastUtils", topActivity + " is useless");
    -                    // try to use system toast
    -                    new SystemToast(mToast).show();
    -                    return;
    -                }
    -                isActivityContext = true;
    -                mWM = topActivity.getWindowManager();
    -                mParams.type = WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
    -                UtilsBridge.addActivityLifecycleCallbacks(topActivity, getActivityLifecycleCallbacks());
    -            }
    -
    -            setToastParams();
    -
    -            final long duration = mToast.getDuration() == Toast.LENGTH_SHORT ? 2000 : 3500;
    -            if (isActivityContext) {
    -                UtilsBridge.runOnUiThreadDelayed(new Runnable() {
    -                    @Override
    -                    public void run() {
    -                        setToast(duration);
    -                    }
    -                }, 300);
    -            } else {
    -                setToast(duration);
    -            }
    -        }
    -
    -        private void setToastParams() {
                 mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
                 mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
                 mParams.format = PixelFormat.TRANSLUCENT;
    @@ -437,9 +577,8 @@ private void setToastParams() {
                 mParams.y = mToast.getYOffset();
                 mParams.horizontalMargin = mToast.getHorizontalMargin();
                 mParams.verticalMargin = mToast.getVerticalMargin();
    -        }
     
    -        private void setToast(long duration) {
    +            mWM = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE);
                 try {
                     if (mWM != null) {
                         mWM.addView(mToastView, mParams);
    @@ -451,18 +590,7 @@ private void setToast(long duration) {
                     public void run() {
                         cancel();
                     }
    -            }, duration);
    -        }
    -
    -        private Utils.ActivityLifecycleCallbacks getActivityLifecycleCallbacks() {
    -            return new Utils.ActivityLifecycleCallbacks() {
    -                @Override
    -                public void onActivityDestroyed(@NonNull Activity activity) {
    -                    if (iToast == null) return;
    -                    activity.getWindow().getDecorView().setVisibility(View.GONE);
    -                    iToast.cancel();
    -                }
    -            };
    +            }, duration == Toast.LENGTH_SHORT ? 2000 : 3500);
             }
     
             @Override
    @@ -470,95 +598,205 @@ public void cancel() {
                 try {
                     if (mWM != null) {
                         mWM.removeViewImmediate(mToastView);
    +                    mWM = null;
                     }
                 } catch (Exception ignored) {/**/}
    -            mWM = null;
                 super.cancel();
             }
         }
     
    -    static abstract class AbsToast implements IToast {
    +    static final class ActivityToast extends AbsToast {
     
    -        protected Toast mToast;
    -        protected View  mToastView;
    +        private static int sShowingIndex = 0;
     
    -        AbsToast(Toast toast) {
    -            mToast = toast;
    -        }
    +        private Utils.ActivityLifecycleCallbacks mActivityLifecycleCallbacks;
     
    -        @Override
    -        public void setView(View view) {
    -            mToastView = view;
    -            mToast.setView(mToastView);
    +        ActivityToast(ToastUtils toastUtils) {
    +            super(toastUtils);
             }
     
             @Override
    -        public void setMsgView(CharSequence text) {
    -            mToastView = mToast.getView();
    -            if (mToastView == null || mToastView.findViewById(android.R.id.message) == null) {
    -                mToastView = ToastUtils.getView(R.layout.toast_layout);
    -                mToast.setView(mToastView);
    +        public void show(int duration) {
    +            if (mToast == null) return;
    +            if (!UtilsBridge.isAppForeground()) {
    +                // try to use system toast
    +                showSystemToast(duration);
    +                return;
                 }
    +            boolean hasAliveActivity = false;
    +            for (final Activity activity : UtilsBridge.getActivityList()) {
    +                if (!UtilsBridge.isActivityAlive(activity)) {
    +                    continue;
    +                }
    +                hasAliveActivity = true;
    +                showWithActivity(activity, sShowingIndex, true);
    +            }
    +            if (hasAliveActivity) {
    +                registerLifecycleCallback();
    +                UtilsBridge.runOnUiThreadDelayed(new Runnable() {
    +                    @Override
    +                    public void run() {
    +                        cancel();
    +                    }
    +                }, duration == Toast.LENGTH_SHORT ? 2000 : 3500);
     
    -            TextView tvMessage = mToastView.findViewById(android.R.id.message);
    -            tvMessage.setText(text);
    -            if (sMsgColor != COLOR_DEFAULT) {
    -                tvMessage.setTextColor(sMsgColor);
    +                ++sShowingIndex;
    +            } else {
    +                // try to use system toast
    +                showSystemToast(duration);
                 }
    -            if (sMsgTextSize != -1) {
    -                tvMessage.setTextSize(sMsgTextSize);
    +        }
    +
    +        @Override
    +        public void cancel() {
    +            if (isShowing()) {
    +                unregisterLifecycleCallback();
    +                for (Activity activity : UtilsBridge.getActivityList()) {
    +                    if (!UtilsBridge.isActivityAlive(activity)) {
    +                        continue;
    +                    }
    +                    final Window window = activity.getWindow();
    +                    if (window != null) {
    +                        ViewGroup decorView = (ViewGroup) window.getDecorView();
    +                        View toastView = decorView.findViewWithTag(TAG_TOAST + (sShowingIndex - 1));
    +                        if (toastView != null) {
    +                            try {
    +                                decorView.removeView(toastView);
    +                            } catch (Exception ignored) {/**/}
    +                        }
    +                    }
    +                }
                 }
    -            setBg(tvMessage);
    -        }
    -
    -        private void setBg(final TextView tvMsg) {
    -            if (sBgResource != -1) {
    -                mToastView.setBackgroundResource(sBgResource);
    -                tvMsg.setBackgroundColor(Color.TRANSPARENT);
    -            } else if (sBgColor != COLOR_DEFAULT) {
    -                Drawable tvBg = mToastView.getBackground();
    -                Drawable msgBg = tvMsg.getBackground();
    -                if (tvBg != null && msgBg != null) {
    -                    tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN));
    -                    tvMsg.setBackgroundColor(Color.TRANSPARENT);
    -                } else if (tvBg != null) {
    -                    tvBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN));
    -                } else if (msgBg != null) {
    -                    msgBg.setColorFilter(new PorterDuffColorFilter(sBgColor, PorterDuff.Mode.SRC_IN));
    -                } else {
    -                    mToastView.setBackgroundColor(sBgColor);
    +            super.cancel();
    +        }
    +
    +        private void showSystemToast(int duration) {
    +            SystemToast systemToast = new SystemToast(mToastUtils);
    +            systemToast.mToast = mToast;
    +            systemToast.show(duration);
    +        }
    +
    +        private void showWithActivity(final Activity activity, final int index, boolean useAnim) {
    +            final Window window = activity.getWindow();
    +            if (window != null) {
    +                final ViewGroup decorView = (ViewGroup) window.getDecorView();
    +                FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
    +                        ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT
    +                );
    +                lp.gravity = mToast.getGravity();
    +                lp.bottomMargin = mToast.getYOffset() + UtilsBridge.getNavBarHeight();
    +                lp.leftMargin = mToast.getXOffset();
    +                View toastViewSnapshot = getToastViewSnapshot(index);
    +                if (useAnim) {
    +                    toastViewSnapshot.setAlpha(0);
    +                    toastViewSnapshot.animate().alpha(1).setDuration(200).start();
                     }
    +                decorView.addView(toastViewSnapshot, lp);
                 }
             }
     
    -        @Override
    -        public View getView() {
    -            return mToastView;
    +        private View getToastViewSnapshot(final int index) {
    +            Bitmap bitmap = UtilsBridge.view2Bitmap(mToastView);
    +            ImageView toastIv = new ImageView(Utils.getApp());
    +            toastIv.setTag(TAG_TOAST + index);
    +            toastIv.setImageBitmap(bitmap);
    +            return toastIv;
             }
     
    -        @Override
    -        public void setDuration(int duration) {
    -            mToast.setDuration(duration);
    +        private void registerLifecycleCallback() {
    +            final int index = sShowingIndex;
    +            mActivityLifecycleCallbacks = new Utils.ActivityLifecycleCallbacks() {
    +                @Override
    +                public void onActivityCreated(@NonNull Activity activity) {
    +                    if (isShowing()) {
    +                        showWithActivity(activity, index, false);
    +                    }
    +                }
    +            };
    +            UtilsBridge.addActivityLifecycleCallbacks(mActivityLifecycleCallbacks);
             }
     
    -        @Override
    -        public void setGravity(int gravity, int xOffset, int yOffset) {
    -            mToast.setGravity(gravity, xOffset, yOffset);
    +        private void unregisterLifecycleCallback() {
    +            UtilsBridge.removeActivityLifecycleCallbacks(mActivityLifecycleCallbacks);
    +            mActivityLifecycleCallbacks = null;
    +        }
    +
    +        private boolean isShowing() {
    +            return mActivityLifecycleCallbacks != null;
    +        }
    +    }
    +
    +    static abstract class AbsToast implements IToast {
    +
    +        protected Toast      mToast;
    +        protected ToastUtils mToastUtils;
    +        protected View       mToastView;
    +
    +        AbsToast(ToastUtils toastUtils) {
    +            mToast = new Toast(Utils.getApp());
    +            mToastUtils = toastUtils;
    +
    +            if (mToastUtils.mGravity != -1 || mToastUtils.mXOffset != -1 || mToastUtils.mYOffset != -1) {
    +                mToast.setGravity(mToastUtils.mGravity, mToastUtils.mXOffset, mToastUtils.mYOffset);
    +            }
             }
     
             @Override
    -        public void setText(int resId) {
    -            mToast.setText(resId);
    +        public void setToastView(View view) {
    +            mToastView = view;
    +            mToast.setView(mToastView);
             }
     
             @Override
    -        public void setText(CharSequence s) {
    -            mToast.setText(s);
    +        public void setToastView(CharSequence text) {
    +            View utilsToastView = mToastUtils.tryApplyUtilsToastView(text);
    +            if (utilsToastView != null) {
    +                setToastView(utilsToastView);
    +                return;
    +            }
    +
    +            mToastView = mToast.getView();
    +            if (mToastView == null || mToastView.findViewById(android.R.id.message) == null) {
    +                setToastView(UtilsBridge.layoutId2View(R.layout.utils_toast_view));
    +            }
    +
    +            TextView messageTv = mToastView.findViewById(android.R.id.message);
    +            messageTv.setText(text);
    +            if (mToastUtils.mTextColor != COLOR_DEFAULT) {
    +                messageTv.setTextColor(mToastUtils.mTextColor);
    +            }
    +            if (mToastUtils.mTextSize != -1) {
    +                messageTv.setTextSize(mToastUtils.mTextSize);
    +            }
    +            setBg(messageTv);
    +        }
    +
    +        protected void setBg(final TextView msgTv) {
    +            if (mToastUtils.mBgResource != -1) {
    +                mToastView.setBackgroundResource(mToastUtils.mBgResource);
    +                msgTv.setBackgroundColor(Color.TRANSPARENT);
    +            } else if (mToastUtils.mBgColor != COLOR_DEFAULT) {
    +                Drawable toastBg = mToastView.getBackground();
    +                Drawable msgBg = msgTv.getBackground();
    +                if (toastBg != null && msgBg != null) {
    +                    toastBg.mutate().setColorFilter(new PorterDuffColorFilter(mToastUtils.mBgColor, PorterDuff.Mode.SRC_IN));
    +                    msgTv.setBackgroundColor(Color.TRANSPARENT);
    +                } else if (toastBg != null) {
    +                    toastBg.mutate().setColorFilter(new PorterDuffColorFilter(mToastUtils.mBgColor, PorterDuff.Mode.SRC_IN));
    +                } else if (msgBg != null) {
    +                    msgBg.mutate().setColorFilter(new PorterDuffColorFilter(mToastUtils.mBgColor, PorterDuff.Mode.SRC_IN));
    +                } else {
    +                    mToastView.setBackgroundColor(mToastUtils.mBgColor);
    +                }
    +            }
             }
     
             @Override
             @CallSuper
             public void cancel() {
    +            if (mToast != null) {
    +                mToast.cancel();
    +            }
                 mToast = null;
                 mToastView = null;
             }
    @@ -566,22 +804,35 @@ public void cancel() {
     
         interface IToast {
     
    -        void show();
    +        void setToastView(View view);
     
    -        void cancel();
    +        void setToastView(CharSequence text);
    +
    +        void show(int duration);
     
    -        void setView(View view);
    +        void cancel();
    +    }
     
    -        void setMsgView(CharSequence text);
    +    public static final class UtilsMaxWidthRelativeLayout extends RelativeLayout {
     
    -        View getView();
    +        private static final int SPACING = UtilsBridge.dp2px(80);
     
    -        void setDuration(int duration);
    +        public UtilsMaxWidthRelativeLayout(Context context) {
    +            super(context);
    +        }
     
    -        void setGravity(int gravity, int xOffset, int yOffset);
    +        public UtilsMaxWidthRelativeLayout(Context context, AttributeSet attrs) {
    +            super(context, attrs);
    +        }
     
    -        void setText(@StringRes int resId);
    +        public UtilsMaxWidthRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    +            super(context, attrs, defStyleAttr);
    +        }
     
    -        void setText(CharSequence s);
    +        @Override
    +        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    +            int widthMaxSpec = MeasureSpec.makeMeasureSpec(UtilsBridge.getAppScreenWidth() - SPACING, MeasureSpec.AT_MOST);
    +            super.onMeasure(widthMaxSpec, heightMeasureSpec);
    +        }
         }
     }
    \ No newline at end of file
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java
    index 0123ab96c1..5fa5ae3043 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java
    @@ -13,11 +13,11 @@
     
     import java.lang.reflect.Field;
     import java.lang.reflect.InvocationTargetException;
    -import java.util.ArrayList;
     import java.util.LinkedList;
     import java.util.List;
     import java.util.Map;
     import java.util.concurrent.ConcurrentHashMap;
    +import java.util.concurrent.CopyOnWriteArrayList;
     
     /**
      * 
    @@ -33,9 +33,11 @@ final class UtilsActivityLifecycleImpl implements Application.ActivityLifecycleC
     
         private final LinkedList mActivityList = new LinkedList<>();
     
    -    private final List                mStatusListeners               = new ArrayList<>();
    +    private final List                mStatusListeners               = new CopyOnWriteArrayList<>();
         private final Map> mActivityLifecycleCallbacksMap = new ConcurrentHashMap<>();
     
    +    private static final Activity STUB = new Activity();
    +
         private int     mForegroundCount = 0;
         private int     mConfigCount     = 0;
         private boolean mIsBackground    = false;
    @@ -62,11 +64,11 @@ Activity getTopActivity() {
     
         List getActivityList() {
             if (!mActivityList.isEmpty()) {
    -            return mActivityList;
    +            return new LinkedList<>(mActivityList);
             }
             List reflectActivities = getActivitiesByReflect();
             mActivityList.addAll(reflectActivities);
    -        return mActivityList;
    +        return new LinkedList<>(mActivityList);
         }
     
         void addOnAppStatusChangedListener(final Utils.OnAppStatusChangedListener listener) {
    @@ -77,6 +79,10 @@ void removeOnAppStatusChangedListener(final Utils.OnAppStatusChangedListener lis
             mStatusListeners.remove(listener);
         }
     
    +    void addActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks listener) {
    +        addActivityLifecycleCallbacks(STUB, listener);
    +    }
    +
         void addActivityLifecycleCallbacks(final Activity activity,
                                            final Utils.ActivityLifecycleCallbacks listener) {
             if (activity == null || listener == null) return;
    @@ -88,37 +94,20 @@ public void run() {
             });
         }
     
    -    Application getApplicationByReflect() {
    -        try {
    -            Class activityThreadClass = Class.forName("android.app.ActivityThread");
    -            Object thread = getActivityThread();
    -            Object app = activityThreadClass.getMethod("getApplication").invoke(thread);
    -            if (app == null) {
    -                return null;
    -            }
    -            return (Application) app;
    -        } catch (InvocationTargetException e) {
    -            e.printStackTrace();
    -        } catch (NoSuchMethodException e) {
    -            e.printStackTrace();
    -        } catch (IllegalAccessException e) {
    -            e.printStackTrace();
    -        } catch (ClassNotFoundException e) {
    -            e.printStackTrace();
    -        }
    -        return null;
    -    }
    -
         private void addActivityLifecycleCallbacksInner(final Activity activity,
    -                                                    final Utils.ActivityLifecycleCallbacks lifecycleCallbacks) {
    -        List callbacks = mActivityLifecycleCallbacksMap.get(activity);
    -        if (callbacks == null) {
    -            callbacks = new ArrayList<>();
    -            mActivityLifecycleCallbacksMap.put(activity, callbacks);
    +                                                    final Utils.ActivityLifecycleCallbacks callbacks) {
    +        List callbacksList = mActivityLifecycleCallbacksMap.get(activity);
    +        if (callbacksList == null) {
    +            callbacksList = new CopyOnWriteArrayList<>();
    +            mActivityLifecycleCallbacksMap.put(activity, callbacksList);
             } else {
    -            if (callbacks.contains(lifecycleCallbacks)) return;
    +            if (callbacksList.contains(callbacks)) return;
             }
    -        callbacks.add(lifecycleCallbacks);
    +        callbacksList.add(callbacks);
    +    }
    +
    +    void removeActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks callbacks) {
    +        removeActivityLifecycleCallbacks(STUB, callbacks);
         }
     
         void removeActivityLifecycleCallbacks(final Activity activity) {
    @@ -143,36 +132,60 @@ public void run() {
         }
     
         private void removeActivityLifecycleCallbacksInner(final Activity activity,
    -                                                       final Utils.ActivityLifecycleCallbacks lifecycleCallbacks) {
    -        List callbacks = mActivityLifecycleCallbacksMap.get(activity);
    -        if (callbacks != null && !callbacks.isEmpty()) {
    -            callbacks.remove(lifecycleCallbacks);
    +                                                       final Utils.ActivityLifecycleCallbacks callbacks) {
    +        List callbacksList = mActivityLifecycleCallbacksMap.get(activity);
    +        if (callbacksList != null && !callbacksList.isEmpty()) {
    +            callbacksList.remove(callbacks);
             }
         }
     
         private void consumeActivityLifecycleCallbacks(Activity activity, Lifecycle.Event event) {
    -        List listeners = mActivityLifecycleCallbacksMap.get(activity);
    -        if (listeners != null) {
    -            for (Utils.ActivityLifecycleCallbacks listener : listeners) {
    -                listener.onLifecycleChanged(activity, event);
    -                if (event.equals(Lifecycle.Event.ON_CREATE)) {
    -                    listener.onActivityCreated(activity);
    -                } else if (event.equals(Lifecycle.Event.ON_START)) {
    -                    listener.onActivityStarted(activity);
    -                } else if (event.equals(Lifecycle.Event.ON_RESUME)) {
    -                    listener.onActivityResumed(activity);
    -                } else if (event.equals(Lifecycle.Event.ON_PAUSE)) {
    -                    listener.onActivityPaused(activity);
    -                } else if (event.equals(Lifecycle.Event.ON_STOP)) {
    -                    listener.onActivityStopped(activity);
    -                } else if (event.equals(Lifecycle.Event.ON_DESTROY)) {
    -                    listener.onActivityDestroyed(activity);
    -                }
    +        consumeLifecycle(activity, event, mActivityLifecycleCallbacksMap.get(activity));
    +        consumeLifecycle(activity, event, mActivityLifecycleCallbacksMap.get(STUB));
    +    }
    +
    +    private void consumeLifecycle(Activity activity, Lifecycle.Event event, List listeners) {
    +        if (listeners == null) return;
    +        for (Utils.ActivityLifecycleCallbacks listener : listeners) {
    +            listener.onLifecycleChanged(activity, event);
    +            if (event.equals(Lifecycle.Event.ON_CREATE)) {
    +                listener.onActivityCreated(activity);
    +            } else if (event.equals(Lifecycle.Event.ON_START)) {
    +                listener.onActivityStarted(activity);
    +            } else if (event.equals(Lifecycle.Event.ON_RESUME)) {
    +                listener.onActivityResumed(activity);
    +            } else if (event.equals(Lifecycle.Event.ON_PAUSE)) {
    +                listener.onActivityPaused(activity);
    +            } else if (event.equals(Lifecycle.Event.ON_STOP)) {
    +                listener.onActivityStopped(activity);
    +            } else if (event.equals(Lifecycle.Event.ON_DESTROY)) {
    +                listener.onActivityDestroyed(activity);
                 }
    -            if (event.equals(Lifecycle.Event.ON_DESTROY)) {
    -                mActivityLifecycleCallbacksMap.remove(activity);
    +        }
    +        if (event.equals(Lifecycle.Event.ON_DESTROY)) {
    +            mActivityLifecycleCallbacksMap.remove(activity);
    +        }
    +    }
    +
    +    Application getApplicationByReflect() {
    +        try {
    +            Class activityThreadClass = Class.forName("android.app.ActivityThread");
    +            Object thread = getActivityThread();
    +            Object app = activityThreadClass.getMethod("getApplication").invoke(thread);
    +            if (app == null) {
    +                return null;
                 }
    +            return (Application) app;
    +        } catch (InvocationTargetException e) {
    +            e.printStackTrace();
    +        } catch (NoSuchMethodException e) {
    +            e.printStackTrace();
    +        } catch (IllegalAccessException e) {
    +            e.printStackTrace();
    +        } catch (ClassNotFoundException e) {
    +            e.printStackTrace();
             }
    +        return null;
         }
     
         ///////////////////////////////////////////////////////////////////////////
    @@ -180,7 +193,7 @@ private void consumeActivityLifecycleCallbacks(Activity activity, Lifecycle.Even
         ///////////////////////////////////////////////////////////////////////////
         @Override
         public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) {
    -        UtilsBridge.applyLanguage(activity);
    +        LanguageUtils.applyLanguage(activity);
             setAnimatorsEnabled();
             setTopActivity(activity);
             consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_CREATE);
    @@ -249,23 +262,30 @@ public void onActivityDestroyed(@NonNull Activity activity) {
          * the keyboard from closing when curActivity onDestroy.
          */
         private void processHideSoftInputOnActivityDestroy(final Activity activity, boolean isSave) {
    -        if (isSave) {
    -            final WindowManager.LayoutParams attrs = activity.getWindow().getAttributes();
    -            final int softInputMode = attrs.softInputMode;
    -            activity.getWindow().getDecorView().setTag(-123, softInputMode);
    -            activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    -        } else {
    -            final Object tag = activity.getWindow().getDecorView().getTag(-123);
    -            if (!(tag instanceof Integer)) return;
    -            UtilsBridge.runOnUiThreadDelayed(new Runnable() {
    -                @Override
    -                public void run() {
    -                    Window window = activity.getWindow();
    -                    if (window != null) {
    -                        window.setSoftInputMode(((Integer) tag));
    +        try {
    +            if (isSave) {
    +                Window window = activity.getWindow();
    +                final WindowManager.LayoutParams attrs = window.getAttributes();
    +                final int softInputMode = attrs.softInputMode;
    +                window.getDecorView().setTag(-123, softInputMode);
    +                window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    +            } else {
    +                final Object tag = activity.getWindow().getDecorView().getTag(-123);
    +                if (!(tag instanceof Integer)) return;
    +                UtilsBridge.runOnUiThreadDelayed(new Runnable() {
    +                    @Override
    +                    public void run() {
    +                        try {
    +                            Window window = activity.getWindow();
    +                            if (window != null) {
    +                                window.setSoftInputMode(((Integer) tag));
    +                            }
    +                        } catch (Exception ignore) {
    +                        }
                         }
    -                }
    -            }, 100);
    +                }, 100);
    +            }
    +        } catch (Exception ignore) {
             }
         }
     
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
    index 97ec53579d..4c36704595 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java
    @@ -9,9 +9,12 @@
     import android.net.Uri;
     import android.os.Build;
     import android.os.Parcelable;
    +import android.support.annotation.LayoutRes;
     import android.support.annotation.NonNull;
     import android.support.annotation.RequiresApi;
     import android.support.annotation.RequiresPermission;
    +import android.support.annotation.StringRes;
    +import android.text.TextUtils;
     import android.view.View;
     
     import com.google.gson.Gson;
    @@ -24,7 +27,9 @@
     import java.io.InputStream;
     import java.io.Serializable;
     import java.lang.reflect.Type;
    +import java.util.LinkedHashMap;
     import java.util.List;
    +import java.util.Map;
     
     import static android.Manifest.permission.CALL_PHONE;
     
    @@ -65,6 +70,14 @@ static void removeOnAppStatusChangedListener(final Utils.OnAppStatusChangedListe
             UtilsActivityLifecycleImpl.INSTANCE.removeOnAppStatusChangedListener(listener);
         }
     
    +    static void addActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks callbacks) {
    +        UtilsActivityLifecycleImpl.INSTANCE.addActivityLifecycleCallbacks(callbacks);
    +    }
    +
    +    static void removeActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks callbacks) {
    +        UtilsActivityLifecycleImpl.INSTANCE.removeActivityLifecycleCallbacks(callbacks);
    +    }
    +
         static void addActivityLifecycleCallbacks(final Activity activity,
                                                   final Utils.ActivityLifecycleCallbacks callbacks) {
             UtilsActivityLifecycleImpl.INSTANCE.addActivityLifecycleCallbacks(activity, callbacks);
    @@ -94,10 +107,6 @@ static boolean isActivityAlive(final Activity activity) {
             return ActivityUtils.isActivityAlive(activity);
         }
     
    -    static String getLauncherActivity() {
    -        return ActivityUtils.getLauncherActivity();
    -    }
    -
         static String getLauncherActivity(final String pkg) {
             return ActivityUtils.getLauncherActivity(pkg);
         }
    @@ -126,6 +135,10 @@ static Context getTopActivityOrApp() {
             }
         }
     
    +    static boolean isAppForeground() {
    +        return AppUtils.isAppForeground();
    +    }
    +
         static boolean isAppRunning(@NonNull final String pkgName) {
             return AppUtils.isAppRunning(pkgName);
         }
    @@ -134,18 +147,14 @@ static boolean isAppInstalled(final String pkgName) {
             return AppUtils.isAppInstalled(pkgName);
         }
     
    -    static String getAppVersionName() {
    -        return AppUtils.getAppVersionName();
    -    }
    -
    -    static int getAppVersionCode() {
    -        return AppUtils.getAppVersionCode();
    -    }
    -
         static boolean isAppDebug() {
             return AppUtils.isAppDebug();
         }
     
    +    static void relaunchApp() {
    +        AppUtils.relaunchApp();
    +    }
    +
         ///////////////////////////////////////////////////////////////////////////
         // BarUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -418,13 +427,6 @@ static void fixSoftInputLeaks(final Activity activity) {
             KeyboardUtils.fixSoftInputLeaks(activity);
         }
     
    -    ///////////////////////////////////////////////////////////////////////////
    -    // LanguageUtils
    -    ///////////////////////////////////////////////////////////////////////////
    -    static void applyLanguage(final Activity activity) {
    -        LanguageUtils.applyLanguage(activity);
    -    }
    -
         ///////////////////////////////////////////////////////////////////////////
         // PermissionUtils
         ///////////////////////////////////////////////////////////////////////////
    @@ -460,12 +462,15 @@ static boolean isSamsung() {
         }
     
         ///////////////////////////////////////////////////////////////////////////
    -    // SDCardUtils
    +    // ScreenUtils
         ///////////////////////////////////////////////////////////////////////////
    -    static String getSDCardPathByEnvironment() {
    -        return SDCardUtils.getSDCardPathByEnvironment();
    +    static int getAppScreenWidth() {
    +        return ScreenUtils.getAppScreenWidth();
         }
     
    +    ///////////////////////////////////////////////////////////////////////////
    +    // SDCardUtils
    +    ///////////////////////////////////////////////////////////////////////////
         static boolean isSDCardEnableByEnvironment() {
             return SDCardUtils.isSDCardEnableByEnvironment();
         }
    @@ -521,6 +526,18 @@ static boolean equals(final CharSequence s1, final CharSequence s2) {
             return StringUtils.equals(s1, s2);
         }
     
    +    static String getString(@StringRes int id) {
    +        return StringUtils.getString(id);
    +    }
    +
    +    static String getString(@StringRes int id, Object... formatArgs) {
    +        return StringUtils.getString(id, formatArgs);
    +    }
    +
    +    static String format(String str, Object... args) {
    +        return StringUtils.format(str, args);
    +    }
    +
     
         ///////////////////////////////////////////////////////////////////////////
         // ThreadUtils
    @@ -579,4 +596,88 @@ static Uri file2Uri(final File file) {
         static File uri2File(final Uri uri) {
             return UriUtils.uri2File(uri);
         }
    +
    +
    +    ///////////////////////////////////////////////////////////////////////////
    +    // ViewUtils
    +    ///////////////////////////////////////////////////////////////////////////
    +    static View layoutId2View(@LayoutRes final int layoutId) {
    +        return ViewUtils.layoutId2View(layoutId);
    +    }
    +
    +
    +    ///////////////////////////////////////////////////////////////////////////
    +    // Common
    +    ///////////////////////////////////////////////////////////////////////////
    +    static final class FileHead {
    +
    +        private String                        mName;
    +        private LinkedHashMap mFirst = new LinkedHashMap<>();
    +        private LinkedHashMap mLast  = new LinkedHashMap<>();
    +
    +        FileHead(String name) {
    +            mName = name;
    +        }
    +
    +        void addFirst(String key, String value) {
    +            append2Host(mFirst, key, value);
    +        }
    +
    +        void append(Map extra) {
    +            append2Host(mLast, extra);
    +        }
    +
    +        void append(String key, String value) {
    +            append2Host(mLast, key, value);
    +        }
    +
    +        private void append2Host(Map host, Map extra) {
    +            if (extra == null || extra.isEmpty()) {
    +                return;
    +            }
    +            for (Map.Entry entry : extra.entrySet()) {
    +                append2Host(host, entry.getKey(), entry.getValue());
    +            }
    +        }
    +
    +        private void append2Host(Map host, String key, String value) {
    +            if (TextUtils.isEmpty(key) || TextUtils.isEmpty(value)) {
    +                return;
    +            }
    +            int delta = 19 - key.length(); // 19 is length of "Device Manufacturer"
    +            if (delta > 0) {
    +                key = key + "                   ".substring(0, delta);
    +            }
    +            host.put(key, value);
    +        }
    +
    +        public String getAppended() {
    +            StringBuilder sb = new StringBuilder();
    +            for (Map.Entry entry : mLast.entrySet()) {
    +                sb.append(entry.getKey()).append(": ").append(entry.getValue()).append("\n");
    +            }
    +            return sb.toString();
    +        }
    +
    +        @Override
    +        public String toString() {
    +            StringBuilder sb = new StringBuilder();
    +            String border = "************* " + mName + " Head ****************\n";
    +            sb.append(border);
    +            for (Map.Entry entry : mFirst.entrySet()) {
    +                sb.append(entry.getKey()).append(": ").append(entry.getValue()).append("\n");
    +            }
    +
    +            sb.append("Rom Info           : ").append(RomUtils.getRomInfo()).append("\n");
    +            sb.append("Device Manufacturer: ").append(Build.MANUFACTURER).append("\n");
    +            sb.append("Device Model       : ").append(Build.MODEL).append("\n");
    +            sb.append("Android Version    : ").append(Build.VERSION.RELEASE).append("\n");
    +            sb.append("Android SDK        : ").append(Build.VERSION.SDK_INT).append("\n");
    +            sb.append("App VersionName    : ").append(AppUtils.getAppVersionName()).append("\n");
    +            sb.append("App VersionCode    : ").append(AppUtils.getAppVersionCode()).append("\n");
    +
    +            sb.append(getAppended());
    +            return sb.append(border).append("\n").toString();
    +        }
    +    }
     }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
    index 1b87d3687f..1d6e1dc7e0 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsTransActivity.java
    @@ -131,7 +131,7 @@ protected void onDestroy() {
         }
     
         @Override
    -    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    +    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
             super.onRequestPermissionsResult(requestCode, permissions, grantResults);
             TransActivityDelegate callback = CALLBACK_MAP.get(this);
             if (callback == null) return;
    @@ -173,7 +173,7 @@ public void onStopped(@NonNull UtilsTransActivity activity) {/**/}
     
             public void onSaveInstanceState(@NonNull UtilsTransActivity activity, Bundle outState) {/**/}
     
    -        public void onRequestPermissionsResult(@NonNull UtilsTransActivity activity, int requestCode, String[] permissions, int[] grantResults) {/**/}
    +        public void onRequestPermissionsResult(@NonNull UtilsTransActivity activity, int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {/**/}
     
             public void onActivityResult(@NonNull UtilsTransActivity activity, int requestCode, int resultCode, Intent data) {/**/}
     
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
    index 44ef6dc2cf..a06e3503bf 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
    @@ -1,7 +1,10 @@
     package com.blankj.utilcode.util;
     
    +import android.content.Context;
     import android.os.Build;
    +import android.support.annotation.LayoutRes;
     import android.text.TextUtils;
    +import android.view.LayoutInflater;
     import android.view.View;
     import android.view.ViewGroup;
     
    @@ -106,4 +109,10 @@ public static void fixScrollViewTopping(View view) {
                 }
             }
         }
    +
    +    public static View layoutId2View(@LayoutRes final int layoutId) {
    +        LayoutInflater inflate =
    +                (LayoutInflater) Utils.getApp().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    +        return inflate.inflate(layoutId, null);
    +    }
     }
    \ No newline at end of file
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/VolumeUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/VolumeUtils.java
    new file mode 100644
    index 0000000000..ed3b62ae76
    --- /dev/null
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/VolumeUtils.java
    @@ -0,0 +1,120 @@
    +package com.blankj.utilcode.util;
    +
    +import android.content.Context;
    +import android.media.AudioManager;
    +import android.os.Build;
    +
    +/**
    + * 
    + *     author: blankj
    + *     blog  : http://blankj.com
    + *     time  : 2020/09/08
    + *     desc  : utils about volume
    + * 
    + */ +public class VolumeUtils { + + /** + * Return the volume. + * + * @param streamType The stream type. + *
      + *
    • {@link AudioManager#STREAM_VOICE_CALL}
    • + *
    • {@link AudioManager#STREAM_SYSTEM}
    • + *
    • {@link AudioManager#STREAM_RING}
    • + *
    • {@link AudioManager#STREAM_MUSIC}
    • + *
    • {@link AudioManager#STREAM_ALARM}
    • + *
    • {@link AudioManager#STREAM_NOTIFICATION}
    • + *
    • {@link AudioManager#STREAM_DTMF}
    • + *
    • {@link AudioManager#STREAM_ACCESSIBILITY}
    • + *
    + * @return the volume + */ + public static int getVolume(int streamType) { + AudioManager am = (AudioManager) Utils.getApp().getSystemService(Context.AUDIO_SERVICE); + //noinspection ConstantConditions + return am.getStreamVolume(streamType); + } + + /** + * Sets media volume.
    + * When setting the value of parameter 'volume' greater than the maximum value of the media volume will not either cause error or throw exception but maximize the media volume.
    + * Setting the value of volume lower than 0 will minimize the media volume. + * + * @param streamType The stream type. + *
      + *
    • {@link AudioManager#STREAM_VOICE_CALL}
    • + *
    • {@link AudioManager#STREAM_SYSTEM}
    • + *
    • {@link AudioManager#STREAM_RING}
    • + *
    • {@link AudioManager#STREAM_MUSIC}
    • + *
    • {@link AudioManager#STREAM_ALARM}
    • + *
    • {@link AudioManager#STREAM_NOTIFICATION}
    • + *
    • {@link AudioManager#STREAM_DTMF}
    • + *
    • {@link AudioManager#STREAM_ACCESSIBILITY}
    • + *
    + * @param volume The volume. + * @param flags The flags. + *
      + *
    • {@link AudioManager#FLAG_SHOW_UI}
    • + *
    • {@link AudioManager#FLAG_ALLOW_RINGER_MODES}
    • + *
    • {@link AudioManager#FLAG_PLAY_SOUND}
    • + *
    • {@link AudioManager#FLAG_REMOVE_SOUND_AND_VIBRATE}
    • + *
    • {@link AudioManager#FLAG_VIBRATE}
    • + *
    + */ + public static void setVolume(int streamType, int volume, int flags) { + AudioManager am = (AudioManager) Utils.getApp().getSystemService(Context.AUDIO_SERVICE); + try { + //noinspection ConstantConditions + am.setStreamVolume(streamType, volume, flags); + } catch (SecurityException ignore) { + } + } + + /** + * Return the maximum volume. + * + * @param streamType The stream type. + *
      + *
    • {@link AudioManager#STREAM_VOICE_CALL}
    • + *
    • {@link AudioManager#STREAM_SYSTEM}
    • + *
    • {@link AudioManager#STREAM_RING}
    • + *
    • {@link AudioManager#STREAM_MUSIC}
    • + *
    • {@link AudioManager#STREAM_ALARM}
    • + *
    • {@link AudioManager#STREAM_NOTIFICATION}
    • + *
    • {@link AudioManager#STREAM_DTMF}
    • + *
    • {@link AudioManager#STREAM_ACCESSIBILITY}
    • + *
    + * @return the maximum volume + */ + public static int getMaxVolume(int streamType) { + AudioManager am = (AudioManager) Utils.getApp().getSystemService(Context.AUDIO_SERVICE); + //noinspection ConstantConditions + return am.getStreamMaxVolume(streamType); + } + + /** + * Return the minimum volume. + * + * @param streamType The stream type. + *
      + *
    • {@link AudioManager#STREAM_VOICE_CALL}
    • + *
    • {@link AudioManager#STREAM_SYSTEM}
    • + *
    • {@link AudioManager#STREAM_RING}
    • + *
    • {@link AudioManager#STREAM_MUSIC}
    • + *
    • {@link AudioManager#STREAM_ALARM}
    • + *
    • {@link AudioManager#STREAM_NOTIFICATION}
    • + *
    • {@link AudioManager#STREAM_DTMF}
    • + *
    • {@link AudioManager#STREAM_ACCESSIBILITY}
    • + *
    + * @return the minimum volume + */ + public static int getMinVolume(int streamType) { + AudioManager am = (AudioManager) Utils.getApp().getSystemService(Context.AUDIO_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + //noinspection ConstantConditions + return am.getStreamMinVolume(streamType); + } + return 0; + } +} diff --git a/lib/utilcode/src/main/res/drawable/toast_frame.xml b/lib/utilcode/src/main/res/drawable/utils_toast_bg.xml similarity index 79% rename from lib/utilcode/src/main/res/drawable/toast_frame.xml rename to lib/utilcode/src/main/res/drawable/utils_toast_bg.xml index 24e3922412..5e6370b319 100644 --- a/lib/utilcode/src/main/res/drawable/toast_frame.xml +++ b/lib/utilcode/src/main/res/drawable/utils_toast_bg.xml @@ -1,7 +1,6 @@ - diff --git a/lib/utilcode/src/main/res/layout/toast_layout.xml b/lib/utilcode/src/main/res/layout/toast_layout.xml deleted file mode 100644 index d66836ea8f..0000000000 --- a/lib/utilcode/src/main/res/layout/toast_layout.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - \ No newline at end of file diff --git a/lib/utilcode/src/main/res/layout/utils_toast_view.xml b/lib/utilcode/src/main/res/layout/utils_toast_view.xml new file mode 100644 index 0000000000..59af74b6bb --- /dev/null +++ b/lib/utilcode/src/main/res/layout/utils_toast_view.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/utildebug/src/main/java/com/blankj/utildebug/DebugUtils.java b/lib/utildebug/src/main/java/com/blankj/utildebug/DebugUtils.java index 4a5d48fb8b..9855aa9b57 100644 --- a/lib/utildebug/src/main/java/com/blankj/utildebug/DebugUtils.java +++ b/lib/utildebug/src/main/java/com/blankj/utildebug/DebugUtils.java @@ -5,6 +5,7 @@ import android.os.Bundle; import android.support.annotation.DrawableRes; import android.view.ViewGroup; +import android.view.ViewParent; import com.blankj.utilcode.util.Utils; import com.blankj.utildebug.debug.IDebug; @@ -71,6 +72,10 @@ public void onActivityStarted(Activity activity) { @Override public void onActivityResumed(Activity activity) { + ViewParent parent = DebugIcon.getInstance().getParent(); + if (parent != null) { + ((ViewGroup) parent).removeView(DebugIcon.getInstance()); + } ((ViewGroup) activity.findViewById(android.R.id.content)).addView(DebugIcon.getInstance(), mParams); } diff --git a/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/SwipeRightMenu.java b/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/SwipeRightMenu.java index 39ff5d7ada..2ab3325121 100644 --- a/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/SwipeRightMenu.java +++ b/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/SwipeRightMenu.java @@ -167,7 +167,7 @@ public boolean dispatchTouchEvent(MotionEvent event) { if (isOpen()) { if (isTouchPointInView(mContentView, x, y)) { close(true); - final long now = SystemClock.uptimeMillis(); + final long now = SystemClock.elapsedRealtime(); final MotionEvent cancelEvent = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0); super.dispatchTouchEvent(cancelEvent); @@ -292,7 +292,7 @@ public void close(SwipeRightMenu exclude) { } private void cancelChildViewTouch() { - final long now = SystemClock.uptimeMillis(); + final long now = SystemClock.elapsedRealtime(); final MotionEvent cancelEvent = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0); final int childCount = getChildCount(); From c351507a082875429db451bef2a818aead420077 Mon Sep 17 00:00:00 2001 From: Blankj Date: Sun, 25 Oct 2020 02:53:58 +0800 Subject: [PATCH 076/122] see 10/25 log --- .../com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java | 2 -- lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java | 7 ++++--- lib/base/src/main/java/com/blankj/base/mvp/BaseView.java | 2 ++ .../java/com/blankj/utilcode/util/DebouncingUtils.java | 3 ++- .../src/main/java/com/blankj/utilcode/util/ViewUtils.java | 3 ++- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java index 05ae20c92d..7fff29f4a7 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java @@ -1,7 +1,5 @@ package com.blankj.utilcode.pkg.feature.mvp; -import android.arch.lifecycle.ViewModel; -import android.arch.lifecycle.ViewModelProvider; import android.content.Context; import android.content.Intent; import android.os.Bundle; diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java b/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java index 84c930fd74..2f2b81d6e0 100644 --- a/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java +++ b/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java @@ -1,10 +1,11 @@ package com.blankj.base.mvp; -import android.arch.lifecycle.LiveData; -import android.arch.lifecycle.MutableLiveData; -import android.support.annotation.CallSuper; import android.util.Log; +import androidx.annotation.CallSuper; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + /** *
      *     author: blankj
    diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java b/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
    index 94f36bcdaa..a68909d01f 100644
    --- a/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
    +++ b/lib/base/src/main/java/com/blankj/base/mvp/BaseView.java
    @@ -5,10 +5,12 @@
     import java.util.HashMap;
     import java.util.Map;
     
    +import androidx.annotation.CallSuper;
     import androidx.fragment.app.Fragment;
     import androidx.fragment.app.FragmentActivity;
     import androidx.lifecycle.Lifecycle;
     import androidx.lifecycle.LifecycleObserver;
    +import androidx.lifecycle.OnLifecycleEvent;
     
     /**
      * 
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java
    index c9f2c8ff79..889ac86090 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java
    @@ -1,7 +1,6 @@
     package com.blankj.utilcode.util;
     
     import android.os.SystemClock;
    -import android.support.annotation.NonNull;
     import android.text.TextUtils;
     import android.view.View;
     
    @@ -9,6 +8,8 @@
     import java.util.Map;
     import java.util.concurrent.ConcurrentHashMap;
     
    +import androidx.annotation.NonNull;
    +
     /**
      * 
      *     author: Blankj
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
    index a06e3503bf..f0ef043322 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ViewUtils.java
    @@ -2,7 +2,6 @@
     
     import android.content.Context;
     import android.os.Build;
    -import android.support.annotation.LayoutRes;
     import android.text.TextUtils;
     import android.view.LayoutInflater;
     import android.view.View;
    @@ -10,6 +9,8 @@
     
     import java.util.Locale;
     
    +import androidx.annotation.LayoutRes;
    +
     /**
      * 
      *     author: Blankj
    
    From d1ff4e3cd680473dc63b491a9795bd790a464949 Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Sun, 25 Oct 2020 03:52:23 +0800
    Subject: [PATCH 077/122] see 10/25 log
    
    ---
     lib/utilcode/build.gradle | 4 ++++
     1 file changed, 4 insertions(+)
    
    diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle
    index dd2df94746..283e55936b 100644
    --- a/lib/utilcode/build.gradle
    +++ b/lib/utilcode/build.gradle
    @@ -40,6 +40,10 @@ dependencies {
         testImplementation Config.depConfig.eventbus_lib.dep
     }
     
    +afterEvaluate {
    +    verifyReleaseResources.enabled(false)
    +}
    +
     apply from: "${rootDir.path}/gradle/publish.gradle"
     publish {
         name = "UtilCode"
    
    From c7f9b2df4ef9a3d1a240464600a7e691b2f9ae68 Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Mon, 26 Oct 2020 01:28:55 +0800
    Subject: [PATCH 078/122] see 10/26 log
    
    ---
     README-CN.md                                    |   4 +---
     README.md                                       |   4 +---
     art/wechat.png                                  | Bin 72567 -> 0 bytes
     .../plugin/readme/ReadmeCorePlugin.groovy       |   2 +-
     lib/utilcode/README-CN.md                       |   4 +---
     lib/utilcode/README.md                          |   1 -
     .../com/blankj/utilcode/util/ToastUtils.java    |   2 +-
     7 files changed, 5 insertions(+), 12 deletions(-)
     delete mode 100644 art/wechat.png
    
    diff --git a/README-CN.md b/README-CN.md
    index 32a5a0ac17..5c85dca1fe 100644
    --- a/README-CN.md
    +++ b/README-CN.md
    @@ -42,9 +42,7 @@
     
     ## 打个小广告
     
    -欢迎加入我的知识星球「**[基你太美](https://t.zsxq.com/FmeqfYF)**」,我会在星球中分享 [AucFrame](https://blankj.com/2019/07/22/auc-frame/) 框架、大厂面经、[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) 更详尽的说明...一切我所了解的知识,你可以通过支付进入我的星球「**[基你太美](https://t.zsxq.com/FmeqfYF)**」进行体验,加入后优先观看星球中精华的部分,如果觉得星球的内容对自身没有收益,你可以自行申请退款退出星球,也没必要加我好友;**如果你已确定要留在我的星球,可以通过扫描如下二维码(备注:基你太美+你的星球昵称)加我个人微信,方便我后续拉你进群(PS:进得越早价格越便宜)。**
    -
    -![我的二维码](https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/wechat.png)
    +欢迎加入我的小专栏「**[基你太美](https://xiaozhuanlan.com/Blankj)**」一起学习。
     
     
     [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
    diff --git a/README.md b/README.md
    index e0df3165eb..9ae668e26e 100644
    --- a/README.md
    +++ b/README.md
    @@ -42,9 +42,7 @@ If this project helps you a lot and you want to support the project's developmen
     
     ## 打个小广告
     
    -欢迎加入我的知识星球「**[基你太美](https://t.zsxq.com/FmeqfYF)**」,我会在星球中分享 [AucFrame](https://blankj.com/2019/07/22/auc-frame/) 框架、大厂面经、[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) 更详尽的说明...一切我所了解的知识,你可以通过支付进入我的星球「**[基你太美](https://t.zsxq.com/FmeqfYF)**」进行体验,加入后优先观看星球中精华的部分,如果觉得星球的内容对自身没有收益,你可以自行申请退款退出星球,也没必要加我好友;**如果你已确定要留在我的星球,可以通过扫描如下二维码(备注:基你太美)加我个人微信,发送给我你的星球 ID,方便我后续拉你进群(PS:进得越早价格越便宜)。**
    -
    -![我的二维码](https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/wechat.png)
    +欢迎加入我的小专栏「**[基你太美](https://xiaozhuanlan.com/Blankj)**」一起学习。
     
     
     [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
    diff --git a/art/wechat.png b/art/wechat.png
    deleted file mode 100644
    index e166a4783fdc3f25c63ec2417f8717dc74bdfcec..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 72567
    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

    +fm0 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 { } } else if (line.contains(": ") && !line.contains("[")) { sb.append(line.substring(0, line.indexOf(':')).trim()) - } else if (line.contains("打个小广告") || line.contains("知识星球") || line.contains("我的二维码")) { + } else if (line.contains("打个小广告") || line.contains("基你太美")) { return } else { sb.append(line) diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 45928eec20..865e218900 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -1253,9 +1253,7 @@ getComments : 获取压缩文件中的注释链表 ## 打个小广告 -欢迎加入我的知识星球「**[基你太美](https://t.zsxq.com/FmeqfYF)**」,我会在星球中分享 [AucFrame](https://blankj.com/2019/07/22/auc-frame/) 框架、大厂面经、[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) 更详尽的说明...一切我所了解的知识,你可以通过支付进入我的星球「**[基你太美](https://t.zsxq.com/FmeqfYF)**」进行体验,加入后优先观看星球中精华的部分,如果觉得星球的内容对自身没有收益,你可以自行申请退款退出星球,也没必要加我好友;**如果你已确定要留在我的星球,可以通过扫描如下二维码(备注:基你太美)加我个人微信,发送给我你的星球 ID,方便我后续拉你进群(PS:进得越早价格越便宜)。** - -![我的二维码](https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/wechat.png) +欢迎加入我的小专栏「**[基你太美](https://xiaozhuanlan.com/Blankj)**」一起学习。 diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 27bb7c4990..11415c7899 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -1255,7 +1255,6 @@ getComments - [activity.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java [activity.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/activity/ActivityActivity.kt diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index 0bdd221a29..908ad08691 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -477,7 +477,7 @@ private static IToast newToast(ToastUtils toastUtils) { } } - // no notification + // not use system or notification disable if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) { return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_TOAST); } else if (UtilsBridge.isGrantedDrawOverlays()) { From a509f949f908c789eee2ce02cd098380881877fd Mon Sep 17 00:00:00 2001 From: Blankj Date: Mon, 26 Oct 2020 14:50:52 +0800 Subject: [PATCH 079/122] see 10/26 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 4 +- .../utilcode/pkg/feature/app/AppActivity.kt | 33 +++++++++++--- lib/utilcode/README-CN.md | 5 ++- lib/utilcode/README.md | 5 ++- .../constant/PermissionConstants.java | 2 +- .../blankj/utilcode/util/ActivityUtils.java | 45 +++++++++++-------- .../com/blankj/utilcode/util/AppUtils.java | 13 +----- .../blankj/utilcode/util/DebouncingUtils.java | 2 +- .../com/blankj/utilcode/util/ToastUtils.java | 35 +++++++++------ .../util/UtilsActivityLifecycleImpl.java | 4 ++ .../com/blankj/utilcode/util/UtilsBridge.java | 17 ++----- 12 files changed, 97 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f418e68ab7..52098557b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/10/26` [add] Fix AppUtils#isAppForeground. Publish v1.30.1. * `20/10/24` [add] Publish v1.30.0. * `20/10/23` [fix] LanguageUtils crash on some device. * `20/10/21` [add] LogUtils.Config#setOnConsoleOutputListener, setOnFileOutputListener, addFileExtraHead. LogUtils.getCurrentLogFilePath. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index d292b40954..b193347c12 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_030_000 - static versionName = '1.30.0'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_001 + static versionName = '1.30.1'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt index 7e6f10785a..5499f78eb7 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt @@ -1,13 +1,11 @@ package com.blankj.utilcode.pkg.feature.app +import android.app.Activity import android.content.Context import android.content.Intent import com.blankj.common.activity.CommonActivity import com.blankj.common.helper.PermissionHelper -import com.blankj.common.item.CommonItem -import com.blankj.common.item.CommonItemClick -import com.blankj.common.item.CommonItemImage -import com.blankj.common.item.CommonItemTitle +import com.blankj.common.item.* import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.pkg.Config import com.blankj.utilcode.pkg.R @@ -21,7 +19,9 @@ import com.blankj.utilcode.util.* * desc : demo about AppUtils * ``` */ -class AppActivity : CommonActivity() { +class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener { + + var isRegisterAppStatusChangedListener: Boolean = false companion object { fun start(context: Context) { @@ -54,6 +54,14 @@ class AppActivity : CommonActivity() { override fun bindItems(): MutableList> { return CollectionUtils.newArrayList( + CommonItemSwitch("registerAppStatusChangedListener", { isRegisterAppStatusChangedListener }, { + isRegisterAppStatusChangedListener = it + if (it) { + AppUtils.registerAppStatusChangedListener(this) + } else { + AppUtils.unregisterAppStatusChangedListener(this) + } + }), CommonItemTitle("isAppRoot", AppUtils.isAppRoot().toString()), CommonItemTitle("isAppDebug", AppUtils.isAppDebug().toString()), CommonItemTitle("isAppSystem", AppUtils.isAppSystem().toString()), @@ -105,6 +113,21 @@ class AppActivity : CommonActivity() { } ) } + + override fun onForeground(activity: Activity) { + ToastUtils.showShort("onForeground\n${activity.javaClass.simpleName}") + } + + override fun onBackground(activity: Activity) { + ToastUtils.showShort("onBackground\n${activity.javaClass.simpleName}") + } + + override fun onDestroy() { + super.onDestroy() + if (isRegisterAppStatusChangedListener) { + AppUtils.unregisterAppStatusChangedListener(this) + } + } } class ReleaseInstallApkTask(private val mListener: OnReleasedListener) : ThreadUtils.SimpleTask() { diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 865e218900..1a1f671eb6 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.0' +implementation 'com.blankj:utilcode:1.30.1' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.0' +implementation 'com.blankj:utilcodex:1.30.1' ``` @@ -1181,6 +1181,7 @@ make.setRightIcon : 设置右侧图标 make.setBottomIcon : 设置底部图标 make.setNotUseSystemToast: 设置不使用系统吐司 make.show : 显示吐司 +getDefaultMaker : 获取默认制作实例(控制 showShort、showLong 样式) showShort : 显示短时吐司 showLong : 显示长时吐司 cancel : 取消吐司显示 diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 11415c7899..cbb2d1f797 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.0' +implementation 'com.blankj:utilcode:1.30.1' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.0' +implementation 'com.blankj:utilcodex:1.30.1' ``` @@ -1181,6 +1181,7 @@ make.setRightIcon make.setBottomIcon make.setNotUseSystemToast make.show +getDefaultMaker showShort showLong cancel diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java index 671b654bd9..e42111beaa 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/PermissionConstants.java @@ -41,7 +41,7 @@ public final class PermissionConstants { permission.READ_CONTACTS, permission.WRITE_CONTACTS, permission.GET_ACCOUNTS }; private static final String[] GROUP_LOCATION = { - permission.ACCESS_FINE_LOCATION, permission.ACCESS_COARSE_LOCATION + permission.ACCESS_FINE_LOCATION, permission.ACCESS_COARSE_LOCATION, permission.ACCESS_BACKGROUND_LOCATION }; private static final String[] GROUP_MICROPHONE = { permission.RECORD_AUDIO diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index c4c2e0a8a5..5a185d47a1 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -159,7 +159,7 @@ public static boolean isActivityExists(@NonNull final String pkg, * @param clz The activity class. */ public static void startActivity(@NonNull final Class clz) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, null, context.getPackageName(), clz.getName(), null); } @@ -171,7 +171,7 @@ public static void startActivity(@NonNull final Class clz) { */ public static void startActivity(@NonNull final Class clz, @Nullable final Bundle options) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, null, context.getPackageName(), clz.getName(), options); } @@ -187,7 +187,7 @@ public static void startActivity(@NonNull final Class clz, public static void startActivity(@NonNull final Class clz, @AnimRes final int enterAnim, @AnimRes final int exitAnim) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, null, context.getPackageName(), clz.getName(), getOptionsBundle(context, enterAnim, exitAnim)); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) { @@ -263,7 +263,7 @@ public static void startActivity(@NonNull final Activity activity, */ public static void startActivity(@NonNull final Bundle extras, @NonNull final Class clz) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, extras, context.getPackageName(), clz.getName(), null); } @@ -277,7 +277,7 @@ public static void startActivity(@NonNull final Bundle extras, public static void startActivity(@NonNull final Bundle extras, @NonNull final Class clz, @Nullable final Bundle options) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, extras, context.getPackageName(), clz.getName(), options); } @@ -295,7 +295,7 @@ public static void startActivity(@NonNull final Bundle extras, @NonNull final Class clz, @AnimRes final int enterAnim, @AnimRes final int exitAnim) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, extras, context.getPackageName(), clz.getName(), getOptionsBundle(context, enterAnim, exitAnim)); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) { @@ -379,7 +379,7 @@ public static void startActivity(@NonNull final Bundle extras, */ public static void startActivity(@NonNull final String pkg, @NonNull final String cls) { - startActivity(UtilsBridge.getTopActivityOrApp(), null, pkg, cls, null); + startActivity(getTopActivityOrApp(), null, pkg, cls, null); } /** @@ -392,7 +392,7 @@ public static void startActivity(@NonNull final String pkg, public static void startActivity(@NonNull final String pkg, @NonNull final String cls, @Nullable final Bundle options) { - startActivity(UtilsBridge.getTopActivityOrApp(), null, pkg, cls, options); + startActivity(getTopActivityOrApp(), null, pkg, cls, options); } /** @@ -409,7 +409,7 @@ public static void startActivity(@NonNull final String pkg, @NonNull final String cls, @AnimRes final int enterAnim, @AnimRes final int exitAnim) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, null, pkg, cls, getOptionsBundle(context, enterAnim, exitAnim)); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) { ((Activity) context).overridePendingTransition(enterAnim, exitAnim); @@ -492,7 +492,7 @@ public static void startActivity(@NonNull final Activity activity, public static void startActivity(@NonNull final Bundle extras, @NonNull final String pkg, @NonNull final String cls) { - startActivity(UtilsBridge.getTopActivityOrApp(), extras, pkg, cls, null); + startActivity(getTopActivityOrApp(), extras, pkg, cls, null); } /** @@ -507,7 +507,7 @@ public static void startActivity(@NonNull final Bundle extras, @NonNull final String pkg, @NonNull final String cls, @Nullable final Bundle options) { - startActivity(UtilsBridge.getTopActivityOrApp(), extras, pkg, cls, options); + startActivity(getTopActivityOrApp(), extras, pkg, cls, options); } /** @@ -526,7 +526,7 @@ public static void startActivity(@NonNull final Bundle extras, @NonNull final String cls, @AnimRes final int enterAnim, @AnimRes final int exitAnim) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivity(context, extras, pkg, cls, getOptionsBundle(context, enterAnim, exitAnim)); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) { ((Activity) context).overridePendingTransition(enterAnim, exitAnim); @@ -613,7 +613,7 @@ public static void startActivity(@NonNull final Bundle extras, * @return {@code true}: success
    {@code false}: fail */ public static boolean startActivity(@NonNull final Intent intent) { - return startActivity(intent, UtilsBridge.getTopActivityOrApp(), null); + return startActivity(intent, getTopActivityOrApp(), null); } /** @@ -625,7 +625,7 @@ public static boolean startActivity(@NonNull final Intent intent) { */ public static boolean startActivity(@NonNull final Intent intent, @Nullable final Bundle options) { - return startActivity(intent, UtilsBridge.getTopActivityOrApp(), options); + return startActivity(intent, getTopActivityOrApp(), options); } /** @@ -641,7 +641,7 @@ public static boolean startActivity(@NonNull final Intent intent, public static boolean startActivity(@NonNull final Intent intent, @AnimRes final int enterAnim, @AnimRes final int exitAnim) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); boolean isSuccess = startActivity(intent, context, getOptionsBundle(context, enterAnim, exitAnim)); if (isSuccess) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) { @@ -1333,7 +1333,7 @@ public static void startActivityForResult(@NonNull final Fragment fragment, * @param intents The descriptions of the activities to start. */ public static void startActivities(@NonNull final Intent[] intents) { - startActivities(intents, UtilsBridge.getTopActivityOrApp(), null); + startActivities(intents, getTopActivityOrApp(), null); } /** @@ -1344,7 +1344,7 @@ public static void startActivities(@NonNull final Intent[] intents) { */ public static void startActivities(@NonNull final Intent[] intents, @Nullable final Bundle options) { - startActivities(intents, UtilsBridge.getTopActivityOrApp(), options); + startActivities(intents, getTopActivityOrApp(), options); } /** @@ -1359,7 +1359,7 @@ public static void startActivities(@NonNull final Intent[] intents, public static void startActivities(@NonNull final Intent[] intents, @AnimRes final int enterAnim, @AnimRes final int exitAnim) { - Context context = UtilsBridge.getTopActivityOrApp(); + Context context = getTopActivityOrApp(); startActivities(intents, context, getOptionsBundle(context, enterAnim, exitAnim)); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) { ((Activity) context).overridePendingTransition(enterAnim, exitAnim); @@ -2117,4 +2117,13 @@ private static Bundle getOptionsBundle(final Activity activity, } return ActivityOptionsCompat.makeSceneTransitionAnimation(activity, pairs).toBundle(); } + + private static Context getTopActivityOrApp() { + if (UtilsBridge.isAppForeground()) { + Activity topActivity = getTopActivity(); + return topActivity == null ? Utils.getApp() : topActivity; + } else { + return Utils.getApp(); + } + } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index 9ba8830644..f68508f3b4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -179,18 +179,7 @@ public static boolean isAppSystem(final String packageName) { * @return {@code true}: yes
    {@code false}: no */ public static boolean isAppForeground() { - ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); - if (am == null) return false; - List info = am.getRunningAppProcesses(); - if (info == null || info.size() == 0) return false; - for (ActivityManager.RunningAppProcessInfo aInfo : info) { - if (aInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { - if (aInfo.processName.equals(Utils.getApp().getPackageName())) { - return true; - } - } - } - return false; + return UtilsBridge.isAppForeground(); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java index c9f2c8ff79..e6c3c54208 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DebouncingUtils.java @@ -17,7 +17,7 @@ * desc : utils about debouncing *

    */ -class DebouncingUtils { +public class DebouncingUtils { private static final int CACHE_SIZE = 64; private static final Map KEY_MILLIS_MAP = new ConcurrentHashMap<>(CACHE_SIZE); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index 908ad08691..69bce2594b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -57,11 +57,11 @@ public final class ToastUtils { String DARK = "dark"; } - private static final String TAG_TOAST = "TAG_TOAST"; - private static final int COLOR_DEFAULT = 0xFEFFFFFF; - private static final String NULL = "toast null"; - private static final String NOTHING = "toast nothing"; - private static final ToastUtils DEFAULT_TOAST_UTILS = make(); + private static final String TAG_TOAST = "TAG_TOAST"; + private static final int COLOR_DEFAULT = 0xFEFFFFFF; + private static final String NULL = "toast null"; + private static final String NOTHING = "toast nothing"; + private static final ToastUtils DEFAULT_MAKER = make(); private static IToast iToast; @@ -258,6 +258,15 @@ public final ToastUtils setNotUseSystemToast() { return this; } + /** + * Return the default {@link ToastUtils} instance. + * + * @return the default {@link ToastUtils} instance + */ + public static ToastUtils getDefaultMaker() { + return DEFAULT_MAKER; + } + /** * Show the toast for a short period of time. * @@ -351,7 +360,7 @@ private View tryApplyUtilsToastView(final CharSequence text) { * @param text The text. */ public static void showShort(final CharSequence text) { - show(text, Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS); + show(text, Toast.LENGTH_SHORT, DEFAULT_MAKER); } /** @@ -360,7 +369,7 @@ public static void showShort(final CharSequence text) { * @param resId The resource id for text. */ public static void showShort(@StringRes final int resId) { - show(UtilsBridge.getString(resId), Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS); + show(UtilsBridge.getString(resId), Toast.LENGTH_SHORT, DEFAULT_MAKER); } /** @@ -370,7 +379,7 @@ public static void showShort(@StringRes final int resId) { * @param args The args. */ public static void showShort(@StringRes final int resId, final Object... args) { - show(UtilsBridge.getString(resId, args), Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS); + show(UtilsBridge.getString(resId, args), Toast.LENGTH_SHORT, DEFAULT_MAKER); } /** @@ -380,7 +389,7 @@ public static void showShort(@StringRes final int resId, final Object... args) { * @param args The args. */ public static void showShort(final String format, final Object... args) { - show(UtilsBridge.format(format, args), Toast.LENGTH_SHORT, DEFAULT_TOAST_UTILS); + show(UtilsBridge.format(format, args), Toast.LENGTH_SHORT, DEFAULT_MAKER); } /** @@ -389,7 +398,7 @@ public static void showShort(final String format, final Object... args) { * @param text The text. */ public static void showLong(final CharSequence text) { - show(text, Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS); + show(text, Toast.LENGTH_LONG, DEFAULT_MAKER); } /** @@ -398,7 +407,7 @@ public static void showLong(final CharSequence text) { * @param resId The resource id for text. */ public static void showLong(@StringRes final int resId) { - show(UtilsBridge.getString(resId), Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS); + show(UtilsBridge.getString(resId), Toast.LENGTH_LONG, DEFAULT_MAKER); } /** @@ -408,7 +417,7 @@ public static void showLong(@StringRes final int resId) { * @param args The args. */ public static void showLong(@StringRes final int resId, final Object... args) { - show(UtilsBridge.getString(resId), Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS); + show(UtilsBridge.getString(resId), Toast.LENGTH_LONG, DEFAULT_MAKER); } /** @@ -418,7 +427,7 @@ public static void showLong(@StringRes final int resId, final Object... args) { * @param args The args. */ public static void showLong(final String format, final Object... args) { - show(UtilsBridge.format(format, args), Toast.LENGTH_LONG, DEFAULT_TOAST_UTILS); + show(UtilsBridge.format(format, args), Toast.LENGTH_LONG, DEFAULT_MAKER); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index 5fa5ae3043..b3ecdf55b8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -94,6 +94,10 @@ public void run() { }); } + boolean isAppForeground() { + return !mIsBackground; + } + private void addActivityLifecycleCallbacksInner(final Activity activity, final Utils.ActivityLifecycleCallbacks callbacks) { List callbacksList = mActivityLifecycleCallbacksMap.get(activity); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 4c36704595..86ba24bd89 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -100,6 +100,10 @@ static Application getApplicationByReflect() { return UtilsActivityLifecycleImpl.INSTANCE.getApplicationByReflect(); } + static boolean isAppForeground() { + return UtilsActivityLifecycleImpl.INSTANCE.isAppForeground(); + } + /////////////////////////////////////////////////////////////////////////// // ActivityUtils /////////////////////////////////////////////////////////////////////////// @@ -126,19 +130,6 @@ static void finishAllActivities() { /////////////////////////////////////////////////////////////////////////// // AppUtils /////////////////////////////////////////////////////////////////////////// - static Context getTopActivityOrApp() { - if (AppUtils.isAppForeground()) { - Activity topActivity = getTopActivity(); - return topActivity == null ? Utils.getApp() : topActivity; - } else { - return Utils.getApp(); - } - } - - static boolean isAppForeground() { - return AppUtils.isAppForeground(); - } - static boolean isAppRunning(@NonNull final String pkgName) { return AppUtils.isAppRunning(pkgName); } From 43e76ff71c824f43b1dd5fb8f8e922b36900329e Mon Sep 17 00:00:00 2001 From: Blankj Date: Tue, 27 Oct 2020 16:43:45 +0800 Subject: [PATCH 080/122] see 10/27 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 4 +- .../utilcode/pkg/feature/app/AppActivity.kt | 6 +- .../pkg/feature/device/DeviceActivity.kt | 3 + lib/utilcode/README-CN.md | 39 ++++----- lib/utilcode/README.md | 13 +-- .../com/blankj/utilcode/util/AppUtils.java | 85 ++++++++++++------- .../com/blankj/utilcode/util/DeviceUtils.java | 13 +++ .../blankj/utilcode/util/PermissionUtils.java | 2 +- .../blankj/utilcode/util/ObjectUtilsTest.java | 2 + 10 files changed, 106 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52098557b1..2850fa22fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/10/27` [add] Fix AppUtils#getAppSignatures. Add DeviceUtils#isDevelopmentSettingsEnabled. Publish v1.30.2. * `20/10/26` [add] Fix AppUtils#isAppForeground. Publish v1.30.1. * `20/10/24` [add] Publish v1.30.0. * `20/10/23` [fix] LanguageUtils crash on some device. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index b193347c12..c707febcbd 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_030_001 - static versionName = '1.30.1'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_002 + static versionName = '1.30.2'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt index 5499f78eb7..175fa1bc3b 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt @@ -75,9 +75,9 @@ class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener { CommonItemTitle("getAppPath", AppUtils.getAppPath()), CommonItemTitle("getAppVersionName", AppUtils.getAppVersionName()), CommonItemTitle("getAppVersionCode", AppUtils.getAppVersionCode().toString()), - CommonItemTitle("getAppSignatureSHA1", AppUtils.getAppSignatureSHA1()), - CommonItemTitle("getAppSignatureSHA256", AppUtils.getAppSignatureSHA256()), - CommonItemTitle("getAppSignatureMD5", AppUtils.getAppSignatureMD5()), + CommonItemTitle("getAppSignaturesSHA1", AppUtils.getAppSignaturesSHA1().toString()), + CommonItemTitle("getAppSignaturesSHA256", AppUtils.getAppSignaturesSHA256().toString()), + CommonItemTitle("getAppSignaturesMD5", AppUtils.getAppSignaturesMD5().toString()), CommonItemTitle("getAppUid", AppUtils.getAppUid().toString()), CommonItemTitle("getApkInfo", AppUtils.getApkInfo(AppUtils.getAppPath()).toString()), diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt index 1df423ded3..d70fe14e93 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/device/DeviceActivity.kt @@ -46,6 +46,9 @@ class DeviceActivity : CommonActivity() { add(CommonItemTitle("getABIs", Arrays.asList(*DeviceUtils.getABIs()).toString())) add(CommonItemTitle("isTablet", DeviceUtils.isTablet().toString())) add(CommonItemTitle("isEmulator", DeviceUtils.isEmulator().toString())) + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { + add(CommonItemTitle("isDevelopmentSettingsEnabled", DeviceUtils.isDevelopmentSettingsEnabled().toString())) + } add(CommonItemTitle("getUniqueDeviceId", DeviceUtils.getUniqueDeviceId("util"))) add(CommonItemTitle("isSameDevice", DeviceUtils.isSameDevice(DeviceUtils.getUniqueDeviceId()).toString())) } diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 1a1f671eb6..15f6af4970 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.1' +implementation 'com.blankj:utilcode:1.30.2' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.1' +implementation 'com.blankj:utilcodex:1.30.2' ``` @@ -71,10 +71,10 @@ getAppName : 获取 App 名称 getAppPath : 获取 App 路径 getAppVersionName : 获取 App 版本号 getAppVersionCode : 获取 App 版本码 -getAppSignature : 获取 App 签名 -getAppSignatureSHA1 : 获取应用签名的的 SHA1 值 -getAppSignatureSHA256 : 获取应用签名的的 SHA256 值 -getAppSignatureMD5 : 获取应用签名的的 MD5 值 +getAppSignatures : 获取 App 签名 +getAppSignaturesSHA1 : 获取应用签名的的 SHA1 值 +getAppSignaturesSHA256 : 获取应用签名的的 SHA256 值 +getAppSignaturesMD5 : 获取应用签名的的 MD5 值 getAppInfo : 获取 App 信息 getAppsInfo : 获取所有已安装 App 信息 getApkInfo : 获取 Apk 信息 @@ -401,19 +401,20 @@ isValid: 是否有效 * ### 设备相关 -> [DeviceUtils.java][device.java] -> [Demo][device.demo] ``` -isDeviceRooted : 判断设备是否 rooted -isAdbEnabled : 判断设备 ADB 是否可用 -getSDKVersionName: 获取设备系统版本号 -getSDKVersionCode: 获取设备系统版本码 -getAndroidID : 获取设备 AndroidID -getMacAddress : 获取设备 MAC 地址 -getManufacturer : 获取设备厂商 -getModel : 获取设备型号 -getABIs : 获取设备 ABIs -isTablet : 判断是否是平板 -isEmulator : 判断是否是模拟器 -getUniqueDeviceId: 获取唯一设备 ID -isSameDevice : 判断是否同一设备 +isDeviceRooted : 判断设备是否 rooted +isAdbEnabled : 判断设备 ADB 是否可用 +getSDKVersionName : 获取设备系统版本号 +getSDKVersionCode : 获取设备系统版本码 +getAndroidID : 获取设备 AndroidID +getMacAddress : 获取设备 MAC 地址 +getManufacturer : 获取设备厂商 +getModel : 获取设备型号 +getABIs : 获取设备 ABIs +isTablet : 判断是否是平板 +isEmulator : 判断是否是模拟器 +isDevelopmentSettingsEnabled: 开发者选项是否打开 +getUniqueDeviceId : 获取唯一设备 ID +isSameDevice : 判断是否同一设备 ``` * ### 闪光灯相关 -> [FlashlightUtils.java][flashlight.java] -> [Demo][flashlight.demo] diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index cbb2d1f797..f85e0b5fac 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.1' +implementation 'com.blankj:utilcode:1.30.2' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.1' +implementation 'com.blankj:utilcodex:1.30.2' ``` @@ -71,10 +71,10 @@ getAppName getAppPath getAppVersionName getAppVersionCode -getAppSignature -getAppSignatureSHA1 -getAppSignatureSHA256 -getAppSignatureMD5 +getAppSignatures +getAppSignaturesSHA1 +getAppSignaturesSHA256 +getAppSignaturesMD5 getAppInfo getAppsInfo getApkInfo @@ -412,6 +412,7 @@ getModel getABIs isTablet isEmulator +isDevelopmentSettingsEnabled getUniqueDeviceId isSameDevice ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index f68508f3b4..b4884a3442 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -8,6 +8,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; +import android.content.pm.SigningInfo; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; @@ -498,8 +499,8 @@ public static int getAppVersionCode(final String packageName) { * * @return the application's signature */ - public static Signature[] getAppSignature() { - return getAppSignature(Utils.getApp().getPackageName()); + public static Signature[] getAppSignatures() { + return getAppSignatures(Utils.getApp().getPackageName()); } /** @@ -508,17 +509,26 @@ public static Signature[] getAppSignature() { * @param packageName The name of the package. * @return the application's signature */ - public static Signature[] getAppSignature(final String packageName) { + public static Signature[] getAppSignatures(final String packageName) { if (UtilsBridge.isSpace(packageName)) return null; try { PackageManager pm = Utils.getApp().getPackageManager(); - PackageInfo pi; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES); + PackageInfo pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES); + if (pi == null) return null; + + SigningInfo signingInfo = pi.signingInfo; + if (signingInfo.hasMultipleSigners()) { + return signingInfo.getApkContentsSigners(); + } else { + return signingInfo.getSigningCertificateHistory(); + } } else { - pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); + PackageInfo pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); + if (pi == null) return null; + + return pi.signatures; } - return pi == null ? null : pi.signatures; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return null; @@ -531,16 +541,25 @@ public static Signature[] getAppSignature(final String packageName) { * @param file The file. * @return the application's signature */ - public static Signature[] getAppSignature(final File file) { + public static Signature[] getAppSignatures(final File file) { if (file == null) return null; PackageManager pm = Utils.getApp().getPackageManager(); - PackageInfo pi; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - pi = pm.getPackageArchiveInfo(file.getAbsolutePath(), PackageManager.GET_SIGNING_CERTIFICATES); + PackageInfo pi = pm.getPackageArchiveInfo(file.getAbsolutePath(), PackageManager.GET_SIGNING_CERTIFICATES); + if (pi == null) return null; + + SigningInfo signingInfo = pi.signingInfo; + if (signingInfo.hasMultipleSigners()) { + return signingInfo.getApkContentsSigners(); + } else { + return signingInfo.getSigningCertificateHistory(); + } } else { - pi = pm.getPackageArchiveInfo(file.getAbsolutePath(), PackageManager.GET_SIGNATURES); + PackageInfo pi = pm.getPackageArchiveInfo(file.getAbsolutePath(), PackageManager.GET_SIGNATURES); + if (pi == null) return null; + + return pi.signatures; } - return pi == null ? null : pi.signatures; } /** @@ -548,8 +567,8 @@ public static Signature[] getAppSignature(final File file) { * * @return the application's signature for SHA1 value */ - public static String getAppSignatureSHA1() { - return getAppSignatureSHA1(Utils.getApp().getPackageName()); + public static List getAppSignaturesSHA1() { + return getAppSignaturesSHA1(Utils.getApp().getPackageName()); } /** @@ -558,8 +577,8 @@ public static String getAppSignatureSHA1() { * @param packageName The name of the package. * @return the application's signature for SHA1 value */ - public static String getAppSignatureSHA1(final String packageName) { - return getAppSignatureHash(packageName, "SHA1"); + public static List getAppSignaturesSHA1(final String packageName) { + return getAppSignaturesHash(packageName, "SHA1"); } /** @@ -567,8 +586,8 @@ public static String getAppSignatureSHA1(final String packageName) { * * @return the application's signature for SHA256 value */ - public static String getAppSignatureSHA256() { - return getAppSignatureSHA256(Utils.getApp().getPackageName()); + public static List getAppSignaturesSHA256() { + return getAppSignaturesSHA256(Utils.getApp().getPackageName()); } /** @@ -577,8 +596,8 @@ public static String getAppSignatureSHA256() { * @param packageName The name of the package. * @return the application's signature for SHA256 value */ - public static String getAppSignatureSHA256(final String packageName) { - return getAppSignatureHash(packageName, "SHA256"); + public static List getAppSignaturesSHA256(final String packageName) { + return getAppSignaturesHash(packageName, "SHA256"); } /** @@ -586,8 +605,8 @@ public static String getAppSignatureSHA256(final String packageName) { * * @return the application's signature for MD5 value */ - public static String getAppSignatureMD5() { - return getAppSignatureMD5(Utils.getApp().getPackageName()); + public static List getAppSignaturesMD5() { + return getAppSignaturesMD5(Utils.getApp().getPackageName()); } /** @@ -596,11 +615,10 @@ public static String getAppSignatureMD5() { * @param packageName The name of the package. * @return the application's signature for MD5 value */ - public static String getAppSignatureMD5(final String packageName) { - return getAppSignatureHash(packageName, "MD5"); + public static List getAppSignaturesMD5(final String packageName) { + return getAppSignaturesHash(packageName, "MD5"); } - /** * Return the application's user-ID. * @@ -625,12 +643,17 @@ public static int getAppUid(String pkgName) { } } - private static String getAppSignatureHash(final String packageName, final String algorithm) { - if (UtilsBridge.isSpace(packageName)) return ""; - Signature[] signature = getAppSignature(packageName); - if (signature == null || signature.length <= 0) return ""; - return UtilsBridge.bytes2HexString(UtilsBridge.hashTemplate(signature[0].toByteArray(), algorithm)) - .replaceAll("(?<=[0-9A-F]{2})[0-9A-F]{2}", ":$0"); + private static List getAppSignaturesHash(final String packageName, final String algorithm) { + ArrayList result = new ArrayList<>(); + if (UtilsBridge.isSpace(packageName)) return result; + Signature[] signatures = getAppSignatures(packageName); + if (signatures == null || signatures.length <= 0) return result; + for (Signature signature : signatures) { + String hash = UtilsBridge.bytes2HexString(UtilsBridge.hashTemplate(signature.toByteArray(), algorithm)) + .replaceAll("(?<=[0-9A-F]{2})[0-9A-F]{2}", ":$0"); + result.add(hash); + } + return result; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java index 3fe852bf70..eb0a6709fb 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java @@ -387,6 +387,19 @@ public static boolean isEmulator() { return false; } + /** + * Whether user has enabled development settings. + * + * @return whether user has enabled development settings. + */ + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) + public static boolean isDevelopmentSettingsEnabled() { + return Settings.Global.getInt( + Utils.getApp().getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0 + ) > 0; + } + private static final String KEY_UDID = "KEY_UDID"; private volatile static String udid; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java index 2e3a985124..ff74f6c655 100755 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PermissionUtils.java @@ -210,7 +210,7 @@ public static void launchAppDetailsSettings() { * @return the single {@link PermissionUtils} instance */ public static PermissionUtils permissionGroup(@PermissionGroup final String... permissions) { - return new PermissionUtils(permissions); + return permission(permissions); } /** diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java index a0203f78fc..234973ef5b 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java @@ -2,6 +2,8 @@ import android.support.v4.util.LongSparseArray; import android.support.v4.util.SimpleArrayMap; +import android.text.Editable; +import android.text.SpannableStringBuilder; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; From 573843b42f6884c4d6ae2fc1763da1138467766c Mon Sep 17 00:00:00 2001 From: Blankj Date: Wed, 28 Oct 2020 15:26:41 +0800 Subject: [PATCH 081/122] see 10/28 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 4 ++-- lib/utilcode/README-CN.md | 4 ++-- lib/utilcode/README.md | 4 ++-- .../src/main/java/com/blankj/utilcode/util/BusUtils.java | 3 +-- .../test/java/com/blankj/utilcode/util/ObjectUtilsTest.java | 2 -- lib/utildebug/build.gradle | 4 ++++ 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2850fa22fe..2299a6702e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/10/28` [add] Fix BusUtils ConcurrentModificationException. Publish v1.30.3. * `20/10/27` [add] Fix AppUtils#getAppSignatures. Add DeviceUtils#isDevelopmentSettingsEnabled. Publish v1.30.2. * `20/10/26` [add] Fix AppUtils#isAppForeground. Publish v1.30.1. * `20/10/24` [add] Publish v1.30.0. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index c707febcbd..e41d37e9b8 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_030_002 - static versionName = '1.30.2'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_003 + static versionName = '1.30.3'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 15f6af4970..edfdcb3815 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.2' +implementation 'com.blankj:utilcode:1.30.3' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.2' +implementation 'com.blankj:utilcodex:1.30.3' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index f85e0b5fac..71ec0bcd3d 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.2' +implementation 'com.blankj:utilcode:1.30.3' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.2' +implementation 'com.blankj:utilcodex:1.30.3' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java index adb88cc697..0eb9ec86fa 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java @@ -8,7 +8,6 @@ import java.lang.annotation.Target; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -357,7 +356,7 @@ private void postStickyInner(final String tag, final Object arg) { synchronized (mClassName_Tag_Arg4StickyMap) { Map tagArgMap = mClassName_Tag_Arg4StickyMap.get(busInfo.className); if (tagArgMap == null) { - tagArgMap = new HashMap<>(); + tagArgMap = new ConcurrentHashMap<>(); mClassName_Tag_Arg4StickyMap.put(busInfo.className, tagArgMap); } tagArgMap.put(tag, arg); diff --git a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java index 234973ef5b..a0203f78fc 100644 --- a/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java +++ b/lib/utilcode/src/test/java/com/blankj/utilcode/util/ObjectUtilsTest.java @@ -2,8 +2,6 @@ import android.support.v4.util.LongSparseArray; import android.support.v4.util.SimpleArrayMap; -import android.text.Editable; -import android.text.SpannableStringBuilder; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle index 8a06562880..04ea90802f 100644 --- a/lib/utildebug/build.gradle +++ b/lib/utildebug/build.gradle @@ -1,3 +1,7 @@ +afterEvaluate { + verifyReleaseResources.enabled(false) +} + dependencies { implementation Config.depConfig.lib_utilcode.dep implementation Config.depConfig.swipe_panel.dep From 74155c92ca81242a6ec80bf53a162fa7997e2023 Mon Sep 17 00:00:00 2001 From: Blankj Date: Thu, 29 Oct 2020 20:03:20 +0800 Subject: [PATCH 082/122] see 10/29 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 4 +- lib/utilcode/README-CN.md | 4 +- lib/utilcode/README.md | 4 +- .../blankj/utilcode/util/MessengerUtils.java | 19 +++++- .../blankj/utilcode/util/ServiceUtils.java | 59 +++++++++++++++++-- 6 files changed, 76 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2299a6702e..deda0c0468 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/10/29` [add] Fix MessengerUtils startService IllegalStateException. Publish v1.30.4. * `20/10/28` [add] Fix BusUtils ConcurrentModificationException. Publish v1.30.3. * `20/10/27` [add] Fix AppUtils#getAppSignatures. Add DeviceUtils#isDevelopmentSettingsEnabled. Publish v1.30.2. * `20/10/26` [add] Fix AppUtils#isAppForeground. Publish v1.30.1. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index e41d37e9b8..ec58830c02 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_030_003 - static versionName = '1.30.3'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_004 + static versionName = '1.30.4'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index edfdcb3815..9cff770bcf 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.3' +implementation 'com.blankj:utilcode:1.30.4' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.3' +implementation 'com.blankj:utilcodex:1.30.4' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 71ec0bcd3d..caeb4623af 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.3' +implementation 'com.blankj:utilcode:1.30.4' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.3' +implementation 'com.blankj:utilcodex:1.30.4' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java index e6ec4eec2a..3b7a0fbb2b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -48,8 +49,7 @@ public static void register() { Log.i("MessengerUtils", "Server service is running."); return; } - Intent intent = new Intent(Utils.getApp(), ServerService.class); - Utils.getApp().startService(intent); + startServiceCompat(new Intent(Utils.getApp(), ServerService.class)); return; } if (sLocalClient == null) { @@ -118,13 +118,26 @@ public static void post(@NonNull String key, @NonNull Bundle data) { } else { Intent intent = new Intent(Utils.getApp(), ServerService.class); intent.putExtras(data); - Utils.getApp().startService(intent); + startServiceCompat(intent); } for (Client client : sClientMap.values()) { client.sendMsg2Server(data); } } + private static void startServiceCompat(Intent intent) { + try { + intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Utils.getApp().startForegroundService(intent); + } else { + Utils.getApp().startService(intent); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + static class Client { String mPkgName; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java index 6a1087f8ff..d82a879e44 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ServiceUtils.java @@ -31,7 +31,7 @@ private ServiceUtils() { * * @return all of the services are running */ - public static Set getAllRunningServices() { + public static Set getAllRunningServices() { ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); List info = am.getRunningServices(0x7FFFFFFF); Set names = new HashSet<>(); @@ -61,8 +61,16 @@ public static void startService(@NonNull final String className) { * @param cls The service class. */ public static void startService(@NonNull final Class cls) { + startService(new Intent(Utils.getApp(), cls)); + } + + /** + * Start the service. + * + * @param intent The intent. + */ + public static void startService(Intent intent) { try { - Intent intent = new Intent(Utils.getApp(), cls); intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Utils.getApp().startForegroundService(intent); @@ -96,8 +104,22 @@ public static boolean stopService(@NonNull final String className) { * @return {@code true}: success
    {@code false}: fail */ public static boolean stopService(@NonNull final Class cls) { - Intent intent = new Intent(Utils.getApp(), cls); - return Utils.getApp().stopService(intent); + return stopService(new Intent(Utils.getApp(), cls)); + } + + /** + * Stop the service. + * + * @param intent The intent. + * @return {@code true}: success
    {@code false}: fail + */ + public static boolean stopService(@NonNull Intent intent) { + try { + return Utils.getApp().stopService(intent); + } catch (Exception e) { + e.printStackTrace(); + return false; + } } /** @@ -145,8 +167,33 @@ public static void bindService(@NonNull final String className, public static void bindService(@NonNull final Class cls, @NonNull final ServiceConnection conn, final int flags) { - Intent intent = new Intent(Utils.getApp(), cls); - Utils.getApp().bindService(intent, conn, flags); + bindService(new Intent(Utils.getApp(), cls), conn, flags); + } + + /** + * Bind the service. + * + * @param intent The intent. + * @param conn The ServiceConnection object. + * @param flags Operation options for the binding. + *
      + *
    • 0
    • + *
    • {@link Context#BIND_AUTO_CREATE}
    • + *
    • {@link Context#BIND_DEBUG_UNBIND}
    • + *
    • {@link Context#BIND_NOT_FOREGROUND}
    • + *
    • {@link Context#BIND_ABOVE_CLIENT}
    • + *
    • {@link Context#BIND_ALLOW_OOM_MANAGEMENT}
    • + *
    • {@link Context#BIND_WAIVE_PRIORITY}
    • + *
    + */ + public static void bindService(@NonNull final Intent intent, + @NonNull final ServiceConnection conn, + final int flags) { + try { + Utils.getApp().bindService(intent, conn, flags); + } catch (Exception e) { + e.printStackTrace(); + } } /** From e6ec42f72adfe3351f9280ddce4027b2b98801b4 Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 6 Nov 2020 14:28:45 +0800 Subject: [PATCH 083/122] see 11/06 log --- buildSrc/src/main/groovy/Config.groovy | 2 +- .../blankj/utilcode/pkg/feature/mvp/MvpActivity.java | 2 -- .../com/blankj/utilcode/pkg/feature/mvp/MvpModel.java | 2 +- .../pkg/feature/mvp/{IMvp.java => MvpMvp.java} | 2 +- .../blankj/utilcode/pkg/feature/mvp/MvpPresenter.java | 2 +- .../com/blankj/utilcode/pkg/feature/mvp/MvpView.java | 3 +-- .../src/main/java/com/blankj/base/mvp/BaseModel.java | 4 ---- .../main/java/com/blankj/base/mvp/BasePresenter.java | 6 ------ .../java/com/blankj/utilcode/util/CleanUtils.java | 11 +++++++++++ plugin/api-gradle-plugin/CHANGELOG.md | 3 +++ plugin/api-gradle-plugin/README.md | 2 +- .../src/main/java/com/blankj/api/ApiClassVisitor.java | 7 +++---- plugin/bus-gradle-plugin/README.md | 2 +- 13 files changed, 24 insertions(+), 24 deletions(-) rename feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/{IMvp.java => MvpMvp.java} (94%) diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index ec58830c02..db0ca894bf 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -53,7 +53,7 @@ class Config { // 上传新版本插件更新 pluginPath 中的版本号,并设置 isApply = false // 通过 mavenLocal 上传本地版本,设置 isApply = true 即可应用插件来调试,最后通过 bintrayUpload 来发布插件 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.4", pluginId: "com.blankj.api"), + plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:latest.release", pluginId: "com.blankj.api"), //./gradlew clean :plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean :plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.6", pluginId: "com.blankj.bus"), diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java index 813431f6f8..7aa5fe26b1 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpActivity.java @@ -1,7 +1,5 @@ package com.blankj.utilcode.pkg.feature.mvp; -import android.arch.lifecycle.ViewModel; -import android.arch.lifecycle.ViewModelProvider; import android.content.Context; import android.content.Intent; import android.os.Bundle; diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java index 8697f11c1d..e16b4f1934 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpModel.java @@ -12,7 +12,7 @@ * desc : *
    */ -public class MvpModel extends BaseModel implements IMvp.Model { +public class MvpModel extends BaseModel implements MvpMvp.Model { private int index; diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/IMvp.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpMvp.java similarity index 94% rename from feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/IMvp.java rename to feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpMvp.java index 4e8edc023e..d0335ef203 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/IMvp.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpMvp.java @@ -10,7 +10,7 @@ * desc : *
    */ -public interface IMvp { +public interface MvpMvp { interface View { void setLoadingVisible(boolean visible); diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java index 01990aa3af..fcb68bd3ed 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpPresenter.java @@ -13,7 +13,7 @@ *
    */ public class MvpPresenter extends BasePresenter - implements IMvp.Presenter { + implements MvpMvp.Presenter { @Override public void onBindView() { diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java index 054cd7ade9..e916398e48 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/mvp/MvpView.java @@ -6,7 +6,6 @@ import com.blankj.base.mvp.BaseView; import com.blankj.utilcode.pkg.R; -import com.blankj.utilcode.pkg.feature.fragment.FragmentActivity; import com.blankj.utilcode.util.ClickUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.SizeUtils; @@ -22,7 +21,7 @@ *
    */ public class MvpView extends BaseView - implements IMvp.View { + implements MvpMvp.View { private TextView mvpTv; private TextView mvpMeasureWidthTv; diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java b/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java index 84c930fd74..1623f90254 100644 --- a/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java +++ b/lib/base/src/main/java/com/blankj/base/mvp/BaseModel.java @@ -1,7 +1,5 @@ package com.blankj.base.mvp; -import android.arch.lifecycle.LiveData; -import android.arch.lifecycle.MutableLiveData; import android.support.annotation.CallSuper; import android.util.Log; @@ -15,8 +13,6 @@ */ public abstract class BaseModel { - LiveData mData = new MutableLiveData<>(); - private static final String TAG = BaseView.TAG; public abstract void onCreate(); diff --git a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java index 2c6806708a..cc3f84cb48 100644 --- a/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java +++ b/lib/base/src/main/java/com/blankj/base/mvp/BasePresenter.java @@ -1,7 +1,5 @@ package com.blankj.base.mvp; -import android.arch.lifecycle.ViewModel; -import android.arch.lifecycle.ViewModelProvider; import android.support.annotation.CallSuper; import android.util.Log; @@ -69,8 +67,4 @@ public void onDestroy() { public boolean isAlive() { return isAlive; } - - public void getSafeData() { - new ViewModelProvider(getView().getActivity(), new ViewModelProvider.NewInstanceFactory()).get(ViewModel.class); - } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java index aa95ae7126..10fe1d84c1 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CleanUtils.java @@ -1,6 +1,10 @@ package com.blankj.utilcode.util; +import android.app.ActivityManager; +import android.content.Context; +import android.os.Build; import android.os.Environment; +import android.support.annotation.RequiresApi; import java.io.File; @@ -89,4 +93,11 @@ public static boolean cleanExternalCache() { public static boolean cleanCustomDir(final String dirPath) { return UtilsBridge.deleteAllInDir(UtilsBridge.getFileByPath(dirPath)); } + + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + public static void cleanAppUserData() { + ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); + //noinspection ConstantConditions + am.clearApplicationUserData(); + } } diff --git a/plugin/api-gradle-plugin/CHANGELOG.md b/plugin/api-gradle-plugin/CHANGELOG.md index 8aa9190f8b..18476ef1e6 100644 --- a/plugin/api-gradle-plugin/CHANGELOG.md +++ b/plugin/api-gradle-plugin/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## v1.5(2020/11/06) +对非 mock 的 visitor 的修复 + ## v1.4(2020/05/19) 重新发布,因为上个版本从阿里云仓库拉取是有问题的 diff --git a/plugin/api-gradle-plugin/README.md b/plugin/api-gradle-plugin/README.md index ed673a5070..5350bc5426 100644 --- a/plugin/api-gradle-plugin/README.md +++ b/plugin/api-gradle-plugin/README.md @@ -30,7 +30,7 @@ buildscript { dependencies { ... - classpath 'com.blankj:api-gradle-plugin:1.4' + classpath 'com.blankj:api-gradle-plugin:latest.release' } } ``` diff --git a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java index 443f0a846d..7f71e7919a 100644 --- a/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java +++ b/plugin/api-gradle-plugin/src/main/java/com/blankj/api/ApiClassVisitor.java @@ -25,7 +25,6 @@ public class ApiClassVisitor extends ClassVisitor { private boolean hasAnnotation; private boolean isMock; private String mApiUtilsClass; - public String errorStr; public ApiClassVisitor(ClassVisitor classVisitor, Map apiImplMap, List apiClasses, String apiUtilsClass) { super(Opcodes.ASM5, classVisitor); @@ -65,10 +64,10 @@ public void visitEnd() { if (hasAnnotation) { if (!isMock) {// 如果不是 mock 的话 ApiInfo apiInfo = mApiImplMap.get(superClassName); - if (apiInfo == null) { + if (apiInfo == null || apiInfo.isMock) {// 不存在或者之前存在的是 mock mApiImplMap.put(superClassName, new ApiInfo(className, false)); - } else {// 存在一个 api 多个实现就报错 - errorStr = "<" + className + "> and <" + apiInfo.implApiClass + "> impl same api of <" + superClassName + ">"; + } else {// 存在一个 api 多个非 mock 实现就报错 + throw new IllegalArgumentException("<" + className + "> and <" + apiInfo.implApiClass + "> impl same api of <" + superClassName + ">"); } } else {// mock 的话,如果 map 中已存在就不覆盖了 if (!mApiImplMap.containsKey(superClassName)) { diff --git a/plugin/bus-gradle-plugin/README.md b/plugin/bus-gradle-plugin/README.md index ec039ca8fd..a2d0362f39 100644 --- a/plugin/bus-gradle-plugin/README.md +++ b/plugin/bus-gradle-plugin/README.md @@ -19,7 +19,7 @@ buildscript { dependencies { ... - classpath 'com.blankj:bus-gradle-plugin:2.6' + classpath 'com.blankj:bus-gradle-plugin:latest.release' } } ``` From 27cf719c188603a1f9109c4bf1bcfb7949903b02 Mon Sep 17 00:00:00 2001 From: Blankj Date: Fri, 13 Nov 2020 15:31:48 +0800 Subject: [PATCH 084/122] see 11/13 log --- CHANGELOG.md | 1 + buildSrc/src/main/groovy/Config.groovy | 6 +- .../utilcode/pkg/src/main/AndroidManifest.xml | 1 + .../pkg/feature/network/NetworkActivity.kt | 41 ++++- .../com/blankj/subutil/util/BatteryUtils.java | 2 - lib/utilcode/README-CN.md | 7 +- lib/utilcode/README.md | 7 +- .../com/blankj/utilcode/util/CrashUtils.java | 1 - .../com/blankj/utilcode/util/DeviceUtils.java | 13 +- .../blankj/utilcode/util/FragmentUtils.java | 116 +++++++----- .../blankj/utilcode/util/MessengerUtils.java | 7 + .../blankj/utilcode/util/NetworkUtils.java | 171 +++++++++++++++++- .../utilcode/util/NotificationUtils.java | 13 +- .../com/blankj/utilcode/util/TimeUtils.java | 2 +- .../util/UtilsActivityLifecycleImpl.java | 45 ++++- .../com/blankj/utilcode/util/UtilsBridge.java | 10 + 16 files changed, 372 insertions(+), 71 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index deda0c0468..913ee7b7ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `20/11/13` [add] Fix MessengerUtils ANR. Add NetworkUtils#getWifiScanResult, [add|remove]OnWifiChangedConsumer. Publish v1.30.5. * `20/10/29` [add] Fix MessengerUtils startService IllegalStateException. Publish v1.30.4. * `20/10/28` [add] Fix BusUtils ConcurrentModificationException. Publish v1.30.3. * `20/10/27` [add] Fix AppUtils#getAppSignatures. Add DeviceUtils#isDevelopmentSettingsEnabled. Publish v1.30.2. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index db0ca894bf..1d9b9cd6cd 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_030_004 - static versionName = '1.30.4'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_005 + static versionName = '1.30.5'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' @@ -53,7 +53,7 @@ class Config { // 上传新版本插件更新 pluginPath 中的版本号,并设置 isApply = false // 通过 mavenLocal 上传本地版本,设置 isApply = true 即可应用插件来调试,最后通过 bintrayUpload 来发布插件 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:latest.release", pluginId: "com.blankj.api"), + plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.5", pluginId: "com.blankj.api"), //./gradlew clean :plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean :plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.6", pluginId: "com.blankj.bus"), diff --git a/feature/utilcode/pkg/src/main/AndroidManifest.xml b/feature/utilcode/pkg/src/main/AndroidManifest.xml index f77ad3d953..8da0667a23 100644 --- a/feature/utilcode/pkg/src/main/AndroidManifest.xml +++ b/feature/utilcode/pkg/src/main/AndroidManifest.xml @@ -18,6 +18,7 @@ + diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt index f0c9962b2d..452040376d 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt @@ -2,13 +2,17 @@ package com.blankj.utilcode.pkg.feature.network import android.content.Context import android.content.Intent +import android.net.wifi.ScanResult +import android.net.wifi.WifiManager import android.os.Bundle import android.view.View import com.blankj.common.activity.CommonActivity +import com.blankj.common.helper.PermissionHelper import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemSwitch import com.blankj.common.item.CommonItemTitle +import com.blankj.utilcode.constant.PermissionConstants import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.* @@ -24,12 +28,24 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis companion object { fun start(context: Context) { - val starter = Intent(context, NetworkActivity::class.java) - context.startActivity(starter) + PermissionHelper.request(context, object : PermissionUtils.SimpleCallback { + override fun onGranted() { + val starter = Intent(context, NetworkActivity::class.java) + context.startActivity(starter) + } + + override fun onDenied() { + } + }, PermissionConstants.LOCATION) } } private lateinit var itemsTask: ThreadUtils.SimpleTask>> + private lateinit var wifiScanResultItem: CommonItemTitle + private val consumer = Utils.Consumer { t -> + wifiScanResultItem.setContent(scanResults2String(t.filterResults)) + wifiScanResultItem.update() + } override fun bindTitleRes(): Int { return R.string.demo_network @@ -51,6 +67,7 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis override fun bindItems(): List> { if (ThreadUtils.isMainThread()) return arrayListOf() + wifiScanResultItem = CommonItemTitle("getWifiScanResult", scanResults2String(NetworkUtils.getWifiScanResult().filterResults)) return CollectionUtils.newArrayList( CommonItemTitle("isConnected", NetworkUtils.isConnected().toString()), CommonItemTitle("getMobileDataEnabled", NetworkUtils.getMobileDataEnabled().toString()), @@ -72,10 +89,19 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis CommonItemTitle("isWifiAvailable", NetworkUtils.isWifiAvailable().toString()), CommonItemTitle("isAvailable", NetworkUtils.isAvailable().toString()), CommonItemTitle("getBaiduDomainAddress", NetworkUtils.getDomainAddress("baidu.com")), + wifiScanResultItem, CommonItemSwitch( R.string.network_wifi_enabled, - { NetworkUtils.getWifiEnabled() }, + { + val wifiEnabled = NetworkUtils.getWifiEnabled() + if (wifiEnabled) { + NetworkUtils.addOnWifiChangedConsumer(consumer) + } else { + NetworkUtils.removeOnWifiChangedConsumer(consumer) + } + wifiEnabled + }, { NetworkUtils.setWifiEnabled(it) ThreadUtils.executeByIo(getItemsTask()) @@ -112,5 +138,14 @@ class NetworkActivity : CommonActivity(), NetworkUtils.OnNetworkStatusChangedLis super.onDestroy() ThreadUtils.cancel(itemsTask) NetworkUtils.unregisterNetworkStatusChangedListener(this) + NetworkUtils.removeOnWifiChangedConsumer(consumer) + } + + private fun scanResults2String(results: List): String { + val sb: StringBuilder = StringBuilder() + for (result in results) { + sb.append(String.format("${result.SSID}, Level: ${WifiManager.calculateSignalLevel(result.level, 4)}\n")) + } + return sb.toString() } } diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java index f85091e649..0e2fc571b4 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java @@ -76,7 +76,6 @@ private static BatteryChangedReceiver getInstance() { void registerListener(final OnBatteryStatusChangedListener listener) { if (listener == null) return; ThreadUtils.runOnUiThread(new Runnable() { - @SuppressLint("MissingPermission") @Override public void run() { int preSize = mListeners.size(); @@ -109,7 +108,6 @@ public void run() { }); } - @SuppressLint("MissingPermission") @Override public void onReceive(Context context, final Intent intent) { if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index 9cff770bcf..a50fef56c8 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.4' +implementation 'com.blankj:utilcode:1.30.5' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.4' +implementation 'com.blankj:utilcodex:1.30.5' ``` @@ -721,6 +721,9 @@ getServerAddressByWifi : 根据 WiFi 获取服务端 IP 地址 registerNetworkStatusChangedListener : 注册网络状态改变监听器 isRegisteredNetworkStatusChangedListener: 判断是否注册网络状态改变监听器 unregisterNetworkStatusChangedListener : 注销网络状态改变监听器 +getWifiScanResult : 获取 WIFI 列表 +addOnWifiChangedConsumer : 增加 WIFI 改变监听 +removeOnWifiChangedConsumer : 移除 WIFI 改变监听 ``` * ### 通知相关 -> [NotificationUtils.java][notification.java] -> [Demo][notification.demo] diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index caeb4623af..55ad2d880a 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.4' +implementation 'com.blankj:utilcode:1.30.5' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.4' +implementation 'com.blankj:utilcodex:1.30.5' ``` @@ -721,6 +721,9 @@ getServerAddressByWifi registerNetworkStatusChangedListener isRegisteredNetworkStatusChangedListener unregisterNetworkStatusChangedListener +getWifiScanResult +addOnWifiChangedConsumer +removeOnWifiChangedConsumer ``` * ### About Notification -> [NotificationUtils.java][notification.java] -> [Demo][notification.demo] diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java index 8154d9e069..d267bc5c33 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java @@ -30,7 +30,6 @@ private CrashUtils() { /** * Initialization. */ - @SuppressLint("MissingPermission") public static void init() { init(""); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java index eb0a6709fb..e5c4b204e8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java @@ -113,7 +113,7 @@ public static String getAndroidID() { * * @return the MAC address */ - @RequiresPermission(allOf = {ACCESS_WIFI_STATE, INTERNET, CHANGE_WIFI_STATE}) + @RequiresPermission(allOf = {ACCESS_WIFI_STATE, CHANGE_WIFI_STATE}) public static String getMacAddress() { String macAddress = getMacAddress((String[]) null); if (!TextUtils.isEmpty(macAddress) || getWifiEnabled()) return macAddress; @@ -151,7 +151,7 @@ private static void setWifiEnabled(final boolean enabled) { * * @return the MAC address */ - @RequiresPermission(allOf = {ACCESS_WIFI_STATE, INTERNET}) + @RequiresPermission(allOf = {ACCESS_WIFI_STATE}) public static String getMacAddress(final String... excepts) { String macAddress = getMacAddressByNetworkInterface(); if (isAddressNotInExcepts(macAddress, excepts)) { @@ -190,7 +190,7 @@ private static boolean isAddressNotInExcepts(final String address, final String. return true; } - @SuppressLint({"MissingPermission", "HardwareIds"}) + @RequiresPermission(ACCESS_WIFI_STATE) private static String getMacAddressByWifiInfo() { try { final WifiManager wifi = (WifiManager) Utils.getApp() @@ -198,6 +198,7 @@ private static String getMacAddressByWifiInfo() { if (wifi != null) { final WifiInfo info = wifi.getConnectionInfo(); if (info != null) { + @SuppressLint("HardwareIds") String macAddress = info.getMacAddress(); if (!TextUtils.isEmpty(macAddress)) { return macAddress; @@ -412,7 +413,6 @@ public static boolean isDevelopmentSettingsEnabled() { * * @return the unique device id */ - @SuppressLint({"MissingPermission", "HardwareIds"}) public static String getUniqueDeviceId() { return getUniqueDeviceId("", true); } @@ -426,7 +426,6 @@ public static String getUniqueDeviceId() { * @param prefix The prefix of the unique device id. * @return the unique device id */ - @SuppressLint({"MissingPermission", "HardwareIds"}) public static String getUniqueDeviceId(String prefix) { return getUniqueDeviceId(prefix, true); } @@ -440,7 +439,6 @@ public static String getUniqueDeviceId(String prefix) { * @param useCache True to use cache, false otherwise. * @return the unique device id */ - @SuppressLint({"MissingPermission", "HardwareIds"}) public static String getUniqueDeviceId(boolean useCache) { return getUniqueDeviceId("", useCache); } @@ -455,7 +453,6 @@ public static String getUniqueDeviceId(boolean useCache) { * @param useCache True to use cache, false otherwise. * @return the unique device id */ - @SuppressLint({"MissingPermission", "HardwareIds"}) public static String getUniqueDeviceId(String prefix, boolean useCache) { if (!useCache) { return getUniqueDeviceIdReal(prefix); @@ -486,7 +483,7 @@ private static String getUniqueDeviceIdReal(String prefix) { return saveUdid(prefix + 9, ""); } - @SuppressLint({"MissingPermission", "HardwareIds"}) + @RequiresPermission(allOf = {ACCESS_WIFI_STATE, INTERNET, CHANGE_WIFI_STATE}) public static boolean isSameDevice(final String uniqueDeviceId) { // {prefix}{type}{32id} if (TextUtils.isEmpty(uniqueDeviceId) && uniqueDeviceId.length() < 33) return false; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java index 0916aa3b1d..3e56907eb2 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java @@ -17,6 +17,7 @@ import android.view.View; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -301,7 +302,7 @@ public static void add(@NonNull final FragmentManager fm, final boolean isHide, final boolean isAddStack) { putArgs(add, new Args(containerId, tag, isHide, isAddStack)); - operateNoAnim(fm, TYPE_ADD_FRAGMENT, null, add); + operateNoAnim(TYPE_ADD_FRAGMENT, fm, null, add); } /** @@ -489,7 +490,7 @@ public static void add(@NonNull final FragmentManager fm, putArgs(adds[i], new Args(containerId, tags[i], showIndex != i, false)); } } - operateNoAnim(fm, TYPE_ADD_FRAGMENT, null, adds); + operateNoAnim(TYPE_ADD_FRAGMENT, fm, null, adds); } /** @@ -499,7 +500,7 @@ public static void add(@NonNull final FragmentManager fm, */ public static void show(@NonNull final Fragment show) { putArgs(show, false); - operateNoAnim(show.getFragmentManager(), TYPE_SHOW_FRAGMENT, null, show); + operateNoAnim(TYPE_SHOW_FRAGMENT, show.getFragmentManager(), null, show); } /** @@ -512,11 +513,7 @@ public static void show(@NonNull final FragmentManager fm) { for (Fragment show : fragments) { putArgs(show, false); } - operateNoAnim(fm, - TYPE_SHOW_FRAGMENT, - null, - fragments.toArray(new Fragment[0]) - ); + operateNoAnim(TYPE_SHOW_FRAGMENT, fm, null, fragments.toArray(new Fragment[0])); } /** @@ -526,7 +523,7 @@ public static void show(@NonNull final FragmentManager fm) { */ public static void hide(@NonNull final Fragment hide) { putArgs(hide, true); - operateNoAnim(hide.getFragmentManager(), TYPE_HIDE_FRAGMENT, null, hide); + operateNoAnim(TYPE_HIDE_FRAGMENT, hide.getFragmentManager(), null, hide); } /** @@ -539,21 +536,28 @@ public static void hide(@NonNull final FragmentManager fm) { for (Fragment hide : fragments) { putArgs(hide, true); } - operateNoAnim(fm, - TYPE_HIDE_FRAGMENT, - null, - fragments.toArray(new Fragment[0]) - ); + operateNoAnim(TYPE_HIDE_FRAGMENT, fm, null, fragments.toArray(new Fragment[0])); + } + + /** + * Show fragment then hide other fragment. + * + * @param show The fragment will be show. + * @param hide The fragment will be hide. + */ + public static void showHide(@NonNull final Fragment show, + @NonNull final Fragment hide) { + showHide(show, Collections.singletonList(hide)); } /** * Show fragment then hide other fragment. * * @param showIndex The index of fragment will be shown. - * @param fragments The fragments will be hide. + * @param fragments The fragment will be hide. */ - public static void showHide(final int showIndex, @NonNull final List fragments) { - showHide(fragments.get(showIndex), fragments); + public static void showHide(final int showIndex, @NonNull final Fragment... fragments) { + showHide(fragments[showIndex], fragments); } /** @@ -562,22 +566,18 @@ public static void showHide(final int showIndex, @NonNull final List f * @param show The fragment will be show. * @param hide The fragment will be hide. */ - public static void showHide(@NonNull final Fragment show, @NonNull final List hide) { - for (Fragment fragment : hide) { - putArgs(fragment, fragment != show); - } - operateNoAnim(show.getFragmentManager(), TYPE_SHOW_HIDE_FRAGMENT, show, - hide.toArray(new Fragment[0])); + public static void showHide(@NonNull final Fragment show, @NonNull final Fragment... hide) { + showHide(show, Arrays.asList(hide)); } /** * Show fragment then hide other fragment. * * @param showIndex The index of fragment will be shown. - * @param fragments The fragment will be hide. + * @param fragments The fragments will be hide. */ - public static void showHide(final int showIndex, @NonNull final Fragment... fragments) { - showHide(fragments[showIndex], fragments); + public static void showHide(final int showIndex, @NonNull final List fragments) { + showHide(fragments.get(showIndex), fragments); } /** @@ -586,13 +586,14 @@ public static void showHide(final int showIndex, @NonNull final Fragment... frag * @param show The fragment will be show. * @param hide The fragment will be hide. */ - public static void showHide(@NonNull final Fragment show, @NonNull final Fragment... hide) { + public static void showHide(@NonNull final Fragment show, @NonNull final List hide) { for (Fragment fragment : hide) { putArgs(fragment, fragment != show); } - operateNoAnim(show.getFragmentManager(), TYPE_SHOW_HIDE_FRAGMENT, show, hide); + operateNoAnim(TYPE_SHOW_HIDE_FRAGMENT, show.getFragmentManager(), show, hide.toArray(new Fragment[0])); } + /** * Show fragment then hide other fragment. * @@ -600,10 +601,47 @@ public static void showHide(@NonNull final Fragment show, @NonNull final Fragmen * @param hide The fragment will be hide. */ public static void showHide(@NonNull final Fragment show, - @NonNull final Fragment hide) { - putArgs(show, false); - putArgs(hide, true); - operateNoAnim(show.getFragmentManager(), TYPE_SHOW_HIDE_FRAGMENT, show, hide); + @NonNull final Fragment hide, @AnimatorRes @AnimRes final int enterAnim, + @AnimatorRes @AnimRes final int exitAnim, + @AnimatorRes @AnimRes final int popEnterAnim, + @AnimatorRes @AnimRes final int popExitAnim) { + showHide(show, Collections.singletonList(hide), enterAnim, exitAnim, popEnterAnim, popExitAnim); + } + + /** + * Show fragment then hide other fragment. + * + * @param showIndex The index of fragment will be shown. + * @param fragments The fragments will be hide. + */ + public static void showHide(final int showIndex, @NonNull final List fragments, + @AnimatorRes @AnimRes final int enterAnim, + @AnimatorRes @AnimRes final int exitAnim, + @AnimatorRes @AnimRes final int popEnterAnim, + @AnimatorRes @AnimRes final int popExitAnim) { + showHide(fragments.get(showIndex), fragments, enterAnim, exitAnim, popEnterAnim, popExitAnim); + } + + /** + * Show fragment then hide other fragment. + * + * @param show The fragment will be show. + * @param hide The fragment will be hide. + */ + public static void showHide(@NonNull final Fragment show, @NonNull final List hide, + @AnimatorRes @AnimRes final int enterAnim, + @AnimatorRes @AnimRes final int exitAnim, + @AnimatorRes @AnimRes final int popEnterAnim, + @AnimatorRes @AnimRes final int popExitAnim) { + for (Fragment fragment : hide) { + putArgs(fragment, fragment != show); + } + FragmentManager fm = show.getFragmentManager(); + if (fm != null) { + FragmentTransaction ft = fm.beginTransaction(); + addAnim(ft, enterAnim, exitAnim, popEnterAnim, popExitAnim); + operate(TYPE_SHOW_HIDE_FRAGMENT, fm, ft, show, hide.toArray(new Fragment[0])); + } } /** @@ -1357,7 +1395,7 @@ public static void popAll(@NonNull final FragmentManager fm, final boolean isImm * @param remove The fragment will be removed. */ public static void remove(@NonNull final Fragment remove) { - operateNoAnim(remove.getFragmentManager(), TYPE_REMOVE_FRAGMENT, null, remove); + operateNoAnim(TYPE_REMOVE_FRAGMENT, remove.getFragmentManager(), null, remove); } /** @@ -1367,8 +1405,7 @@ public static void remove(@NonNull final Fragment remove) { * @param isIncludeSelf True to include the fragment, false otherwise. */ public static void removeTo(@NonNull final Fragment removeTo, final boolean isIncludeSelf) { - operateNoAnim(removeTo.getFragmentManager(), TYPE_REMOVE_TO_FRAGMENT, - isIncludeSelf ? removeTo : null, removeTo); + operateNoAnim(TYPE_REMOVE_TO_FRAGMENT, removeTo.getFragmentManager(), isIncludeSelf ? removeTo : null, removeTo); } /** @@ -1378,11 +1415,7 @@ public static void removeTo(@NonNull final Fragment removeTo, final boolean isIn */ public static void removeAll(@NonNull final FragmentManager fm) { List fragments = getFragments(fm); - operateNoAnim(fm, - TYPE_REMOVE_FRAGMENT, - null, - fragments.toArray(new Fragment[0]) - ); + operateNoAnim(TYPE_REMOVE_FRAGMENT, fm, null, fragments.toArray(new Fragment[0])); } private static void putArgs(final Fragment fragment, final Args args) { @@ -1414,8 +1447,7 @@ private static Args getArgs(final Fragment fragment) { bundle.getBoolean(ARGS_IS_ADD_STACK)); } - private static void operateNoAnim(@Nullable final FragmentManager fm, - final int type, + private static void operateNoAnim(final int type, @Nullable final FragmentManager fm, final Fragment src, Fragment... dest) { if (fm == null) return; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java index 3b7a0fbb2b..a764eb50b6 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java @@ -1,6 +1,7 @@ package com.blankj.utilcode.util; import android.annotation.SuppressLint; +import android.app.Notification; import android.app.Service; import android.content.ComponentName; import android.content.Context; @@ -296,6 +297,12 @@ public IBinder onBind(Intent intent) { @Override public int onStartCommand(Intent intent, int flags, int startId) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Notification notification = UtilsBridge.getNotification( + NotificationUtils.ChannelConfig.DEFAULT_CHANNEL_CONFIG, null + ); + startForeground(1, notification); + } if (intent != null) { Bundle extras = intent.getExtras(); if (extras != null) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java index f9ba566cc9..8f874dbf38 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java @@ -7,6 +7,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.net.wifi.ScanResult; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; @@ -22,12 +23,18 @@ import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; +import java.util.ArrayList; import java.util.Enumeration; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.CopyOnWriteArraySet; +import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_NETWORK_STATE; import static android.Manifest.permission.ACCESS_WIFI_STATE; import static android.Manifest.permission.CHANGE_WIFI_STATE; @@ -686,6 +693,7 @@ public static String getSSID() { * * @param listener The status of network changed listener */ + @RequiresPermission(ACCESS_NETWORK_STATE) public static void registerNetworkStatusChangedListener(final OnNetworkStatusChangedListener listener) { NetworkChangedReceiver.getInstance().registerListener(listener); } @@ -709,6 +717,123 @@ public static void unregisterNetworkStatusChangedListener(final OnNetworkStatusC NetworkChangedReceiver.getInstance().unregisterListener(listener); } + @RequiresPermission(allOf = {ACCESS_WIFI_STATE, ACCESS_COARSE_LOCATION}) + public static WifiScanResults getWifiScanResult() { + WifiScanResults result = new WifiScanResults(); + if (!getWifiEnabled()) return result; + @SuppressLint("WifiManagerLeak") + WifiManager wm = (WifiManager) Utils.getApp().getSystemService(WIFI_SERVICE); + //noinspection ConstantConditions + List results = wm.getScanResults(); + if (results != null) { + result.setAllResults(results); + } + return result; + } + + private static final long SCAN_PERIOD_MILLIS = 3000; + private static final Set> SCAN_RESULT_CONSUMERS = new CopyOnWriteArraySet<>(); + private static Timer sScanWifiTimer; + private static WifiScanResults sPreWifiScanResults; + + @RequiresPermission(allOf = {ACCESS_WIFI_STATE, CHANGE_WIFI_STATE, ACCESS_COARSE_LOCATION}) + public static void addOnWifiChangedConsumer(final Utils.Consumer consumer) { + if (consumer == null) return; + UtilsBridge.runOnUiThread(new Runnable() { + @Override + public void run() { + if (SCAN_RESULT_CONSUMERS.isEmpty()) { + SCAN_RESULT_CONSUMERS.add(consumer); + startScanWifi(); + return; + } + consumer.accept(sPreWifiScanResults); + SCAN_RESULT_CONSUMERS.add(consumer); + } + }); + } + + private static void startScanWifi() { + sPreWifiScanResults = new WifiScanResults(); + sScanWifiTimer = new Timer(); + sScanWifiTimer.schedule(new TimerTask() { + @RequiresPermission(allOf = {ACCESS_WIFI_STATE, CHANGE_WIFI_STATE, ACCESS_COARSE_LOCATION}) + @Override + public void run() { + startScanWifiIfEnabled(); + WifiScanResults scanResults = getWifiScanResult(); + if (isSameScanResults(sPreWifiScanResults.allResults, scanResults.allResults)) { + return; + } + sPreWifiScanResults = scanResults; + UtilsBridge.runOnUiThread(new Runnable() { + @Override + public void run() { + for (Utils.Consumer consumer : SCAN_RESULT_CONSUMERS) { + consumer.accept(sPreWifiScanResults); + } + } + }); + } + }, 0, SCAN_PERIOD_MILLIS); + } + + @RequiresPermission(allOf = {ACCESS_WIFI_STATE, CHANGE_WIFI_STATE}) + private static void startScanWifiIfEnabled() { + if (!getWifiEnabled()) return; + @SuppressLint("WifiManagerLeak") + WifiManager wm = (WifiManager) Utils.getApp().getSystemService(WIFI_SERVICE); + //noinspection ConstantConditions + wm.startScan(); + } + + public static void removeOnWifiChangedConsumer(final Utils.Consumer consumer) { + if (consumer == null) return; + UtilsBridge.runOnUiThread(new Runnable() { + @Override + public void run() { + SCAN_RESULT_CONSUMERS.remove(consumer); + if (SCAN_RESULT_CONSUMERS.isEmpty()) { + stopScanWifi(); + } + } + }); + } + + private static void stopScanWifi() { + if (sScanWifiTimer != null) { + sScanWifiTimer.cancel(); + sScanWifiTimer = null; + } + } + + private static boolean isSameScanResults(List l1, List l2) { + if (l1 == null && l2 == null) { + return true; + } + if (l1 == null || l2 == null) { + return false; + } + if (l1.size() != l2.size()) { + return false; + } + for (int i = 0; i < l1.size(); i++) { + ScanResult r1 = l1.get(i); + ScanResult r2 = l2.get(i); + if (!isSameScanResultContent(r1, r2)) { + return false; + } + } + return true; + } + + private static boolean isSameScanResultContent(ScanResult r1, ScanResult r2) { + return r1 != null && r2 != null && UtilsBridge.equals(r1.BSSID, r2.BSSID) + && UtilsBridge.equals(r1.SSID, r2.SSID) + && UtilsBridge.equals(r1.capabilities, r2.capabilities) + && r1.level == r2.level; + } + public static final class NetworkChangedReceiver extends BroadcastReceiver { private static NetworkChangedReceiver getInstance() { @@ -718,11 +843,12 @@ private static NetworkChangedReceiver getInstance() { private NetworkType mType; private Set mListeners = new HashSet<>(); + @RequiresPermission(ACCESS_NETWORK_STATE) void registerListener(final OnNetworkStatusChangedListener listener) { if (listener == null) return; UtilsBridge.runOnUiThread(new Runnable() { - @SuppressLint("MissingPermission") @Override + @RequiresPermission(ACCESS_NETWORK_STATE) public void run() { int preSize = mListeners.size(); mListeners.add(listener); @@ -754,13 +880,13 @@ public void run() { }); } - @SuppressLint("MissingPermission") @Override public void onReceive(Context context, Intent intent) { if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) { // debouncing UtilsBridge.runOnUiThreadDelayed(new Runnable() { @Override + @RequiresPermission(ACCESS_NETWORK_STATE) public void run() { NetworkType networkType = NetworkUtils.getNetworkType(); if (mType == networkType) return; @@ -863,4 +989,45 @@ public interface OnNetworkStatusChangedListener { void onConnected(NetworkType networkType); } + + public static final class WifiScanResults { + + private List allResults = new ArrayList<>(); + private List filterResults = new ArrayList<>(); + + public WifiScanResults() { + } + + public List getAllResults() { + return allResults; + } + + public List getFilterResults() { + return filterResults; + } + + public void setAllResults(List allResults) { + this.allResults = allResults; + filterResults = filterScanResult(allResults); + } + + private static List filterScanResult(final List results) { + if (results == null || results.isEmpty()) { + return new ArrayList<>(); + } + LinkedHashMap map = new LinkedHashMap<>(results.size()); + for (ScanResult result : results) { + if (TextUtils.isEmpty(result.SSID)) { + continue; + } + ScanResult resultInMap = map.get(result.SSID); + if (resultInMap != null && resultInMap.level >= result.level) { + continue; + } + map.put(result.SSID, result); + } + return new ArrayList<>(map.values()); + } + + } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NotificationUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NotificationUtils.java index 42a97f5066..48e22a3e62 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NotificationUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NotificationUtils.java @@ -91,21 +91,26 @@ public static void notify(int id, ChannelConfig channelConfig, Utils.Consumer consumer) { + NotificationManagerCompat.from(Utils.getApp()).notify(tag, id, getNotification(channelConfig, consumer)); + } + + + public static Notification getNotification(ChannelConfig channelConfig, Utils.Consumer consumer) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager nm = (NotificationManager) Utils.getApp().getSystemService(Context.NOTIFICATION_SERVICE); //noinspection ConstantConditions nm.createNotificationChannel(channelConfig.getNotificationChannel()); } - NotificationManagerCompat nmc = NotificationManagerCompat.from(Utils.getApp()); - NotificationCompat.Builder builder = new NotificationCompat.Builder(Utils.getApp()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { builder.setChannelId(channelConfig.mNotificationChannel.getId()); } - consumer.accept(builder); + if (consumer != null) { + consumer.accept(builder); + } - nmc.notify(tag, id, builder.build()); + return builder.build(); } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java index d328524c36..2ab5370c82 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java @@ -1525,7 +1525,7 @@ public static String getChineseZodiac(final int year) { private static final int[] ZODIAC_FLAGS = {20, 19, 21, 21, 21, 22, 23, 23, 23, 24, 23, 22}; private static final String[] ZODIAC = { "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", - "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "魔羯座" + "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "摩羯座" }; /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index b3ecdf55b8..272eddcb45 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -7,6 +7,7 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.util.Log; import android.view.Window; import android.view.WindowManager; @@ -195,6 +196,9 @@ Application getApplicationByReflect() { /////////////////////////////////////////////////////////////////////////// // lifecycle start /////////////////////////////////////////////////////////////////////////// + @Override + public void onActivityPreCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {/**/} + @Override public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) { LanguageUtils.applyLanguage(activity); @@ -203,6 +207,12 @@ public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceSt consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_CREATE); } + @Override + public void onActivityPostCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {/**/} + + @Override + public void onActivityPreStarted(@NonNull Activity activity) {/**/} + @Override public void onActivityStarted(@NonNull Activity activity) { if (!mIsBackground) { @@ -216,6 +226,12 @@ public void onActivityStarted(@NonNull Activity activity) { consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_START); } + @Override + public void onActivityPostStarted(@NonNull Activity activity) {/**/} + + @Override + public void onActivityPreResumed(@NonNull Activity activity) {/**/} + @Override public void onActivityResumed(@NonNull final Activity activity) { setTopActivity(activity); @@ -227,11 +243,23 @@ public void onActivityResumed(@NonNull final Activity activity) { consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_RESUME); } + @Override + public void onActivityPostResumed(@NonNull Activity activity) {/**/} + + @Override + public void onActivityPrePaused(@NonNull Activity activity) {/**/} + @Override public void onActivityPaused(@NonNull Activity activity) { consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_PAUSE); } + @Override + public void onActivityPostPaused(@NonNull Activity activity) {/**/} + + @Override + public void onActivityPreStopped(@NonNull Activity activity) {/**/} + @Override public void onActivityStopped(Activity activity) { if (activity.isChangingConfigurations()) { @@ -248,7 +276,19 @@ public void onActivityStopped(Activity activity) { } @Override - public void onActivitySaveInstanceState(@NonNull Activity activity, Bundle outState) {/**/} + public void onActivityPostStopped(@NonNull Activity activity) {/**/} + + @Override + public void onActivityPreSaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {/**/} + + @Override + public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {/**/} + + @Override + public void onActivityPostSaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {/**/} + + @Override + public void onActivityPreDestroyed(@NonNull Activity activity) {/**/} @Override public void onActivityDestroyed(@NonNull Activity activity) { @@ -256,6 +296,9 @@ public void onActivityDestroyed(@NonNull Activity activity) { UtilsBridge.fixSoftInputLeaks(activity); consumeActivityLifecycleCallbacks(activity, Lifecycle.Event.ON_DESTROY); } + + @Override + public void onActivityPostDestroyed(@NonNull Activity activity) {/**/} /////////////////////////////////////////////////////////////////////////// // lifecycle end /////////////////////////////////////////////////////////////////////////// diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 86ba24bd89..5361fdc1de 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -2,6 +2,7 @@ import android.app.Activity; import android.app.Application; +import android.app.Notification; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; @@ -14,6 +15,7 @@ import android.support.annotation.RequiresApi; import android.support.annotation.RequiresPermission; import android.support.annotation.StringRes; +import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.view.View; @@ -418,6 +420,14 @@ static void fixSoftInputLeaks(final Activity activity) { KeyboardUtils.fixSoftInputLeaks(activity); } + /////////////////////////////////////////////////////////////////////////// + // NotificationUtils + /////////////////////////////////////////////////////////////////////////// + static Notification getNotification(NotificationUtils.ChannelConfig channelConfig, + Utils.Consumer consumer) { + return NotificationUtils.getNotification(channelConfig, consumer); + } + /////////////////////////////////////////////////////////////////////////// // PermissionUtils /////////////////////////////////////////////////////////////////////////// From be7c7c27f4191a9a741d6c63a7ef6d7e2c14e449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=9C=9D=E6=97=AD?= <974577817@qq.com> Date: Fri, 4 Dec 2020 11:34:42 +0800 Subject: [PATCH 085/122] Update ColorUtils.java add static to ColorUtils.isLightColor --- .../src/main/java/com/blankj/utilcode/util/ColorUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java index d894de475b..0b0d9d37f8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ColorUtils.java @@ -211,7 +211,7 @@ public static int getRandomColor(final boolean supportAlpha) { * @param color The color. * @return {@code true}: yes
    {@code false}: no */ - public boolean isLightColor(@ColorInt int color) { + public static boolean isLightColor(@ColorInt int color) { return 0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color) >= 127.5; } } From 7402e364000fd053b7ee08650a04a8559977ba41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=AD=87=E5=B0=94?= Date: Sun, 10 Jan 2021 16:54:25 +0430 Subject: [PATCH 086/122] Added new methods (features) Added 6 new very useful methods. 1. getScreenXDpi() which returns the Width (X) density in DPI. 2. getScreenYDpi() which returns the Height (Y) density in DPI. 3. calculateDistanceByX() which returns the distance between the given View's X (start point of View's width) and the screen width. 4. calculateDistanceByY() which returns the distance between the given View's Y (start point of View's height) and the screen height. 5. getViewX() which returns the X coordinate of the given View on the screen. 6. getViewY() which returns the Y coordinate of the given View on the screen. --- .../com/blankj/utilcode/util/ScreenUtils.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java index b5cad7ef99..cb742b7a7d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java @@ -112,6 +112,74 @@ public static float getScreenDensity() { public static int getScreenDensityDpi() { return Resources.getSystem().getDisplayMetrics().densityDpi; } + + + + + /** + * Return X (width) of the screen expressed as dots-per-inch. + * + * @return the width of screen density expressed as dots-per-inch + */ + public static int getScreenXDpi() { + return Resources.getSystem().getDisplayMetrics().xdpi; + } + + /** + * Return Y (height) of the screen expressed as dots-per-inch. + * + * @return the height of screen density expressed as dots-per-inch + */ + public static int getScreenYDpi() { + return Resources.getSystem().getDisplayMetrics().ydpi; + } + + + + /** + * Return the distance between the given View's X (start point of View's width) and the screen width. + * + * @return the distance between the given View's X (start point of View's width) and the screen width. + */ + public float calculateDistanceByX(View view) { + int[] point = new int[0]; + view.getLocationOnScreen(point); + return (getScreenWidth() - point[0]).toFloat(); + } + + /** + * Return the distance between the given View's Y (start point of View's height) and the screen height. + * + * @return the distance between the given View's Y (start point of View's height) and the screen height. + */ + public float calculateDistanceByY(View view) { + int[] point = new int[0]; + view.getLocationOnScreen(point); + return (getScreenHeight() - point[1]).toFloat(); + } + + /** + * Return the X coordinate of the given View on the screen. + * + * @return X coordinate of the given View on the screen. + */ + public int getViewX(View view){ + int[] point = new int[0]; + view.getLocationOnScreen(point); + return point[0]; + } + + /** + * Return the Y coordinate of the given View on the screen. + * + * @return Y coordinate of the given View on the screen. + */ + public int getViewY(View view){ + int[] point = new int[0]; + view.getLocationOnScreen(point); + return point[1]; + } + /** * Set full screen. From fd2d59aa451d0a1c038757d68e5387ef5c7d4230 Mon Sep 17 00:00:00 2001 From: yuruxuan <544324974@qq.com> Date: Mon, 1 Feb 2021 13:43:30 +0800 Subject: [PATCH 087/122] add environment variable --- .../com/blankj/utilcode/util/ShellUtils.java | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShellUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShellUtils.java index 1f2d50888b..a4f1e4fa81 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShellUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ShellUtils.java @@ -133,6 +133,21 @@ public static CommandResult execCmd(final String command, final boolean isRooted return execCmd(new String[]{command}, isRooted, true); } + /** + * Execute the command. + * + * @param command The command. + * @param envp The environment variable settings. + * @param isRooted True to use root, false otherwise. + * @return the single {@link CommandResult} instance + */ + public static CommandResult execCmd(final String command, final List envp, final boolean isRooted) { + return execCmd(new String[]{command}, + envp == null ? null : envp.toArray(new String[]{}), + isRooted, + true); + } + /** * Execute the command. * @@ -144,6 +159,23 @@ public static CommandResult execCmd(final List commands, final boolean i return execCmd(commands == null ? null : commands.toArray(new String[]{}), isRooted, true); } + /** + * Execute the command. + * + * @param commands The commands. + * @param envp The environment variable settings. + * @param isRooted True to use root, false otherwise. + * @return the single {@link CommandResult} instance + */ + public static CommandResult execCmd(final List commands, + final List envp, + final boolean isRooted) { + return execCmd(commands == null ? null : commands.toArray(new String[]{}), + envp == null ? null : envp.toArray(new String[]{}), + isRooted, + true); + } + /** * Execute the command. * @@ -169,6 +201,40 @@ public static CommandResult execCmd(final String command, return execCmd(new String[]{command}, isRooted, isNeedResultMsg); } + /** + * Execute the command. + * + * @param command The command. + * @param envp The environment variable settings. + * @param isRooted True to use root, false otherwise. + * @param isNeedResultMsg True to return the message of result, false otherwise. + * @return the single {@link CommandResult} instance + */ + public static CommandResult execCmd(final String command, + final List envp, + final boolean isRooted, + final boolean isNeedResultMsg) { + return execCmd(new String[]{command}, envp == null ? null : envp.toArray(new String[]{}), + isRooted, + isNeedResultMsg); + } + + /** + * Execute the command. + * + * @param command The command. + * @param envp The environment variable settings array. + * @param isRooted True to use root, false otherwise. + * @param isNeedResultMsg True to return the message of result, false otherwise. + * @return the single {@link CommandResult} instance + */ + public static CommandResult execCmd(final String command, + final String[] envp, + final boolean isRooted, + final boolean isNeedResultMsg) { + return execCmd(new String[]{command}, envp, isRooted, isNeedResultMsg); + } + /** * Execute the command. * @@ -196,6 +262,26 @@ public static CommandResult execCmd(final List commands, public static CommandResult execCmd(final String[] commands, final boolean isRooted, final boolean isNeedResultMsg) { + return execCmd(commands, null, isRooted, isNeedResultMsg); + } + + /** + * Execute the command. + * + * @param commands The commands. + * @param envp Array of strings, each element of which + * has environment variable settings in the format + * name=value, or + * null if the subprocess should inherit + * the environment of the current process. + * @param isRooted True to use root, false otherwise. + * @param isNeedResultMsg True to return the message of result, false otherwise. + * @return the single {@link CommandResult} instance + */ + public static CommandResult execCmd(final String[] commands, + final String[] envp, + final boolean isRooted, + final boolean isNeedResultMsg) { int result = -1; if (commands == null || commands.length == 0) { return new CommandResult(result, "", ""); @@ -207,7 +293,7 @@ public static CommandResult execCmd(final String[] commands, StringBuilder errorMsg = null; DataOutputStream os = null; try { - process = Runtime.getRuntime().exec(isRooted ? "su" : "sh"); + process = Runtime.getRuntime().exec(isRooted ? "su" : "sh", envp, null); os = new DataOutputStream(process.getOutputStream()); for (String command : commands) { if (command == null) continue; From 28f24faf597ef92771d97780eac7d8e69ad145a4 Mon Sep 17 00:00:00 2001 From: Blankj Date: Mon, 22 Feb 2021 00:07:51 +0800 Subject: [PATCH 088/122] see 02/22 log --- CHANGELOG.md | 2 + buildSrc/src/main/groovy/Config.groovy | 4 +- .../launcher/app/src/main/AndroidManifest.xml | 1 + .../java/com/blankj/main/pkg/MainActivity.kt | 4 +- .../utilcode/pkg/feature/api/ApiActivity.kt | 4 +- .../pkg/feature/clean/CleanActivity.kt | 7 +- .../pkg/feature/keyboard/KeyboardActivity.kt | 3 +- .../pkg/feature/language/LanguageActivity.kt | 3 + .../pkg/feature/phone/PhoneActivity.kt | 4 +- .../pkg/feature/toast/ToastActivity.kt | 3 + .../src/main/res/values-en-rUS/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 1 + .../pkg/src/main/res/values/strings.xml | 4 + .../java/com/blankj/base/BaseFragment.java | 2 +- .../com/blankj/subutil/util/BatteryUtils.java | 30 +- lib/utilcode/README-CN.md | 4 +- lib/utilcode/README.md | 4 +- .../utilcode/constant/RegexConstants.java | 11 +- .../blankj/utilcode/util/ActivityUtils.java | 29 +- .../utilcode/util/AdaptScreenUtils.java | 17 +- .../com/blankj/utilcode/util/ApiUtils.java | 6 +- .../com/blankj/utilcode/util/AppUtils.java | 56 +- .../com/blankj/utilcode/util/ArrayUtils.java | 529 +++++++++++------- .../com/blankj/utilcode/util/BarUtils.java | 20 +- .../blankj/utilcode/util/BrightnessUtils.java | 2 +- .../com/blankj/utilcode/util/BusUtils.java | 16 +- .../utilcode/util/CacheDiskStaticUtils.java | 100 ++-- .../utilcode/util/CacheDoubleUtils.java | 56 +- .../blankj/utilcode/util/FragmentUtils.java | 1 + .../com/blankj/utilcode/util/ImageUtils.java | 103 +++- .../com/blankj/utilcode/util/IntentUtils.java | 13 +- .../com/blankj/utilcode/util/PhoneUtils.java | 7 +- .../com/blankj/utilcode/util/RomUtils.java | 2 +- .../blankj/utilcode/util/SnackbarUtils.java | 16 +- .../com/blankj/utilcode/util/SpanUtils.java | 16 +- .../com/blankj/utilcode/util/StringUtils.java | 3 +- .../com/blankj/utilcode/util/ThreadUtils.java | 14 +- .../com/blankj/utilcode/util/ToastUtils.java | 145 +++-- .../util/UtilsActivityLifecycleImpl.java | 3 + .../com/blankj/utilcode/util/UtilsBridge.java | 7 +- .../main/res/xml/util_code_provider_paths.xml | 4 - .../utildebug/base/view/BaseContentView.java | 2 + 42 files changed, 854 insertions(+), 405 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 913ee7b7ad..14be8c6656 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +* `21/02/22` [add] Fix ToastUtils rtl bug. Publish v1.30.6. +* `20/11/16` [add] Add ImageUtils#save2Album support param of dirName. * `20/11/13` [add] Fix MessengerUtils ANR. Add NetworkUtils#getWifiScanResult, [add|remove]OnWifiChangedConsumer. Publish v1.30.5. * `20/10/29` [add] Fix MessengerUtils startService IllegalStateException. Publish v1.30.4. * `20/10/28` [add] Fix BusUtils ConcurrentModificationException. Publish v1.30.3. diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 1d9b9cd6cd..fd23def7b1 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -14,8 +14,8 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_030_005 - static versionName = '1.30.5'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_006 + static versionName = '1.30.6'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '3.5.0' diff --git a/feature/launcher/app/src/main/AndroidManifest.xml b/feature/launcher/app/src/main/AndroidManifest.xml index 19f6313965..4f033c06a6 100644 --- a/feature/launcher/app/src/main/AndroidManifest.xml +++ b/feature/launcher/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ android:allowBackup="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" + android:supportsRtl="true" android:theme="@style/AppTheme"> >( CommonItemClick(R.string.core_util, true) { - ApiUtils.getApi(UtilCodeApi::class.java).startUtilCodeActivity(this) + ApiUtils.getApi(UtilCodeApi::class.java)?.startUtilCodeActivity(this) }, CommonItemClick(R.string.sub_util, true) { - ApiUtils.getApi(SubUtilApi::class.java).startSubUtilActivity(this) + ApiUtils.getApi(SubUtilApi::class.java)?.startSubUtilActivity(this) } )) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/api/ApiActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/api/ApiActivity.kt index 0857ceaeac..8e11495b09 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/api/ApiActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/api/ApiActivity.kt @@ -35,10 +35,10 @@ class ApiActivity : CommonActivity() { override fun bindItems(): MutableList> { return CollectionUtils.newArrayList( CommonItemClick(R.string.api_invoke_with_params) { - ApiUtils.getApi(OtherModuleApi::class.java).invokeWithParams(OtherModuleApi.ApiBean("params")) + ApiUtils.getApi(OtherModuleApi::class.java)?.invokeWithParams(OtherModuleApi.ApiBean("params")) }, CommonItemClick(R.string.api_invoke_with_return_value) { - ToastUtils.showShort(ApiUtils.getApi(OtherModuleApi::class.java).invokeWithReturnValue().name) + ToastUtils.showShort(ApiUtils.getApi(OtherModuleApi::class.java)?.invokeWithReturnValue()?.name) } ); } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clean/CleanActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clean/CleanActivity.kt index 7185cc33cb..f0b8620eca 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clean/CleanActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/clean/CleanActivity.kt @@ -3,8 +3,6 @@ package com.blankj.utilcode.pkg.feature.clean import android.content.Context import android.content.Intent import com.blankj.common.activity.CommonActivity -import com.blankj.common.activity.CommonActivityItemsView -import com.blankj.common.activity.CommonActivityTitleView import com.blankj.common.item.CommonItem import com.blankj.common.item.CommonItemClick import com.blankj.utilcode.pkg.R @@ -54,6 +52,11 @@ class CleanActivity : CommonActivity() { showSnackbar(CleanUtils.cleanExternalCache(), externalCacheDir?.absolutePath) }) } + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { + add(CommonItemClick(R.string.clean_app_user_data) { + CleanUtils.cleanAppUserData() + }) + } } } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt index b94f66876f..5ed25ae4fe 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt @@ -10,8 +10,7 @@ import com.blankj.common.item.CommonItemClick import com.blankj.common.item.CommonItemTitle import com.blankj.utilcode.pkg.R import com.blankj.utilcode.pkg.helper.DialogHelper -import com.blankj.utilcode.util.CollectionUtils -import com.blankj.utilcode.util.KeyboardUtils +import com.blankj.utilcode.util.* import kotlinx.android.synthetic.main.keyboard_activity.* /** diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt index 0e14482b91..c928da21fa 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/language/LanguageActivity.kt @@ -60,6 +60,9 @@ class LanguageActivity : CommonActivity() { CommonItemClick(R.string.language_apply_english) { LanguageUtils.applyLanguage(Locale.ENGLISH, isRelaunchApp()) }, + CommonItemClick(R.string.language_apply_arabic) { + LanguageUtils.applyLanguage(Locale("ar"), isRelaunchApp()) + }, CommonItemClick(R.string.language_apply_system) { LanguageUtils.applySystemLanguage(isRelaunchApp()) } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt index cb453b3b89..c9b748cdfa 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt @@ -54,8 +54,8 @@ class PhoneActivity : CommonActivity() { CommonItemTitle("getSimOperatorName", PhoneUtils.getSimOperatorName()), CommonItemTitle("getSimOperatorByMnc", PhoneUtils.getSimOperatorByMnc()), - CommonItemClick(R.string.phone_dial) { PhoneUtils.dial("10000") }, - CommonItemClick(R.string.phone_call) { PhoneUtils.call("10000") }, + CommonItemClick(R.string.phone_dial) { PhoneUtils.dial("*10000#haha") }, + CommonItemClick(R.string.phone_call) { PhoneUtils.call("*10000#haha") }, CommonItemClick(R.string.phone_send_sms) { PhoneUtils.sendSms("10000", "sendSms") } ) } diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt index 5d55e3c754..bcb3eadfca 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/toast/ToastActivity.kt @@ -79,6 +79,9 @@ class ToastActivity : CommonActivity() { CommonItemClick(R.string.toast_show_middle) { ToastUtils.make().setGravity(Gravity.CENTER, 0, 0).show(R.string.toast_middle) }, + CommonItemClick(R.string.toast_show_top) { + ToastUtils.make().setGravity(Gravity.TOP or Gravity.CENTER_HORIZONTAL, 0, 0).show(R.string.toast_top) + }, CommonItemClick(R.string.toast_show_custom_view) { Thread(Runnable { CustomToast.showLong(R.string.toast_custom_view) }).start() }, diff --git a/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml b/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml index 414fa48424..20efc6c063 100644 --- a/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values-en-rUS/strings.xml @@ -6,6 +6,7 @@ Apply Simple Chinese Apply American Apply English + Apply Arabic Apply System \ No newline at end of file diff --git a/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml b/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml index 5cab96988f..e06759a6d0 100644 --- a/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values-zh-rCN/strings.xml @@ -6,6 +6,7 @@ 设置简体中文 设置美语 设置英语 + 设置阿拉伯语 设置系统语言 \ No newline at end of file diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml index ed7e15412f..ccec698647 100644 --- a/feature/utilcode/pkg/src/main/res/values/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml @@ -141,6 +141,7 @@ Clean Internal Databases Clean Internal SP Clean External Cache + cleanAppUserData Click View Scale Default @@ -233,6 +234,7 @@ Apply Simple Chinese Apply American Apply English + Apply Arabic Apply System @@ -341,6 +343,7 @@ Show Custom View Custom View Show Middle + Show Top Cancel Show Toast Dialog Show Toast When Start Activity @@ -351,6 +354,7 @@ Custom Bg Spannable String Middle + Top Add Listener Id diff --git a/lib/base/src/main/java/com/blankj/base/BaseFragment.java b/lib/base/src/main/java/com/blankj/base/BaseFragment.java index 2ff0a90913..354cb0e839 100644 --- a/lib/base/src/main/java/com/blankj/base/BaseFragment.java +++ b/lib/base/src/main/java/com/blankj/base/BaseFragment.java @@ -89,7 +89,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { } else { ft.show(this); } - ft.commitAllowingStateLoss(); + ft.commitNowAllowingStateLoss(); } Bundle bundle = getArguments(); initData(bundle); diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java index 0e2fc571b4..56e3f36c76 100644 --- a/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/BatteryUtils.java @@ -1,12 +1,14 @@ package com.blankj.subutil.util; -import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; +import android.os.Build; +import android.os.PowerManager; import android.support.annotation.IntDef; +import android.support.annotation.RequiresApi; import com.blankj.utilcode.util.ThreadUtils; import com.blankj.utilcode.util.Utils; @@ -37,6 +39,32 @@ public final class BatteryUtils { int FULL = BatteryManager.BATTERY_STATUS_FULL; } + /** + * Return whether the app is on the device's power whitelist. + * + * @return {@code true}: yes
    {@code false}: no + */ + @RequiresApi(api = Build.VERSION_CODES.M) + public static boolean isIgnoringBatteryOptimizations() { + return isIgnoringBatteryOptimizations(Utils.getApp().getPackageName()); + } + + /** + * Return whether the app is on the device's power whitelist. + * + * @return {@code true}: yes
    {@code false}: no + */ + @RequiresApi(api = Build.VERSION_CODES.M) + public static boolean isIgnoringBatteryOptimizations(String pkgName) { + try { + PowerManager pm = (PowerManager) Utils.getApp().getSystemService(Context.POWER_SERVICE); + //noinspection ConstantConditions + return pm.isIgnoringBatteryOptimizations(pkgName); + } catch (Exception e) { + return true; + } + } + /** * Register the status of battery changed listener. * diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index a50fef56c8..e8edeb5927 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.5' +implementation 'com.blankj:utilcode:1.30.6' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.5' +implementation 'com.blankj:utilcodex:1.30.6' ``` diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md index 55ad2d880a..63f7a83ba7 100644 --- a/lib/utilcode/README.md +++ b/lib/utilcode/README.md @@ -2,10 +2,10 @@ Gradle: ```groovy -implementation 'com.blankj:utilcode:1.30.5' +implementation 'com.blankj:utilcode:1.30.6' // if u use AndroidX, use the following -implementation 'com.blankj:utilcodex:1.30.5' +implementation 'com.blankj:utilcodex:1.30.6' ``` diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java index 2c85bf835f..02618da72b 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/constant/RegexConstants.java @@ -16,13 +16,14 @@ public final class RegexConstants { public static final String REGEX_MOBILE_SIMPLE = "^[1]\\d{10}$"; /** * Regex of exact mobile. - *

    china mobile: 134(0-8), 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 165, 172, 178, 182, 183, 184, 187, 188, 198

    - *

    china unicom: 130, 131, 132, 145, 155, 156, 166, 167, 171, 175, 176, 185, 186

    - *

    china telecom: 133, 153, 162, 173, 177, 180, 181, 189, 199, 191

    + *

    china mobile: 134(0-8), 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 165, 172, 178, 182, 183, 184, 187, 188, 195, 197, 198

    + *

    china unicom: 130, 131, 132, 145, 155, 156, 166, 167, 175, 176, 185, 186, 196

    + *

    china telecom: 133, 149, 153, 162, 173, 177, 180, 181, 189, 190, 191, 199

    + *

    china broadcasting: 192

    *

    global star: 1349

    - *

    virtual operator: 170

    + *

    virtual operator: 170, 171

    */ - public static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[57])|(15[0-35-9])|(16[2567])|(17[01235-8])|(18[0-9])|(19[189]))\\d{8}$"; + public static final String REGEX_MOBILE_EXACT = "^((13[0-9])|(14[579])|(15[0-35-9])|(16[2567])|(17[0-35-8])|(18[0-9])|(19[0-35-9]))\\d{8}$"; /** * Regex of telephone number. */ diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 5a185d47a1..cf902f085a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -44,7 +44,7 @@ private ActivityUtils() { * * @param callbacks The callbacks. */ - public static void addActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks callbacks) { + public static void addActivityLifecycleCallbacks(@Nullable final Utils.ActivityLifecycleCallbacks callbacks) { UtilsBridge.addActivityLifecycleCallbacks(callbacks); } @@ -54,8 +54,8 @@ public static void addActivityLifecycleCallbacks(final Utils.ActivityLifecycleCa * @param activity The activity. * @param callbacks The callbacks. */ - public static void addActivityLifecycleCallbacks(final Activity activity, - final Utils.ActivityLifecycleCallbacks callbacks) { + public static void addActivityLifecycleCallbacks(@Nullable final Activity activity, + @Nullable final Utils.ActivityLifecycleCallbacks callbacks) { UtilsBridge.addActivityLifecycleCallbacks(activity, callbacks); } @@ -64,7 +64,7 @@ public static void addActivityLifecycleCallbacks(final Activity activity, * * @param callbacks The callbacks. */ - public static void removeActivityLifecycleCallbacks(final Utils.ActivityLifecycleCallbacks callbacks) { + public static void removeActivityLifecycleCallbacks(@Nullable final Utils.ActivityLifecycleCallbacks callbacks) { UtilsBridge.removeActivityLifecycleCallbacks(callbacks); } @@ -73,7 +73,7 @@ public static void removeActivityLifecycleCallbacks(final Utils.ActivityLifecycl * * @param activity The activity. */ - public static void removeActivityLifecycleCallbacks(final Activity activity) { + public static void removeActivityLifecycleCallbacks(@Nullable final Activity activity) { UtilsBridge.removeActivityLifecycleCallbacks(activity); } @@ -83,8 +83,8 @@ public static void removeActivityLifecycleCallbacks(final Activity activity) { * @param activity The activity. * @param callbacks The callbacks. */ - public static void removeActivityLifecycleCallbacks(final Activity activity, - final Utils.ActivityLifecycleCallbacks callbacks) { + public static void removeActivityLifecycleCallbacks(@Nullable final Activity activity, + @Nullable final Utils.ActivityLifecycleCallbacks callbacks) { UtilsBridge.removeActivityLifecycleCallbacks(activity, callbacks); } @@ -94,13 +94,15 @@ public static void removeActivityLifecycleCallbacks(final Activity activity, * @param context The context. * @return the activity by context. */ - public static Activity getActivityByContext(Context context) { + @Nullable + public static Activity getActivityByContext(@NonNull Context context) { Activity activity = getActivityByContextInner(context); if (!isActivityAlive(activity)) return null; return activity; } - private static Activity getActivityByContextInner(Context context) { + @Nullable + private static Activity getActivityByContextInner(@Nullable Context context) { if (context == null) return null; List list = new ArrayList<>(); while (context instanceof ContextWrapper) { @@ -122,7 +124,8 @@ private static Activity getActivityByContextInner(Context context) { return null; } - private static Activity getActivityFromDecorContext(Context context) { + @Nullable + private static Activity getActivityFromDecorContext(@Nullable Context context) { if (context == null) return null; if (context.getClass().getName().equals("com.android.internal.policy.DecorContext")) { try { @@ -1906,6 +1909,7 @@ public static void finishAllActivitiesExceptNewest(@AnimRes final int enterAnim, * @param activity The activity. * @return the icon of activity */ + @Nullable public static Drawable getActivityIcon(@NonNull final Activity activity) { return getActivityIcon(activity.getComponentName()); } @@ -1916,6 +1920,7 @@ public static Drawable getActivityIcon(@NonNull final Activity activity) { * @param clz The activity class. * @return the icon of activity */ + @Nullable public static Drawable getActivityIcon(@NonNull final Class clz) { return getActivityIcon(new ComponentName(Utils.getApp(), clz)); } @@ -1926,6 +1931,7 @@ public static Drawable getActivityIcon(@NonNull final Class * @param activityName The name of activity. * @return the icon of activity */ + @Nullable public static Drawable getActivityIcon(@NonNull final ComponentName activityName) { PackageManager pm = Utils.getApp().getPackageManager(); try { @@ -1942,6 +1948,7 @@ public static Drawable getActivityIcon(@NonNull final ComponentName activityName * @param activity The activity. * @return the logo of activity */ + @Nullable public static Drawable getActivityLogo(@NonNull final Activity activity) { return getActivityLogo(activity.getComponentName()); } @@ -1952,6 +1959,7 @@ public static Drawable getActivityLogo(@NonNull final Activity activity) { * @param clz The activity class. * @return the logo of activity */ + @Nullable public static Drawable getActivityLogo(@NonNull final Class clz) { return getActivityLogo(new ComponentName(Utils.getApp(), clz)); } @@ -1962,6 +1970,7 @@ public static Drawable getActivityLogo(@NonNull final Class * @param activityName The name of activity. * @return the logo of activity */ + @Nullable public static Drawable getActivityLogo(@NonNull final ComponentName activityName) { PackageManager pm = Utils.getApp().getPackageManager(); try { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java index 3a5ec1f12b..1bf781d5d4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AdaptScreenUtils.java @@ -1,6 +1,7 @@ package com.blankj.utilcode.util; import android.content.res.Resources; +import android.support.annotation.NonNull; import android.util.DisplayMetrics; import java.lang.reflect.Field; @@ -26,7 +27,8 @@ private AdaptScreenUtils() { /** * Adapt for the horizontal screen, and call it in {@link android.app.Activity#getResources()}. */ - public static Resources adaptWidth(final Resources resources, final int designWidth) { + @NonNull + public static Resources adaptWidth(@NonNull final Resources resources, final int designWidth) { float newXdpi = (resources.getDisplayMetrics().widthPixels * 72f) / designWidth; applyDisplayMetrics(resources, newXdpi); return resources; @@ -35,14 +37,16 @@ public static Resources adaptWidth(final Resources resources, final int designWi /** * Adapt for the vertical screen, and call it in {@link android.app.Activity#getResources()}. */ - public static Resources adaptHeight(final Resources resources, final int designHeight) { + @NonNull + public static Resources adaptHeight(@NonNull final Resources resources, final int designHeight) { return adaptHeight(resources, designHeight, false); } /** * Adapt for the vertical screen, and call it in {@link android.app.Activity#getResources()}. */ - public static Resources adaptHeight(final Resources resources, final int designHeight, final boolean includeNavBar) { + @NonNull + public static Resources adaptHeight(@NonNull final Resources resources, final int designHeight, final boolean includeNavBar) { float screenHeight = (resources.getDisplayMetrics().heightPixels + (includeNavBar ? getNavBarHeight(resources) : 0)) * 72f; float newXdpi = screenHeight / designHeight; @@ -50,7 +54,7 @@ public static Resources adaptHeight(final Resources resources, final int designH return resources; } - private static int getNavBarHeight(final Resources resources) { + private static int getNavBarHeight(@NonNull final Resources resources) { int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId != 0) { return resources.getDimensionPixelSize(resourceId); @@ -63,7 +67,8 @@ private static int getNavBarHeight(final Resources resources) { * @param resources The resources. * @return the resource */ - public static Resources closeAdapt(final Resources resources) { + @NonNull + public static Resources closeAdapt(@NonNull final Resources resources) { float newXdpi = Resources.getSystem().getDisplayMetrics().density * 72f; applyDisplayMetrics(resources, newXdpi); return resources; @@ -91,7 +96,7 @@ public static int px2Pt(final float pxValue) { return (int) (pxValue * 72 / metrics.xdpi + 0.5); } - private static void applyDisplayMetrics(final Resources resources, final float newXdpi) { + private static void applyDisplayMetrics(@NonNull final Resources resources, final float newXdpi) { resources.getDisplayMetrics().xdpi = newXdpi; Utils.getApp().getResources().getDisplayMetrics().xdpi = newXdpi; applyOtherDisplayMetrics(resources, newXdpi); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java index f99bc77f19..d2a08bd812 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ApiUtils.java @@ -1,6 +1,7 @@ package com.blankj.utilcode.util; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.util.Log; import java.lang.annotation.ElementType; @@ -47,14 +48,17 @@ private void registerImpl(Class implClass) { * @param The type. * @return the api */ + @Nullable public static T getApi(@NonNull final Class apiClass) { return getInstance().getApiInner(apiClass); } - public static void register(Class implClass) { + public static void register(@Nullable Class implClass) { + if (implClass == null) return; getInstance().registerImpl(implClass); } + @NonNull public static String toString_() { return getInstance().toString(); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index b4884a3442..a8b65dfecf 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -13,6 +13,7 @@ import android.net.Uri; import android.os.Build; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.util.Log; import java.io.File; @@ -143,8 +144,14 @@ public static boolean isAppDebug() { */ public static boolean isAppDebug(final String packageName) { if (UtilsBridge.isSpace(packageName)) return false; - ApplicationInfo ai = Utils.getApp().getApplicationInfo(); - return ai != null && (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; + try { + PackageManager pm = Utils.getApp().getPackageManager(); + ApplicationInfo ai = pm.getApplicationInfo(packageName, 0); + return (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + return false; + } } /** @@ -167,7 +174,7 @@ public static boolean isAppSystem(final String packageName) { try { PackageManager pm = Utils.getApp().getPackageManager(); ApplicationInfo ai = pm.getApplicationInfo(packageName, 0); - return ai != null && (ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0; + return (ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return false; @@ -203,8 +210,6 @@ public static boolean isAppForeground(@NonNull final String pkgName) { */ public static boolean isAppRunning(final String pkgName) { if (UtilsBridge.isSpace(pkgName)) return false; - ApplicationInfo ai = Utils.getApp().getApplicationInfo(); - int uid = ai.uid; ActivityManager am = (ActivityManager) Utils.getApp().getSystemService(Context.ACTIVITY_SERVICE); if (am != null) { List taskInfo = am.getRunningTasks(Integer.MAX_VALUE); @@ -220,7 +225,7 @@ public static boolean isAppRunning(final String pkgName) { List serviceInfo = am.getRunningServices(Integer.MAX_VALUE); if (serviceInfo != null && serviceInfo.size() > 0) { for (ActivityManager.RunningServiceInfo aInfo : serviceInfo) { - if (uid == aInfo.uid) { + if (pkgName.equals(aInfo.service.getPackageName())) { return true; } } @@ -328,6 +333,7 @@ public static void exitApp() { * * @return the application's icon */ + @Nullable public static Drawable getAppIcon() { return getAppIcon(Utils.getApp().getPackageName()); } @@ -338,6 +344,7 @@ public static Drawable getAppIcon() { * @param packageName The name of the package. * @return the application's icon */ + @Nullable public static Drawable getAppIcon(final String packageName) { if (UtilsBridge.isSpace(packageName)) return null; try { @@ -382,6 +389,7 @@ public static int getAppIconId(final String packageName) { * * @return the application's package name */ + @NonNull public static String getAppPackageName() { return Utils.getApp().getPackageName(); } @@ -391,6 +399,7 @@ public static String getAppPackageName() { * * @return the application's name */ + @NonNull public static String getAppName() { return getAppName(Utils.getApp().getPackageName()); } @@ -401,12 +410,13 @@ public static String getAppName() { * @param packageName The name of the package. * @return the application's name */ + @NonNull public static String getAppName(final String packageName) { if (UtilsBridge.isSpace(packageName)) return ""; try { PackageManager pm = Utils.getApp().getPackageManager(); PackageInfo pi = pm.getPackageInfo(packageName, 0); - return pi == null ? null : pi.applicationInfo.loadLabel(pm).toString(); + return pi == null ? "" : pi.applicationInfo.loadLabel(pm).toString(); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return ""; @@ -418,6 +428,7 @@ public static String getAppName(final String packageName) { * * @return the application's path */ + @NonNull public static String getAppPath() { return getAppPath(Utils.getApp().getPackageName()); } @@ -428,12 +439,13 @@ public static String getAppPath() { * @param packageName The name of the package. * @return the application's path */ + @NonNull public static String getAppPath(final String packageName) { if (UtilsBridge.isSpace(packageName)) return ""; try { PackageManager pm = Utils.getApp().getPackageManager(); PackageInfo pi = pm.getPackageInfo(packageName, 0); - return pi == null ? null : pi.applicationInfo.sourceDir; + return pi == null ? "" : pi.applicationInfo.sourceDir; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return ""; @@ -445,6 +457,7 @@ public static String getAppPath(final String packageName) { * * @return the application's version name */ + @NonNull public static String getAppVersionName() { return getAppVersionName(Utils.getApp().getPackageName()); } @@ -455,12 +468,13 @@ public static String getAppVersionName() { * @param packageName The name of the package. * @return the application's version name */ + @NonNull public static String getAppVersionName(final String packageName) { if (UtilsBridge.isSpace(packageName)) return ""; try { PackageManager pm = Utils.getApp().getPackageManager(); PackageInfo pi = pm.getPackageInfo(packageName, 0); - return pi == null ? null : pi.versionName; + return pi == null ? "" : pi.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return ""; @@ -499,6 +513,7 @@ public static int getAppVersionCode(final String packageName) { * * @return the application's signature */ + @Nullable public static Signature[] getAppSignatures() { return getAppSignatures(Utils.getApp().getPackageName()); } @@ -509,6 +524,7 @@ public static Signature[] getAppSignatures() { * @param packageName The name of the package. * @return the application's signature */ + @Nullable public static Signature[] getAppSignatures(final String packageName) { if (UtilsBridge.isSpace(packageName)) return null; try { @@ -541,6 +557,7 @@ public static Signature[] getAppSignatures(final String packageName) { * @param file The file. * @return the application's signature */ + @Nullable public static Signature[] getAppSignatures(final File file) { if (file == null) return null; PackageManager pm = Utils.getApp().getPackageManager(); @@ -567,6 +584,7 @@ public static Signature[] getAppSignatures(final File file) { * * @return the application's signature for SHA1 value */ + @NonNull public static List getAppSignaturesSHA1() { return getAppSignaturesSHA1(Utils.getApp().getPackageName()); } @@ -577,6 +595,7 @@ public static List getAppSignaturesSHA1() { * @param packageName The name of the package. * @return the application's signature for SHA1 value */ + @NonNull public static List getAppSignaturesSHA1(final String packageName) { return getAppSignaturesHash(packageName, "SHA1"); } @@ -586,6 +605,7 @@ public static List getAppSignaturesSHA1(final String packageName) { * * @return the application's signature for SHA256 value */ + @NonNull public static List getAppSignaturesSHA256() { return getAppSignaturesSHA256(Utils.getApp().getPackageName()); } @@ -596,6 +616,7 @@ public static List getAppSignaturesSHA256() { * @param packageName The name of the package. * @return the application's signature for SHA256 value */ + @NonNull public static List getAppSignaturesSHA256(final String packageName) { return getAppSignaturesHash(packageName, "SHA256"); } @@ -605,6 +626,7 @@ public static List getAppSignaturesSHA256(final String packageName) { * * @return the application's signature for MD5 value */ + @NonNull public static List getAppSignaturesMD5() { return getAppSignaturesMD5(Utils.getApp().getPackageName()); } @@ -615,6 +637,7 @@ public static List getAppSignaturesMD5() { * @param packageName The name of the package. * @return the application's signature for MD5 value */ + @NonNull public static List getAppSignaturesMD5(final String packageName) { return getAppSignaturesHash(packageName, "MD5"); } @@ -670,6 +693,7 @@ private static List getAppSignaturesHash(final String packageName, final * * @return the application's information */ + @Nullable public static AppInfo getAppInfo() { return getAppInfo(Utils.getApp().getPackageName()); } @@ -689,6 +713,7 @@ public static AppInfo getAppInfo() { * @param packageName The name of the package. * @return the application's information */ + @Nullable public static AppInfo getAppInfo(final String packageName) { try { PackageManager pm = Utils.getApp().getPackageManager(); @@ -705,6 +730,7 @@ public static AppInfo getAppInfo(final String packageName) { * * @return the applications' information */ + @NonNull public static List getAppsInfo() { List list = new ArrayList<>(); PackageManager pm = Utils.getApp().getPackageManager(); @@ -723,6 +749,7 @@ public static List getAppsInfo() { * * @return the application's package information */ + @Nullable public static AppUtils.AppInfo getApkInfo(final File apkFile) { if (apkFile == null || !apkFile.isFile() || !apkFile.exists()) return null; return getApkInfo(apkFile.getAbsolutePath()); @@ -733,6 +760,7 @@ public static AppUtils.AppInfo getApkInfo(final File apkFile) { * * @return the application's package information */ + @Nullable public static AppUtils.AppInfo getApkInfo(final String apkFilePath) { if (UtilsBridge.isSpace(apkFilePath)) return null; PackageManager pm = Utils.getApp().getPackageManager(); @@ -747,13 +775,16 @@ public static AppUtils.AppInfo getApkInfo(final String apkFilePath) { private static AppInfo getBean(final PackageManager pm, final PackageInfo pi) { if (pi == null) return null; - ApplicationInfo ai = pi.applicationInfo; + String versionName = pi.versionName; + int versionCode = pi.versionCode; String packageName = pi.packageName; + ApplicationInfo ai = pi.applicationInfo; + if (ai == null) { + return new AppInfo(packageName, "", null, "", versionName, versionCode, false); + } String name = ai.loadLabel(pm).toString(); Drawable icon = ai.loadIcon(pm); String packagePath = ai.sourceDir; - String versionName = pi.versionName; - int versionCode = pi.versionCode; boolean isSystem = (ApplicationInfo.FLAG_SYSTEM & ai.flags) != 0; return new AppInfo(packageName, name, icon, packagePath, versionName, versionCode, isSystem); } @@ -839,6 +870,7 @@ public AppInfo(String packageName, String name, Drawable icon, String packagePat } @Override + @NonNull public String toString() { return "{" + "\n pkg name: " + getPackageName() + diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ArrayUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ArrayUtils.java index 08b6142276..5ab5c431fd 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ArrayUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ArrayUtils.java @@ -1,5 +1,8 @@ package com.blankj.utilcode.util; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; + import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; @@ -30,39 +33,47 @@ private ArrayUtils() { * @param array The array. * @return a new array only of those given elements. */ - @SafeVarargs + @NonNull public static T[] newArray(T... array) { return array; } + @NonNull public static long[] newLongArray(long... array) { return array; } + @NonNull public static int[] newIntArray(int... array) { return array; } + @NonNull public static short[] newShortArray(short... array) { return array; } + @NonNull public static char[] newCharArray(char... array) { return array; } + @NonNull public static byte[] newByteArray(byte... array) { return array; } + @NonNull public static double[] newDoubleArray(double... array) { return array; } + @NonNull public static float[] newFloatArray(float... array) { return array; } + @NonNull public static boolean[] newBooleanArray(boolean... array) { return array; } @@ -73,7 +84,7 @@ public static boolean[] newBooleanArray(boolean... array) { * @param array The array. * @return {@code true}: yes
    {@code false}: no */ - public static boolean isEmpty(Object array) { + public static boolean isEmpty(@Nullable Object array) { return getLength(array) == 0; } @@ -83,12 +94,12 @@ public static boolean isEmpty(Object array) { * @param array The array. * @return the size of array */ - public static int getLength(Object array) { + public static int getLength(@Nullable Object array) { if (array == null) return 0; return Array.getLength(array); } - public static boolean isSameLength(Object array1, Object array2) { + public static boolean isSameLength(@Nullable Object array1, @Nullable Object array2) { return getLength(array1) == getLength(array2); } @@ -99,7 +110,8 @@ public static boolean isSameLength(Object array1, Object array2) { * @param index The index into the array. * @return the value of the specified index of the array */ - public static Object get(Object array, int index) { + @Nullable + public static Object get(@Nullable Object array, int index) { return get(array, index, null); } @@ -111,7 +123,8 @@ public static Object get(Object array, int index) { * @param defaultValue The default value. * @return the value of the specified index of the array */ - public static Object get(Object array, int index, Object defaultValue) { + @Nullable + public static Object get(@Nullable Object array, int index, @Nullable Object defaultValue) { if (array == null) return defaultValue; try { return Array.get(array, index); @@ -127,7 +140,7 @@ public static Object get(Object array, int index, Object defaultValue) { * @param index The index into the array. * @param value The new value of the indexed component. */ - public static void set(Object array, int index, Object value) { + public static void set(@Nullable Object array, int index, @Nullable Object value) { if (array == null) return; Array.set(array, index, value); } @@ -139,7 +152,7 @@ public static void set(Object array, int index, Object value) { * @param a2 The other array. * @return {@code true}: yes
    {@code false}: no */ - public static boolean equals(Object[] a, Object[] a2) { + public static boolean equals(@Nullable Object[] a, @Nullable Object[] a2) { return Arrays.deepEquals(a, a2); } @@ -344,52 +357,62 @@ public static void reverse(boolean[] array) { * @param array the array to shallow clone, may be null * @return the cloned array, null if null input */ - public static T[] copy(T[] array) { + @Nullable + public static T[] copy(@Nullable T[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static long[] copy(long[] array) { + @Nullable + public static long[] copy(@Nullable long[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static int[] copy(int[] array) { + @Nullable + public static int[] copy(@Nullable int[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static short[] copy(short[] array) { + @Nullable + public static short[] copy(@Nullable short[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static char[] copy(char[] array) { + @Nullable + public static char[] copy(@Nullable char[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static byte[] copy(byte[] array) { + @Nullable + public static byte[] copy(@Nullable byte[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static double[] copy(double[] array) { + @Nullable + public static double[] copy(@Nullable double[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static float[] copy(float[] array) { + @Nullable + public static float[] copy(@Nullable float[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - public static boolean[] copy(boolean[] array) { + @Nullable + public static boolean[] copy(@Nullable boolean[] array) { if (array == null) return null; return subArray(array, 0, array.length); } - private static Object realCopy(Object array) { + @Nullable + private static Object realCopy(@Nullable Object array) { if (array == null) return null; return realSubArray(array, 0, getLength(array)); } @@ -398,44 +421,54 @@ private static Object realCopy(Object array) { // subArray /////////////////////////////////////////////////////////////////////////// - public static T[] subArray(T[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static T[] subArray(@Nullable T[] array, int startIndexInclusive, int endIndexExclusive) { //noinspection unchecked return (T[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static long[] subArray(long[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static long[] subArray(@Nullable long[] array, int startIndexInclusive, int endIndexExclusive) { return (long[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static int[] subArray(int[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static int[] subArray(@Nullable int[] array, int startIndexInclusive, int endIndexExclusive) { return (int[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static short[] subArray(short[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static short[] subArray(@Nullable short[] array, int startIndexInclusive, int endIndexExclusive) { return (short[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static char[] subArray(char[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static char[] subArray(@Nullable char[] array, int startIndexInclusive, int endIndexExclusive) { return (char[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static byte[] subArray(byte[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static byte[] subArray(@Nullable byte[] array, int startIndexInclusive, int endIndexExclusive) { return (byte[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static double[] subArray(double[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static double[] subArray(@Nullable double[] array, int startIndexInclusive, int endIndexExclusive) { return (double[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static float[] subArray(float[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static float[] subArray(@Nullable float[] array, int startIndexInclusive, int endIndexExclusive) { return (float[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - public static boolean[] subArray(boolean[] array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + public static boolean[] subArray(@Nullable boolean[] array, int startIndexInclusive, int endIndexExclusive) { return (boolean[]) realSubArray(array, startIndexInclusive, endIndexExclusive); } - private static Object realSubArray(Object array, int startIndexInclusive, int endIndexExclusive) { + @Nullable + private static Object realSubArray(@Nullable Object array, int startIndexInclusive, int endIndexExclusive) { if (array == null) { return null; } @@ -482,44 +515,54 @@ private static Object realSubArray(Object array, int startIndexInclusive, int en * @param element the object to realAdd * @return A new array containing the existing elements plus the new element */ - public static T[] add(T[] array, T element) { + @NonNull + public static T[] add(@Nullable T[] array, @Nullable T element) { Class type = array != null ? array.getClass() : (element != null ? element.getClass() : Object.class); return (T[]) realAddOne(array, element, type); } - public static boolean[] add(boolean[] array, boolean element) { + @NonNull + public static boolean[] add(@Nullable boolean[] array, boolean element) { return (boolean[]) realAddOne(array, element, Boolean.TYPE); } - public static byte[] add(byte[] array, byte element) { + @NonNull + public static byte[] add(@Nullable byte[] array, byte element) { return (byte[]) realAddOne(array, element, Byte.TYPE); } - public static char[] add(char[] array, char element) { + @NonNull + public static char[] add(@Nullable char[] array, char element) { return (char[]) realAddOne(array, element, Character.TYPE); } - public static double[] add(double[] array, double element) { + @NonNull + public static double[] add(@Nullable double[] array, double element) { return (double[]) realAddOne(array, element, Double.TYPE); } - public static float[] add(float[] array, float element) { + @NonNull + public static float[] add(@Nullable float[] array, float element) { return (float[]) realAddOne(array, element, Float.TYPE); } - public static int[] add(int[] array, int element) { + @NonNull + public static int[] add(@Nullable int[] array, int element) { return (int[]) realAddOne(array, element, Integer.TYPE); } - public static long[] add(long[] array, long element) { + @NonNull + public static long[] add(@Nullable long[] array, long element) { return (long[]) realAddOne(array, element, Long.TYPE); } - public static short[] add(short[] array, short element) { + @NonNull + public static short[] add(@Nullable short[] array, short element) { return (short[]) realAddOne(array, element, Short.TYPE); } - private static Object realAddOne(Object array, Object element, Class newArrayComponentType) { + @NonNull + private static Object realAddOne(@Nullable Object array, @Nullable Object element, Class newArrayComponentType) { Object newArray; int arrayLength = 0; if (array != null) { @@ -553,43 +596,52 @@ private static Object realAddOne(Object array, Object element, Class newArrayCom * @return The new array, null if null array inputs. * The type of the new array is the type of the first array. */ - public static T[] add(T[] array1, T[] array2) { + @Nullable + public static T[] add(@Nullable T[] array1, @Nullable T[] array2) { return (T[]) realAddArr(array1, array2); } - public static boolean[] add(boolean[] array1, boolean[] array2) { + @Nullable + public static boolean[] add(@Nullable boolean[] array1, @Nullable boolean[] array2) { return (boolean[]) realAddArr(array1, array2); } - public static char[] add(char[] array1, char[] array2) { + @Nullable + public static char[] add(@Nullable char[] array1, @Nullable char[] array2) { return (char[]) realAddArr(array1, array2); } - public static byte[] add(byte[] array1, byte[] array2) { + @Nullable + public static byte[] add(@Nullable byte[] array1, @Nullable byte[] array2) { return (byte[]) realAddArr(array1, array2); } - public static short[] add(short[] array1, short[] array2) { + @Nullable + public static short[] add(@Nullable short[] array1, @Nullable short[] array2) { return (short[]) realAddArr(array1, array2); } - public static int[] add(int[] array1, int[] array2) { + @Nullable + public static int[] add(@Nullable int[] array1, @Nullable int[] array2) { return (int[]) realAddArr(array1, array2); } - public static long[] add(long[] array1, long[] array2) { + @Nullable + public static long[] add(@Nullable long[] array1, @Nullable long[] array2) { return (long[]) realAddArr(array1, array2); } - public static float[] add(float[] array1, float[] array2) { + @Nullable + public static float[] add(@Nullable float[] array1, @Nullable float[] array2) { return (float[]) realAddArr(array1, array2); } - public static double[] add(double[] array1, double[] array2) { + @Nullable + public static double[] add(@Nullable double[] array1, @Nullable double[] array2) { return (double[]) realAddArr(array1, array2); } - private static Object realAddArr(Object array1, Object array2) { + private static Object realAddArr(@Nullable Object array1, @Nullable Object array2) { if (array1 == null && array2 == null) return null; if (array1 == null) { return realCopy(array2); @@ -619,11 +671,11 @@ private static Object realAddArr(Object array1, Object array2) { * whose component type is the same as the element.

    * *
    -     * ArrayUtils.add(null, 0, null)      = [null]
    -     * ArrayUtils.add(null, 0, "a")       = ["a"]
    -     * ArrayUtils.add(["a"], 1, null)     = ["a", null]
    -     * ArrayUtils.add(["a"], 1, "b")      = ["a", "b"]
    -     * ArrayUtils.add(["a", "b"], 3, "c") = ["a", "b", "c"]
    +     * ArrayUtils.add(null, 0, null)        = null
    +     * ArrayUtils.add(null, 0, ["a"])       = ["a"]
    +     * ArrayUtils.add(["a"], 1, null)       = ["a"]
    +     * ArrayUtils.add(["a"], 1, ["b"])      = ["a", "b"]
    +     * ArrayUtils.add(["a", "b"], 2, ["c"]) = ["a", "b", "c"]
          * 
    * * @param array1 the array to realAdd the element to, may be null @@ -633,51 +685,76 @@ private static Object realAddArr(Object array1, Object array2) { * @throws IndexOutOfBoundsException if the index is out of range * (index < 0 || index > array.length). */ - public static T[] add(T[] array1, int index, T[] array2) { + @Nullable + public static T[] add(@Nullable T[] array1, int index, @Nullable T[] array2) { Class clss; if (array1 != null) { clss = array1.getClass().getComponentType(); } else if (array2 != null) { clss = array2.getClass().getComponentType(); } else { - return (T[]) new Object[]{null}; + return null; } return (T[]) realAddArr(array1, index, array2, clss); } - public static boolean[] add(boolean[] array1, int index, boolean[] array2) { - return (boolean[]) realAddArr(array1, index, array2, Boolean.TYPE); + @Nullable + public static boolean[] add(@Nullable boolean[] array1, int index, @Nullable boolean[] array2) { + Object result = realAddArr(array1, index, array2, Boolean.TYPE); + if (result == null) return null; + return (boolean[]) result; } - public static char[] add(char[] array1, int index, char[] array2) { - return (char[]) realAddArr(array1, index, array2, Character.TYPE); + public static char[] add(@Nullable char[] array1, int index, @Nullable char[] array2) { + Object result = realAddArr(array1, index, array2, Character.TYPE); + if (result == null) return null; + return (char[]) result; } - public static byte[] add(byte[] array1, int index, byte[] array2) { - return (byte[]) realAddArr(array1, index, array2, Byte.TYPE); + @Nullable + public static byte[] add(@Nullable byte[] array1, int index, @Nullable byte[] array2) { + Object result = realAddArr(array1, index, array2, Byte.TYPE); + if (result == null) return null; + return (byte[]) result; } - public static short[] add(short[] array1, int index, short[] array2) { - return (short[]) realAddArr(array1, index, array2, Short.TYPE); + @Nullable + public static short[] add(@Nullable short[] array1, int index, @Nullable short[] array2) { + Object result = realAddArr(array1, index, array2, Short.TYPE); + if (result == null) return null; + return (short[]) result; } - public static int[] add(int[] array1, int index, int[] array2) { - return (int[]) realAddArr(array1, index, array2, Integer.TYPE); + @Nullable + public static int[] add(@Nullable int[] array1, int index, @Nullable int[] array2) { + Object result = realAddArr(array1, index, array2, Integer.TYPE); + if (result == null) return null; + return (int[]) result; } - public static long[] add(long[] array1, int index, long[] array2) { - return (long[]) realAddArr(array1, index, array2, Long.TYPE); + @Nullable + public static long[] add(@Nullable long[] array1, int index, @Nullable long[] array2) { + Object result = realAddArr(array1, index, array2, Long.TYPE); + if (result == null) return null; + return (long[]) result; } - public static float[] add(float[] array1, int index, float[] array2) { - return (float[]) realAddArr(array1, index, array2, Float.TYPE); + @Nullable + public static float[] add(@Nullable float[] array1, int index, @Nullable float[] array2) { + Object result = realAddArr(array1, index, array2, Float.TYPE); + if (result == null) return null; + return (float[]) result; } - public static double[] add(double[] array1, int index, double[] array2) { - return (double[]) realAddArr(array1, index, array2, Double.TYPE); + @Nullable + public static double[] add(@Nullable double[] array1, int index, @Nullable double[] array2) { + Object result = realAddArr(array1, index, array2, Double.TYPE); + if (result == null) return null; + return (double[]) result; } - private static Object realAddArr(Object array1, int index, Object array2, Class clss) { + @Nullable + private static Object realAddArr(@Nullable Object array1, int index, @Nullable Object array2, Class clss) { if (array1 == null && array2 == null) return null; int len1 = getLength(array1); int len2 = getLength(array2); @@ -736,7 +813,8 @@ private static Object realAddArr(Object array1, int index, Object array2, Class * @throws IndexOutOfBoundsException if the index is out of range * (index < 0 || index > array.length). */ - public static T[] add(T[] array, int index, T element) { + @NonNull + public static T[] add(@Nullable T[] array, int index, @Nullable T element) { Class clss; if (array != null) { clss = array.getClass().getComponentType(); @@ -748,39 +826,48 @@ public static T[] add(T[] array, int index, T element) { return (T[]) realAdd(array, index, element, clss); } - public static boolean[] add(boolean[] array, int index, boolean element) { + @NonNull + public static boolean[] add(@Nullable boolean[] array, int index, boolean element) { return (boolean[]) realAdd(array, index, element, Boolean.TYPE); } - public static char[] add(char[] array, int index, char element) { + @NonNull + public static char[] add(@Nullable char[] array, int index, char element) { return (char[]) realAdd(array, index, element, Character.TYPE); } - public static byte[] add(byte[] array, int index, byte element) { + @NonNull + public static byte[] add(@Nullable byte[] array, int index, byte element) { return (byte[]) realAdd(array, index, element, Byte.TYPE); } - public static short[] add(short[] array, int index, short element) { + @NonNull + public static short[] add(@Nullable short[] array, int index, short element) { return (short[]) realAdd(array, index, element, Short.TYPE); } - public static int[] add(int[] array, int index, int element) { + @NonNull + public static int[] add(@Nullable int[] array, int index, int element) { return (int[]) realAdd(array, index, element, Integer.TYPE); } - public static long[] add(long[] array, int index, long element) { + @NonNull + public static long[] add(@Nullable long[] array, int index, long element) { return (long[]) realAdd(array, index, element, Long.TYPE); } - public static float[] add(float[] array, int index, float element) { + @NonNull + public static float[] add(@Nullable float[] array, int index, float element) { return (float[]) realAdd(array, index, element, Float.TYPE); } - public static double[] add(double[] array, int index, double element) { + @NonNull + public static double[] add(@Nullable double[] array, int index, double element) { return (double[]) realAdd(array, index, element, Double.TYPE); } - private static Object realAdd(Object array, int index, Object element, Class clss) { + @NonNull + private static Object realAdd(@Nullable Object array, int index, @Nullable Object element, Class clss) { if (array == null) { if (index != 0) { throw new IndexOutOfBoundsException("Index: " + index + ", Length: 0"); @@ -826,15 +913,16 @@ private static Object realAdd(Object array, int index, Object element, Class cls * ArrayUtils.remove(["a", "b", "c"], 1) = ["a", "c"] * * - * @param array the array to remove the element from, may not be null + * @param array the array to remove the element from, may be null * @param index the position of the element to be removed * @return A new array containing the existing elements except the element * at the specified position. * @throws IndexOutOfBoundsException if the index is out of range - * (index < 0 || index >= array.length), or if the array is null. - * @since 2.1 + * (index < 0 || index >= array.length) */ - public static Object[] remove(Object[] array, int index) { + @Nullable + public static Object[] remove(@Nullable Object[] array, int index) { + if (array == null) return null; return (Object[]) remove((Object) array, index); } @@ -861,9 +949,9 @@ public static Object[] remove(Object[] array, int index) { * @param element the element to be removed * @return A new array containing the existing elements except the first * occurrence of the specified element. - * @since 2.1 */ - public static Object[] removeElement(Object[] array, Object element) { + @Nullable + public static Object[] removeElement(@Nullable Object[] array, @Nullable Object element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -871,11 +959,14 @@ public static Object[] removeElement(Object[] array, Object element) { return remove(array, index); } - public static boolean[] remove(boolean[] array, int index) { + @Nullable + public static boolean[] remove(@Nullable boolean[] array, int index) { + if (array == null) return null; return (boolean[]) remove((Object) array, index); } - public static boolean[] removeElement(boolean[] array, boolean element) { + @Nullable + public static boolean[] removeElement(@Nullable boolean[] array, boolean element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -883,11 +974,14 @@ public static boolean[] removeElement(boolean[] array, boolean element) { return remove(array, index); } - public static byte[] remove(byte[] array, int index) { + @Nullable + public static byte[] remove(@Nullable byte[] array, int index) { + if (array == null) return null; return (byte[]) remove((Object) array, index); } - public static byte[] removeElement(byte[] array, byte element) { + @Nullable + public static byte[] removeElement(@Nullable byte[] array, byte element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -895,11 +989,14 @@ public static byte[] removeElement(byte[] array, byte element) { return remove(array, index); } - public static char[] remove(char[] array, int index) { + @Nullable + public static char[] remove(@Nullable char[] array, int index) { + if (array == null) return null; return (char[]) remove((Object) array, index); } - public static char[] removeElement(char[] array, char element) { + @Nullable + public static char[] removeElement(@Nullable char[] array, char element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -907,23 +1004,30 @@ public static char[] removeElement(char[] array, char element) { return remove(array, index); } - public static double[] remove(double[] array, int index) { + @Nullable + public static double[] remove(@Nullable double[] array, int index) { + if (array == null) return null; return (double[]) remove((Object) array, index); } - public static double[] removeElement(double[] array, double element) { + @Nullable + public static double[] removeElement(@Nullable double[] array, double element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); } + //noinspection ConstantConditions return remove(array, index); } - public static float[] remove(float[] array, int index) { + @Nullable + public static float[] remove(@Nullable float[] array, int index) { + if (array == null) return null; return (float[]) remove((Object) array, index); } - public static float[] removeElement(float[] array, float element) { + @Nullable + public static float[] removeElement(@Nullable float[] array, float element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -931,11 +1035,14 @@ public static float[] removeElement(float[] array, float element) { return remove(array, index); } - public static int[] remove(int[] array, int index) { + @Nullable + public static int[] remove(@Nullable int[] array, int index) { + if (array == null) return null; return (int[]) remove((Object) array, index); } - public static int[] removeElement(int[] array, int element) { + @Nullable + public static int[] removeElement(@Nullable int[] array, int element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -943,11 +1050,14 @@ public static int[] removeElement(int[] array, int element) { return remove(array, index); } - public static long[] remove(long[] array, int index) { + @Nullable + public static long[] remove(@Nullable long[] array, int index) { + if (array == null) return null; return (long[]) remove((Object) array, index); } - public static long[] removeElement(long[] array, long element) { + @Nullable + public static long[] removeElement(@Nullable long[] array, long element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -955,11 +1065,14 @@ public static long[] removeElement(long[] array, long element) { return remove(array, index); } - public static short[] remove(short[] array, int index) { + @Nullable + public static short[] remove(@Nullable short[] array, int index) { + if (array == null) return null; return (short[]) remove((Object) array, index); } - public static short[] removeElement(short[] array, short element) { + @Nullable + public static short[] removeElement(@Nullable short[] array, short element) { int index = indexOf(array, element); if (index == INDEX_NOT_FOUND) { return copy(array); @@ -967,7 +1080,8 @@ public static short[] removeElement(short[] array, short element) { return remove(array, index); } - private static Object remove(Object array, int index) { + @NonNull + private static Object remove(@NonNull Object array, int index) { int length = getLength(array); if (index < 0 || index >= length) { throw new IndexOutOfBoundsException("Index: " + index + ", Length: " + length); @@ -986,11 +1100,11 @@ private static Object remove(Object array, int index) { // object indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(Object[] array, Object objectToFind) { + public static int indexOf(@Nullable Object[] array, @Nullable Object objectToFind) { return indexOf(array, objectToFind, 0); } - public static int indexOf(Object[] array, final Object objectToFind, int startIndex) { + public static int indexOf(@Nullable Object[] array, @Nullable final Object objectToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1013,11 +1127,11 @@ public static int indexOf(Object[] array, final Object objectToFind, int startIn return INDEX_NOT_FOUND; } - public static int lastIndexOf(Object[] array, Object objectToFind) { + public static int lastIndexOf(@Nullable Object[] array, @Nullable Object objectToFind) { return lastIndexOf(array, objectToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(Object[] array, Object objectToFind, int startIndex) { + public static int lastIndexOf(@Nullable Object[] array, @Nullable Object objectToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1042,7 +1156,7 @@ public static int lastIndexOf(Object[] array, Object objectToFind, int startInde return INDEX_NOT_FOUND; } - public static boolean contains(Object[] array, Object objectToFind) { + public static boolean contains(@Nullable Object[] array, @Nullable Object objectToFind) { return indexOf(array, objectToFind) != INDEX_NOT_FOUND; } @@ -1050,11 +1164,11 @@ public static boolean contains(Object[] array, Object objectToFind) { // long indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(long[] array, long valueToFind) { + public static int indexOf(@Nullable long[] array, long valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(long[] array, long valueToFind, int startIndex) { + public static int indexOf(@Nullable long[] array, long valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1069,11 +1183,11 @@ public static int indexOf(long[] array, long valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static int lastIndexOf(long[] array, long valueToFind) { + public static int lastIndexOf(@Nullable long[] array, long valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(long[] array, long valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable long[] array, long valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1090,7 +1204,7 @@ public static int lastIndexOf(long[] array, long valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static boolean contains(long[] array, long valueToFind) { + public static boolean contains(@Nullable long[] array, long valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } @@ -1098,11 +1212,11 @@ public static boolean contains(long[] array, long valueToFind) { // int indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(int[] array, int valueToFind) { + public static int indexOf(@Nullable int[] array, int valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(int[] array, int valueToFind, int startIndex) { + public static int indexOf(@Nullable int[] array, int valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1117,11 +1231,11 @@ public static int indexOf(int[] array, int valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static int lastIndexOf(int[] array, int valueToFind) { + public static int lastIndexOf(@Nullable int[] array, int valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(int[] array, int valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable int[] array, int valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1138,7 +1252,7 @@ public static int lastIndexOf(int[] array, int valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static boolean contains(int[] array, int valueToFind) { + public static boolean contains(@Nullable int[] array, int valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } @@ -1146,11 +1260,11 @@ public static boolean contains(int[] array, int valueToFind) { // short indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(short[] array, short valueToFind) { + public static int indexOf(@Nullable short[] array, short valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(short[] array, short valueToFind, int startIndex) { + public static int indexOf(@Nullable short[] array, short valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1165,11 +1279,11 @@ public static int indexOf(short[] array, short valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static int lastIndexOf(short[] array, short valueToFind) { + public static int lastIndexOf(@Nullable short[] array, short valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(short[] array, short valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable short[] array, short valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1186,7 +1300,7 @@ public static int lastIndexOf(short[] array, short valueToFind, int startIndex) return INDEX_NOT_FOUND; } - public static boolean contains(short[] array, short valueToFind) { + public static boolean contains(@Nullable short[] array, short valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } @@ -1194,11 +1308,11 @@ public static boolean contains(short[] array, short valueToFind) { // char indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(char[] array, char valueToFind) { + public static int indexOf(@Nullable char[] array, char valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(char[] array, char valueToFind, int startIndex) { + public static int indexOf(@Nullable char[] array, char valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1213,11 +1327,11 @@ public static int indexOf(char[] array, char valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static int lastIndexOf(char[] array, char valueToFind) { + public static int lastIndexOf(@Nullable char[] array, char valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(char[] array, char valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable char[] array, char valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1234,7 +1348,7 @@ public static int lastIndexOf(char[] array, char valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static boolean contains(char[] array, char valueToFind) { + public static boolean contains(@Nullable char[] array, char valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } @@ -1242,11 +1356,11 @@ public static boolean contains(char[] array, char valueToFind) { // byte indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(byte[] array, byte valueToFind) { + public static int indexOf(@Nullable byte[] array, byte valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(byte[] array, byte valueToFind, int startIndex) { + public static int indexOf(@Nullable byte[] array, byte valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1261,11 +1375,11 @@ public static int indexOf(byte[] array, byte valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static int lastIndexOf(byte[] array, byte valueToFind) { + public static int lastIndexOf(@Nullable byte[] array, byte valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(byte[] array, byte valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable byte[] array, byte valueToFind, int startIndex) { if (array == null) { return INDEX_NOT_FOUND; } @@ -1282,7 +1396,7 @@ public static int lastIndexOf(byte[] array, byte valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static boolean contains(byte[] array, byte valueToFind) { + public static boolean contains(@Nullable byte[] array, byte valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } @@ -1290,15 +1404,15 @@ public static boolean contains(byte[] array, byte valueToFind) { // double indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(double[] array, double valueToFind) { + public static int indexOf(@Nullable double[] array, double valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(double[] array, double valueToFind, double tolerance) { + public static int indexOf(@Nullable double[] array, double valueToFind, double tolerance) { return indexOf(array, valueToFind, 0, tolerance); } - public static int indexOf(double[] array, double valueToFind, int startIndex) { + public static int indexOf(@Nullable double[] array, double valueToFind, int startIndex) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1313,7 +1427,7 @@ public static int indexOf(double[] array, double valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static int indexOf(double[] array, double valueToFind, int startIndex, double tolerance) { + public static int indexOf(@Nullable double[] array, double valueToFind, int startIndex, double tolerance) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1330,15 +1444,15 @@ public static int indexOf(double[] array, double valueToFind, int startIndex, do return INDEX_NOT_FOUND; } - public static int lastIndexOf(double[] array, double valueToFind) { + public static int lastIndexOf(@Nullable double[] array, double valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(double[] array, double valueToFind, double tolerance) { + public static int lastIndexOf(@Nullable double[] array, double valueToFind, double tolerance) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE, tolerance); } - public static int lastIndexOf(double[] array, double valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable double[] array, double valueToFind, int startIndex) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1355,7 +1469,7 @@ public static int lastIndexOf(double[] array, double valueToFind, int startIndex return INDEX_NOT_FOUND; } - public static int lastIndexOf(double[] array, double valueToFind, int startIndex, double tolerance) { + public static int lastIndexOf(@Nullable double[] array, double valueToFind, int startIndex, double tolerance) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1374,11 +1488,11 @@ public static int lastIndexOf(double[] array, double valueToFind, int startIndex return INDEX_NOT_FOUND; } - public static boolean contains(double[] array, double valueToFind) { + public static boolean contains(@Nullable double[] array, double valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } - public static boolean contains(double[] array, double valueToFind, double tolerance) { + public static boolean contains(@Nullable double[] array, double valueToFind, double tolerance) { return indexOf(array, valueToFind, 0, tolerance) != INDEX_NOT_FOUND; } @@ -1386,11 +1500,11 @@ public static boolean contains(double[] array, double valueToFind, double tolera // float indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(float[] array, float valueToFind) { + public static int indexOf(@Nullable float[] array, float valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(float[] array, float valueToFind, int startIndex) { + public static int indexOf(@Nullable float[] array, float valueToFind, int startIndex) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1405,11 +1519,11 @@ public static int indexOf(float[] array, float valueToFind, int startIndex) { return INDEX_NOT_FOUND; } - public static int lastIndexOf(float[] array, float valueToFind) { + public static int lastIndexOf(@Nullable float[] array, float valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(float[] array, float valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable float[] array, float valueToFind, int startIndex) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1426,7 +1540,7 @@ public static int lastIndexOf(float[] array, float valueToFind, int startIndex) return INDEX_NOT_FOUND; } - public static boolean contains(float[] array, float valueToFind) { + public static boolean contains(@Nullable float[] array, float valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } @@ -1434,11 +1548,11 @@ public static boolean contains(float[] array, float valueToFind) { // bool indexOf /////////////////////////////////////////////////////////////////////////// - public static int indexOf(boolean[] array, boolean valueToFind) { + public static int indexOf(@Nullable boolean[] array, boolean valueToFind) { return indexOf(array, valueToFind, 0); } - public static int indexOf(boolean[] array, boolean valueToFind, int startIndex) { + public static int indexOf(@Nullable boolean[] array, boolean valueToFind, int startIndex) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1453,11 +1567,11 @@ public static int indexOf(boolean[] array, boolean valueToFind, int startIndex) return INDEX_NOT_FOUND; } - public static int lastIndexOf(boolean[] array, boolean valueToFind) { + public static int lastIndexOf(@Nullable boolean[] array, boolean valueToFind) { return lastIndexOf(array, valueToFind, Integer.MAX_VALUE); } - public static int lastIndexOf(boolean[] array, boolean valueToFind, int startIndex) { + public static int lastIndexOf(@Nullable boolean[] array, boolean valueToFind, int startIndex) { if (ArrayUtils.isEmpty(array)) { return INDEX_NOT_FOUND; } @@ -1474,7 +1588,7 @@ public static int lastIndexOf(boolean[] array, boolean valueToFind, int startInd return INDEX_NOT_FOUND; } - public static boolean contains(boolean[] array, boolean valueToFind) { + public static boolean contains(@Nullable boolean[] array, boolean valueToFind) { return indexOf(array, valueToFind) != INDEX_NOT_FOUND; } @@ -1482,7 +1596,8 @@ public static boolean contains(boolean[] array, boolean valueToFind) { // char converters /////////////////////////////////////////////////////////////////////////// - public static char[] toPrimitive(Character[] array) { + @Nullable + public static char[] toPrimitive(@Nullable Character[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1495,7 +1610,8 @@ public static char[] toPrimitive(Character[] array) { return result; } - public static char[] toPrimitive(Character[] array, char valueForNull) { + @Nullable + public static char[] toPrimitive(@Nullable Character[] array, char valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1509,7 +1625,8 @@ public static char[] toPrimitive(Character[] array, char valueForNull) { return result; } - public static Character[] toObject(char[] array) { + @Nullable + public static Character[] toObject(@Nullable char[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1526,7 +1643,8 @@ public static Character[] toObject(char[] array) { // long converters /////////////////////////////////////////////////////////////////////////// - public static long[] toPrimitive(Long[] array) { + @Nullable + public static long[] toPrimitive(@Nullable Long[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1539,7 +1657,8 @@ public static long[] toPrimitive(Long[] array) { return result; } - public static long[] toPrimitive(Long[] array, long valueForNull) { + @Nullable + public static long[] toPrimitive(@Nullable Long[] array, long valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1553,7 +1672,8 @@ public static long[] toPrimitive(Long[] array, long valueForNull) { return result; } - public static Long[] toObject(long[] array) { + @Nullable + public static Long[] toObject(@Nullable long[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1570,7 +1690,8 @@ public static Long[] toObject(long[] array) { // int converters /////////////////////////////////////////////////////////////////////////// - public static int[] toPrimitive(Integer[] array) { + @Nullable + public static int[] toPrimitive(@Nullable Integer[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1583,7 +1704,8 @@ public static int[] toPrimitive(Integer[] array) { return result; } - public static int[] toPrimitive(Integer[] array, int valueForNull) { + @Nullable + public static int[] toPrimitive(@Nullable Integer[] array, int valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1597,7 +1719,8 @@ public static int[] toPrimitive(Integer[] array, int valueForNull) { return result; } - public static Integer[] toObject(int[] array) { + @Nullable + public static Integer[] toObject(@Nullable int[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1614,7 +1737,8 @@ public static Integer[] toObject(int[] array) { // short converters /////////////////////////////////////////////////////////////////////////// - public static short[] toPrimitive(Short[] array) { + @Nullable + public static short[] toPrimitive(@Nullable Short[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1627,7 +1751,8 @@ public static short[] toPrimitive(Short[] array) { return result; } - public static short[] toPrimitive(Short[] array, short valueForNull) { + @Nullable + public static short[] toPrimitive(@Nullable Short[] array, short valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1641,7 +1766,8 @@ public static short[] toPrimitive(Short[] array, short valueForNull) { return result; } - public static Short[] toObject(short[] array) { + @Nullable + public static Short[] toObject(@Nullable short[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1658,7 +1784,8 @@ public static Short[] toObject(short[] array) { // byte converters /////////////////////////////////////////////////////////////////////////// - public static byte[] toPrimitive(Byte[] array) { + @Nullable + public static byte[] toPrimitive(@Nullable Byte[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1671,7 +1798,8 @@ public static byte[] toPrimitive(Byte[] array) { return result; } - public static byte[] toPrimitive(Byte[] array, byte valueForNull) { + @Nullable + public static byte[] toPrimitive(@Nullable Byte[] array, byte valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1685,7 +1813,8 @@ public static byte[] toPrimitive(Byte[] array, byte valueForNull) { return result; } - public static Byte[] toObject(byte[] array) { + @Nullable + public static Byte[] toObject(@Nullable byte[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1702,7 +1831,8 @@ public static Byte[] toObject(byte[] array) { // double converters /////////////////////////////////////////////////////////////////////////// - public static double[] toPrimitive(Double[] array) { + @Nullable + public static double[] toPrimitive(@Nullable Double[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1715,7 +1845,8 @@ public static double[] toPrimitive(Double[] array) { return result; } - public static double[] toPrimitive(Double[] array, double valueForNull) { + @Nullable + public static double[] toPrimitive(@Nullable Double[] array, double valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1729,7 +1860,8 @@ public static double[] toPrimitive(Double[] array, double valueForNull) { return result; } - public static Double[] toObject(double[] array) { + @Nullable + public static Double[] toObject(@Nullable double[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1746,7 +1878,8 @@ public static Double[] toObject(double[] array) { // float converters /////////////////////////////////////////////////////////////////////////// - public static float[] toPrimitive(Float[] array) { + @Nullable + public static float[] toPrimitive(@Nullable Float[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1759,7 +1892,8 @@ public static float[] toPrimitive(Float[] array) { return result; } - public static float[] toPrimitive(Float[] array, float valueForNull) { + @Nullable + public static float[] toPrimitive(@Nullable Float[] array, float valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1773,7 +1907,8 @@ public static float[] toPrimitive(Float[] array, float valueForNull) { return result; } - public static Float[] toObject(float[] array) { + @Nullable + public static Float[] toObject(@Nullable float[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1790,7 +1925,8 @@ public static Float[] toObject(float[] array) { // boolean converters /////////////////////////////////////////////////////////////////////////// - public static boolean[] toPrimitive(Boolean[] array) { + @Nullable + public static boolean[] toPrimitive(@Nullable Boolean[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1803,7 +1939,8 @@ public static boolean[] toPrimitive(Boolean[] array) { return result; } - public static boolean[] toPrimitive(Boolean[] array, boolean valueForNull) { + @Nullable + public static boolean[] toPrimitive(@Nullable Boolean[] array, boolean valueForNull) { if (array == null) { return null; } else if (array.length == 0) { @@ -1817,7 +1954,8 @@ public static boolean[] toPrimitive(Boolean[] array, boolean valueForNull) { return result; } - public static Boolean[] toObject(boolean[] array) { + @Nullable + public static Boolean[] toObject(@Nullable boolean[] array) { if (array == null) { return null; } else if (array.length == 0) { @@ -1830,67 +1968,71 @@ public static Boolean[] toObject(boolean[] array) { return result; } - public static List asList(T... array) { + @NonNull + public static List asList(@Nullable T... array) { if (array == null || array.length == 0) { return Collections.emptyList(); } return Arrays.asList(array); } - public static List asUnmodifiableList(T... array) { + @NonNull + public static List asUnmodifiableList(@Nullable T... array) { return Collections.unmodifiableList(asList(array)); } - public static List asArrayList(T... array) { + @NonNull + public static List asArrayList(@Nullable T... array) { List list = new ArrayList<>(); if (array == null || array.length == 0) return list; list.addAll(Arrays.asList(array)); return list; } - public static List asLinkedList(T... array) { + @NonNull + public static List asLinkedList(@Nullable T... array) { List list = new LinkedList<>(); if (array == null || array.length == 0) return list; list.addAll(Arrays.asList(array)); return list; } - public static void sort(T[] array, Comparator c) { + public static void sort(@Nullable T[] array, Comparator c) { if (array == null || array.length < 2) return; Arrays.sort(array, c); } - public static void sort(byte[] array) { + public static void sort(@Nullable byte[] array) { if (array == null || array.length < 2) return; Arrays.sort(array); } - public static void sort(char[] array) { + public static void sort(@Nullable char[] array) { if (array == null || array.length < 2) return; Arrays.sort(array); } - public static void sort(double[] array) { + public static void sort(@Nullable double[] array) { if (array == null || array.length < 2) return; Arrays.sort(array); } - public static void sort(float[] array) { + public static void sort(@Nullable float[] array) { if (array == null || array.length < 2) return; Arrays.sort(array); } - public static void sort(int[] array) { + public static void sort(@Nullable int[] array) { if (array == null || array.length < 2) return; Arrays.sort(array); } - public static void sort(long[] array) { + public static void sort(@Nullable long[] array) { if (array == null || array.length < 2) return; Arrays.sort(array); } - public static void sort(short[] array) { + public static void sort(@Nullable short[] array) { if (array == null || array.length < 2) return; Arrays.sort(array); } @@ -1903,7 +2045,7 @@ public static void sort(short[] array) { * @param array The array. * @param closure the closure to perform, may be null */ - public static void forAllDo(Object array, Closure closure) { + public static void forAllDo(@Nullable Object array, @Nullable Closure closure) { if (array == null || closure == null) return; if (array instanceof Object[]) { Object[] objects = (Object[]) array; @@ -1970,7 +2112,8 @@ public static void forAllDo(Object array, Closure closure) { * @param array The array. * @return the string of array */ - public static String toString(Object array) { + @NonNull + public static String toString(@Nullable Object array) { if (array == null) return "null"; if (array instanceof Object[]) { return Arrays.deepToString((Object[]) array); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index 0092763b12..90acac5882 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -194,14 +194,14 @@ public static void subtractMarginTopEqualStatusBarHeight(@NonNull View view) { view.setTag(KEY_OFFSET, false); } - private static void addMarginTopEqualStatusBarHeight(final Window window) { + private static void addMarginTopEqualStatusBarHeight(@NonNull final Window window) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; View withTag = window.getDecorView().findViewWithTag(TAG_OFFSET); if (withTag == null) return; addMarginTopEqualStatusBarHeight(withTag); } - private static void subtractMarginTopEqualStatusBarHeight(final Window window) { + private static void subtractMarginTopEqualStatusBarHeight(@NonNull final Window window) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; View withTag = window.getDecorView().findViewWithTag(TAG_OFFSET); if (withTag == null) return; @@ -349,13 +349,13 @@ public static void setStatusBarColor4Drawer(@NonNull final DrawerLayout drawer, } } - private static View applyStatusBarColor(final Activity activity, + private static View applyStatusBarColor(@NonNull final Activity activity, final int color, boolean isDecor) { return applyStatusBarColor(activity.getWindow(), color, isDecor); } - private static View applyStatusBarColor(final Window window, + private static View applyStatusBarColor(@NonNull final Window window, final int color, boolean isDecor) { ViewGroup parent = isDecor ? @@ -374,25 +374,25 @@ private static View applyStatusBarColor(final Window window, return fakeStatusBarView; } - private static void hideStatusBarView(final Activity activity) { + private static void hideStatusBarView(@NonNull final Activity activity) { hideStatusBarView(activity.getWindow()); } - private static void hideStatusBarView(final Window window) { + private static void hideStatusBarView(@NonNull final Window window) { ViewGroup decorView = (ViewGroup) window.getDecorView(); View fakeStatusBarView = decorView.findViewWithTag(TAG_STATUS_BAR); if (fakeStatusBarView == null) return; fakeStatusBarView.setVisibility(View.GONE); } - private static void showStatusBarView(final Window window) { + private static void showStatusBarView(@NonNull final Window window) { ViewGroup decorView = (ViewGroup) window.getDecorView(); View fakeStatusBarView = decorView.findViewWithTag(TAG_STATUS_BAR); if (fakeStatusBarView == null) return; fakeStatusBarView.setVisibility(View.VISIBLE); } - private static View createStatusBarView(final Context context, + private static View createStatusBarView(@NonNull final Context context, final int color) { View statusBarView = new View(context); statusBarView.setLayoutParams(new ViewGroup.LayoutParams( @@ -402,11 +402,11 @@ private static View createStatusBarView(final Context context, return statusBarView; } - public static void transparentStatusBar(final Activity activity) { + public static void transparentStatusBar(@NonNull final Activity activity) { transparentStatusBar(activity.getWindow()); } - public static void transparentStatusBar(final Window window) { + public static void transparentStatusBar(@NonNull final Window window) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java index f9344b0a59..0a3dc27632 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BrightnessUtils.java @@ -105,7 +105,7 @@ public static void setWindowBrightness(@NonNull final Window window, * @param window 窗口 * @return 屏幕亮度 0-255 */ - public static int getWindowBrightness(final Window window) { + public static int getWindowBrightness(@NonNull final Window window) { WindowManager.LayoutParams lp = window.getAttributes(); float brightness = lp.screenBrightness; if (brightness < 0) return getBrightness(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java index 0eb9ec86fa..c06f86fae8 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BusUtils.java @@ -1,5 +1,7 @@ package com.blankj.utilcode.util; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.util.Log; import java.lang.annotation.ElementType; @@ -61,27 +63,27 @@ private void registerBus(String tag, busInfoList.add(new BusInfo(tag, className, funName, paramType, paramName, sticky, threadMode, priority)); } - public static void register(final Object bus) { + public static void register(@Nullable final Object bus) { getInstance().registerInner(bus); } - public static void unregister(final Object bus) { + public static void unregister(@Nullable final Object bus) { getInstance().unregisterInner(bus); } - public static void post(final String tag) { + public static void post(@NonNull final String tag) { post(tag, NULL); } - public static void post(final String tag, final Object arg) { + public static void post(@NonNull final String tag, @NonNull final Object arg) { getInstance().postInner(tag, arg); } - public static void postSticky(final String tag) { + public static void postSticky(@NonNull final String tag) { postSticky(tag, NULL); } - public static void postSticky(final String tag, final Object arg) { + public static void postSticky(@NonNull final String tag, final Object arg) { getInstance().postStickyInner(tag, arg); } @@ -102,7 +104,7 @@ private static BusUtils getInstance() { return LazyHolder.INSTANCE; } - private void registerInner(final Object bus) { + private void registerInner(@Nullable final Object bus) { if (bus == null) return; Class aClass = bus.getClass(); String className = aClass.getName(); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java index bb48a4b5cf..7a1a1f199d 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDiskStaticUtils.java @@ -4,6 +4,7 @@ import android.graphics.drawable.Drawable; import android.os.Parcelable; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import org.json.JSONArray; import org.json.JSONObject; @@ -27,7 +28,7 @@ public final class CacheDiskStaticUtils { * * @param cacheDiskUtils The default instance of {@link CacheDiskUtils}. */ - public static void setDefaultCacheDiskUtils(final CacheDiskUtils cacheDiskUtils) { + public static void setDefaultCacheDiskUtils(@Nullable final CacheDiskUtils cacheDiskUtils) { sDefaultCacheDiskUtils = cacheDiskUtils; } @@ -37,7 +38,7 @@ public static void setDefaultCacheDiskUtils(final CacheDiskUtils cacheDiskUtils) * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final byte[] value) { + public static void put(@NonNull final String key, @Nullable final byte[] value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -48,7 +49,7 @@ public static void put(@NonNull final String key, final byte[] value) { * @param value The value of cache. * @param saveTime The save time of cache, in seconds. */ - public static void put(@NonNull final String key, final byte[] value, final int saveTime) { + public static void put(@NonNull final String key, @Nullable final byte[] value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -69,7 +70,7 @@ public static byte[] getBytes(@NonNull final String key) { * @param defaultValue The default value if the cache doesn't exist. * @return the bytes if cache exists or defaultValue otherwise */ - public static byte[] getBytes(@NonNull final String key, final byte[] defaultValue) { + public static byte[] getBytes(@NonNull final String key, @Nullable final byte[] defaultValue) { return getBytes(key, defaultValue, getDefaultCacheDiskUtils()); } @@ -83,7 +84,7 @@ public static byte[] getBytes(@NonNull final String key, final byte[] defaultVal * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final String value) { + public static void put(@NonNull final String key, @Nullable final String value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -94,7 +95,7 @@ public static void put(@NonNull final String key, final String value) { * @param value The value of cache. * @param saveTime The save time of cache, in seconds. */ - public static void put(@NonNull final String key, final String value, final int saveTime) { + public static void put(@NonNull final String key, @Nullable final String value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -115,7 +116,7 @@ public static String getString(@NonNull final String key) { * @param defaultValue The default value if the cache doesn't exist. * @return the string value if cache exists or defaultValue otherwise */ - public static String getString(@NonNull final String key, final String defaultValue) { + public static String getString(@NonNull final String key, @Nullable final String defaultValue) { return getString(key, defaultValue, getDefaultCacheDiskUtils()); } @@ -129,7 +130,7 @@ public static String getString(@NonNull final String key, final String defaultVa * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final JSONObject value) { + public static void put(@NonNull final String key, @Nullable final JSONObject value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -141,7 +142,7 @@ public static void put(@NonNull final String key, final JSONObject value) { * @param saveTime The save time of cache, in seconds. */ public static void put(@NonNull final String key, - final JSONObject value, + @Nullable final JSONObject value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -163,7 +164,7 @@ public static JSONObject getJSONObject(@NonNull final String key) { * @param defaultValue The default value if the cache doesn't exist. * @return the JSONObject if cache exists or defaultValue otherwise */ - public static JSONObject getJSONObject(@NonNull final String key, final JSONObject defaultValue) { + public static JSONObject getJSONObject(@NonNull final String key, @Nullable final JSONObject defaultValue) { return getJSONObject(key, defaultValue, getDefaultCacheDiskUtils()); } @@ -178,7 +179,7 @@ public static JSONObject getJSONObject(@NonNull final String key, final JSONObje * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final JSONArray value) { + public static void put(@NonNull final String key, @Nullable final JSONArray value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -189,7 +190,7 @@ public static void put(@NonNull final String key, final JSONArray value) { * @param value The value of cache. * @param saveTime The save time of cache, in seconds. */ - public static void put(@NonNull final String key, final JSONArray value, final int saveTime) { + public static void put(@NonNull final String key, @Nullable final JSONArray value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -210,7 +211,7 @@ public static JSONArray getJSONArray(@NonNull final String key) { * @param defaultValue The default value if the cache doesn't exist. * @return the JSONArray if cache exists or defaultValue otherwise */ - public static JSONArray getJSONArray(@NonNull final String key, final JSONArray defaultValue) { + public static JSONArray getJSONArray(@NonNull final String key, @Nullable final JSONArray defaultValue) { return getJSONArray(key, defaultValue, getDefaultCacheDiskUtils()); } @@ -225,7 +226,7 @@ public static JSONArray getJSONArray(@NonNull final String key, final JSONArray * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final Bitmap value) { + public static void put(@NonNull final String key, @Nullable final Bitmap value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -236,7 +237,7 @@ public static void put(@NonNull final String key, final Bitmap value) { * @param value The value of cache. * @param saveTime The save time of cache, in seconds. */ - public static void put(@NonNull final String key, final Bitmap value, final int saveTime) { + public static void put(@NonNull final String key, @Nullable final Bitmap value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -257,7 +258,7 @@ public static Bitmap getBitmap(@NonNull final String key) { * @param defaultValue The default value if the cache doesn't exist. * @return the bitmap if cache exists or defaultValue otherwise */ - public static Bitmap getBitmap(@NonNull final String key, final Bitmap defaultValue) { + public static Bitmap getBitmap(@NonNull final String key, @Nullable final Bitmap defaultValue) { return getBitmap(key, defaultValue, getDefaultCacheDiskUtils()); } @@ -271,7 +272,7 @@ public static Bitmap getBitmap(@NonNull final String key, final Bitmap defaultVa * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final Drawable value) { + public static void put(@NonNull final String key, @Nullable final Drawable value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -282,7 +283,7 @@ public static void put(@NonNull final String key, final Drawable value) { * @param value The value of cache. * @param saveTime The save time of cache, in seconds. */ - public static void put(@NonNull final String key, final Drawable value, final int saveTime) { + public static void put(@NonNull final String key, @Nullable final Drawable value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -303,7 +304,7 @@ public static Drawable getDrawable(@NonNull final String key) { * @param defaultValue The default value if the cache doesn't exist. * @return the drawable if cache exists or defaultValue otherwise */ - public static Drawable getDrawable(@NonNull final String key, final Drawable defaultValue) { + public static Drawable getDrawable(@NonNull final String key, final @Nullable Drawable defaultValue) { return getDrawable(key, defaultValue, getDefaultCacheDiskUtils()); } @@ -317,7 +318,7 @@ public static Drawable getDrawable(@NonNull final String key, final Drawable def * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final Parcelable value) { + public static void put(@NonNull final String key, @Nullable final Parcelable value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -328,7 +329,7 @@ public static void put(@NonNull final String key, final Parcelable value) { * @param value The value of cache. * @param saveTime The save time of cache, in seconds. */ - public static void put(@NonNull final String key, final Parcelable value, final int saveTime) { + public static void put(@NonNull final String key, @Nullable final Parcelable value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -356,7 +357,7 @@ public static T getParcelable(@NonNull final String key, */ public static T getParcelable(@NonNull final String key, @NonNull final Parcelable.Creator creator, - final T defaultValue) { + @Nullable final T defaultValue) { return getParcelable(key, creator, defaultValue, getDefaultCacheDiskUtils()); } @@ -370,7 +371,7 @@ public static T getParcelable(@NonNull final String key, * @param key The key of cache. * @param value The value of cache. */ - public static void put(@NonNull final String key, final Serializable value) { + public static void put(@NonNull final String key, @Nullable final Serializable value) { put(key, value, getDefaultCacheDiskUtils()); } @@ -381,7 +382,7 @@ public static void put(@NonNull final String key, final Serializable value) { * @param value The value of cache. * @param saveTime The save time of cache, in seconds. */ - public static void put(@NonNull final String key, final Serializable value, final int saveTime) { + public static void put(@NonNull final String key, @Nullable final Serializable value, final int saveTime) { put(key, value, saveTime, getDefaultCacheDiskUtils()); } @@ -402,7 +403,7 @@ public static Object getSerializable(@NonNull final String key) { * @param defaultValue The default value if the cache doesn't exist. * @return the bitmap if cache exists or defaultValue otherwise */ - public static Object getSerializable(@NonNull final String key, final Object defaultValue) { + public static Object getSerializable(@NonNull final String key, @Nullable final Object defaultValue) { return getSerializable(key, defaultValue, getDefaultCacheDiskUtils()); } @@ -455,7 +456,7 @@ public static boolean clear() { * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final byte[] value, + @Nullable final byte[] value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -469,7 +470,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final byte[] value, + @Nullable final byte[] value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -495,7 +496,7 @@ public static byte[] getBytes(@NonNull final String key, @NonNull final CacheDis * @return the bytes if cache exists or defaultValue otherwise */ public static byte[] getBytes(@NonNull final String key, - final byte[] defaultValue, + @Nullable final byte[] defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getBytes(key, defaultValue); } @@ -512,7 +513,7 @@ public static byte[] getBytes(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final String value, + @Nullable final String value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -526,7 +527,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final String value, + @Nullable final String value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -552,7 +553,7 @@ public static String getString(@NonNull final String key, @NonNull final CacheDi * @return the string value if cache exists or defaultValue otherwise */ public static String getString(@NonNull final String key, - final String defaultValue, + @Nullable final String defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getString(key, defaultValue); } @@ -569,7 +570,7 @@ public static String getString(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final JSONObject value, + @Nullable final JSONObject value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -583,7 +584,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final JSONObject value, + @Nullable final JSONObject value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -609,7 +610,7 @@ public static JSONObject getJSONObject(@NonNull final String key, @NonNull final * @return the JSONObject if cache exists or defaultValue otherwise */ public static JSONObject getJSONObject(@NonNull final String key, - final JSONObject defaultValue, + @Nullable final JSONObject defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getJSONObject(key, defaultValue); } @@ -627,7 +628,7 @@ public static JSONObject getJSONObject(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final JSONArray value, + @Nullable final JSONArray value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -641,7 +642,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final JSONArray value, + @Nullable final JSONArray value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -667,7 +668,7 @@ public static JSONArray getJSONArray(@NonNull final String key, @NonNull final C * @return the JSONArray if cache exists or defaultValue otherwise */ public static JSONArray getJSONArray(@NonNull final String key, - final JSONArray defaultValue, + @Nullable final JSONArray defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getJSONArray(key, defaultValue); } @@ -685,7 +686,7 @@ public static JSONArray getJSONArray(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Bitmap value, + @Nullable final Bitmap value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -699,7 +700,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Bitmap value, + @Nullable final Bitmap value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -725,7 +726,7 @@ public static Bitmap getBitmap(@NonNull final String key, @NonNull final CacheDi * @return the bitmap if cache exists or defaultValue otherwise */ public static Bitmap getBitmap(@NonNull final String key, - final Bitmap defaultValue, + @Nullable final Bitmap defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getBitmap(key, defaultValue); } @@ -742,7 +743,7 @@ public static Bitmap getBitmap(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Drawable value, + @Nullable final Drawable value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -756,7 +757,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Drawable value, + @Nullable final Drawable value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -782,7 +783,7 @@ public static Drawable getDrawable(@NonNull final String key, @NonNull final Cac * @return the drawable if cache exists or defaultValue otherwise */ public static Drawable getDrawable(@NonNull final String key, - final Drawable defaultValue, + @Nullable final Drawable defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getDrawable(key, defaultValue); } @@ -799,7 +800,7 @@ public static Drawable getDrawable(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Parcelable value, + @Nullable final Parcelable value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -813,7 +814,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Parcelable value, + @Nullable final Parcelable value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -846,7 +847,7 @@ public static T getParcelable(@NonNull final String key, */ public static T getParcelable(@NonNull final String key, @NonNull final Parcelable.Creator creator, - final T defaultValue, + @Nullable final T defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getParcelable(key, creator, defaultValue); } @@ -863,7 +864,7 @@ public static T getParcelable(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Serializable value, + @Nullable final Serializable value, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value); } @@ -877,7 +878,7 @@ public static void put(@NonNull final String key, * @param cacheDiskUtils The instance of {@link CacheDiskUtils}. */ public static void put(@NonNull final String key, - final Serializable value, + @Nullable final Serializable value, final int saveTime, @NonNull final CacheDiskUtils cacheDiskUtils) { cacheDiskUtils.put(key, value, saveTime); @@ -903,7 +904,7 @@ public static Object getSerializable(@NonNull final String key, @NonNull final C * @return the bitmap if cache exists or defaultValue otherwise */ public static Object getSerializable(@NonNull final String key, - final Object defaultValue, + @Nullable final Object defaultValue, @NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.getSerializable(key, defaultValue); } @@ -949,6 +950,7 @@ public static boolean clear(@NonNull final CacheDiskUtils cacheDiskUtils) { return cacheDiskUtils.clear(); } + @NonNull private static CacheDiskUtils getDefaultCacheDiskUtils() { return sDefaultCacheDiskUtils != null ? sDefaultCacheDiskUtils : CacheDiskUtils.getInstance(); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java index c800423c78..1cc8324990 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CacheDoubleUtils.java @@ -113,7 +113,12 @@ public byte[] getBytes(@NonNull final String key) { public byte[] getBytes(@NonNull final String key, final byte[] defaultValue) { byte[] obj = mCacheMemoryUtils.get(key); if (obj != null) return obj; - return mCacheDiskUtils.getBytes(key, defaultValue); + byte[] bytes = mCacheDiskUtils.getBytes(key); + if (bytes != null) { + mCacheMemoryUtils.put(key, bytes); + return bytes; + } + return defaultValue; } /////////////////////////////////////////////////////////////////////////// @@ -162,7 +167,12 @@ public String getString(@NonNull final String key) { public String getString(@NonNull final String key, final String defaultValue) { String obj = mCacheMemoryUtils.get(key); if (obj != null) return obj; - return mCacheDiskUtils.getString(key, defaultValue); + String string = mCacheDiskUtils.getString(key); + if (string != null) { + mCacheMemoryUtils.put(key, string); + return string; + } + return defaultValue; } /////////////////////////////////////////////////////////////////////////// @@ -213,7 +223,12 @@ public JSONObject getJSONObject(@NonNull final String key) { public JSONObject getJSONObject(@NonNull final String key, final JSONObject defaultValue) { JSONObject obj = mCacheMemoryUtils.get(key); if (obj != null) return obj; - return mCacheDiskUtils.getJSONObject(key, defaultValue); + JSONObject jsonObject = mCacheDiskUtils.getJSONObject(key); + if (jsonObject != null) { + mCacheMemoryUtils.put(key, jsonObject); + return jsonObject; + } + return defaultValue; } @@ -263,7 +278,12 @@ public JSONArray getJSONArray(@NonNull final String key) { public JSONArray getJSONArray(@NonNull final String key, final JSONArray defaultValue) { JSONArray obj = mCacheMemoryUtils.get(key); if (obj != null) return obj; - return mCacheDiskUtils.getJSONArray(key, defaultValue); + JSONArray jsonArray = mCacheDiskUtils.getJSONArray(key); + if (jsonArray != null) { + mCacheMemoryUtils.put(key, jsonArray); + return jsonArray; + } + return defaultValue; } /////////////////////////////////////////////////////////////////////////// @@ -312,7 +332,12 @@ public Bitmap getBitmap(@NonNull final String key) { public Bitmap getBitmap(@NonNull final String key, final Bitmap defaultValue) { Bitmap obj = mCacheMemoryUtils.get(key); if (obj != null) return obj; - return mCacheDiskUtils.getBitmap(key, defaultValue); + Bitmap bitmap = mCacheDiskUtils.getBitmap(key); + if (bitmap != null) { + mCacheMemoryUtils.put(key, bitmap); + return bitmap; + } + return defaultValue; } /////////////////////////////////////////////////////////////////////////// @@ -361,7 +386,12 @@ public Drawable getDrawable(@NonNull final String key) { public Drawable getDrawable(@NonNull final String key, final Drawable defaultValue) { Drawable obj = mCacheMemoryUtils.get(key); if (obj != null) return obj; - return mCacheDiskUtils.getDrawable(key, defaultValue); + Drawable drawable = mCacheDiskUtils.getDrawable(key); + if (drawable != null) { + mCacheMemoryUtils.put(key, drawable); + return drawable; + } + return defaultValue; } /////////////////////////////////////////////////////////////////////////// @@ -417,7 +447,12 @@ public T getParcelable(@NonNull final String key, final T defaultValue) { T value = mCacheMemoryUtils.get(key); if (value != null) return value; - return mCacheDiskUtils.getParcelable(key, creator, defaultValue); + T val = mCacheDiskUtils.getParcelable(key, creator); + if (val != null) { + mCacheMemoryUtils.put(key, val); + return val; + } + return defaultValue; } /////////////////////////////////////////////////////////////////////////// @@ -466,7 +501,12 @@ public Object getSerializable(@NonNull final String key) { public Object getSerializable(@NonNull final String key, final Object defaultValue) { Object obj = mCacheMemoryUtils.get(key); if (obj != null) return obj; - return mCacheDiskUtils.getSerializable(key, defaultValue); + Object serializable = mCacheDiskUtils.getSerializable(key); + if (serializable != null) { + mCacheMemoryUtils.put(key, serializable); + return serializable; + } + return defaultValue; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java index 3e56907eb2..8ddc4344a4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/FragmentUtils.java @@ -1525,6 +1525,7 @@ private static void operate(final int type, break; } ft.commitAllowingStateLoss(); + fm.executePendingTransactions(); } private static void addAnim(final FragmentTransaction ft, diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java index 242b9dcfd5..7df105a3bc 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ImageUtils.java @@ -40,6 +40,8 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; +import android.support.v4.content.ContextCompat; +import android.text.TextUtils; import android.util.Log; import android.view.View; @@ -85,7 +87,7 @@ public static byte[] bitmap2Bytes(final Bitmap bitmap) { * @param quality The quality. * @return bytes */ - public static byte[] bitmap2Bytes(final Bitmap bitmap, final CompressFormat format, int quality) { + public static byte[] bitmap2Bytes(@Nullable final Bitmap bitmap, @NonNull final CompressFormat format, int quality) { if (bitmap == null) return null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(format, quality, baos); @@ -98,7 +100,7 @@ public static byte[] bitmap2Bytes(final Bitmap bitmap, final CompressFormat form * @param bytes The bytes. * @return bitmap */ - public static Bitmap bytes2Bitmap(final byte[] bytes) { + public static Bitmap bytes2Bitmap(@Nullable final byte[] bytes) { return (bytes == null || bytes.length == 0) ? null : BitmapFactory.decodeByteArray(bytes, 0, bytes.length); @@ -110,7 +112,8 @@ public static Bitmap bytes2Bitmap(final byte[] bytes) { * @param drawable The drawable. * @return bitmap */ - public static Bitmap drawable2Bitmap(final Drawable drawable) { + public static Bitmap drawable2Bitmap(@Nullable final Drawable drawable) { + if (drawable == null) return null; if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; if (bitmapDrawable.getBitmap() != null) { @@ -142,7 +145,7 @@ public static Bitmap drawable2Bitmap(final Drawable drawable) { * @param bitmap The bitmap. * @return drawable */ - public static Drawable bitmap2Drawable(final Bitmap bitmap) { + public static Drawable bitmap2Drawable(@Nullable final Bitmap bitmap) { return bitmap == null ? null : new BitmapDrawable(Utils.getApp().getResources(), bitmap); } @@ -152,7 +155,7 @@ public static Drawable bitmap2Drawable(final Bitmap bitmap) { * @param drawable The drawable. * @return bytes */ - public static byte[] drawable2Bytes(final Drawable drawable) { + public static byte[] drawable2Bytes(@Nullable final Drawable drawable) { return drawable == null ? null : bitmap2Bytes(drawable2Bitmap(drawable)); } @@ -340,7 +343,18 @@ public static Bitmap getBitmap(final byte[] data, * @return bitmap */ public static Bitmap getBitmap(@DrawableRes final int resId) { - return BitmapFactory.decodeResource(Utils.getApp().getResources(), resId); + Drawable drawable = ContextCompat.getDrawable(Utils.getApp(), resId); + if (drawable == null) { + return null; + } + Canvas canvas = new Canvas(); + Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), + drawable.getIntrinsicHeight(), + Bitmap.Config.ARGB_8888); + canvas.setBitmap(bitmap); + drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); + drawable.draw(canvas); + return bitmap; } /** @@ -1753,24 +1767,87 @@ public static boolean save(final Bitmap src, @Nullable public static File save2Album(final Bitmap src, final CompressFormat format) { - return save2Album(src, format, 100, false); + return save2Album(src, "", format, 100, false); + } + + /** + * @param src The source of bitmap. + * @param format The format of the image. + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return the file if save success, otherwise return null. + */ + @Nullable + public static File save2Album(final Bitmap src, + final CompressFormat format, + final boolean recycle) { + return save2Album(src, "", format, 100, recycle); + } + + /** + * @param src The source of bitmap. + * @param format The format of the image. + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @return the file if save success, otherwise return null. + */ + @Nullable + public static File save2Album(final Bitmap src, + final CompressFormat format, + final int quality) { + return save2Album(src, "", format, quality, false); + } + + /** + * @param src The source of bitmap. + * @param format The format of the image. + * @param quality Hint to the compressor, 0-100. 0 meaning compress for + * small size, 100 meaning compress for max quality. Some + * formats, like PNG which is lossless, will ignore the + * quality setting + * @param recycle True to recycle the source of bitmap, false otherwise. + * @return the file if save success, otherwise return null. + */ + @Nullable + public static File save2Album(final Bitmap src, + final CompressFormat format, + final int quality, + final boolean recycle) { + return save2Album(src, "", format, quality, recycle); + } + + /** + * @param src The source of bitmap. + * @param dirName The name of directory. + * @param format The format of the image. + * @return the file if save success, otherwise return null. + */ + @Nullable + public static File save2Album(final Bitmap src, + final String dirName, + final CompressFormat format) { + return save2Album(src, dirName, format, 100, false); } /** * @param src The source of bitmap. + * @param dirName The name of directory. * @param format The format of the image. * @param recycle True to recycle the source of bitmap, false otherwise. * @return the file if save success, otherwise return null. */ @Nullable public static File save2Album(final Bitmap src, + final String dirName, final CompressFormat format, final boolean recycle) { - return save2Album(src, format, 100, recycle); + return save2Album(src, dirName, format, 100, recycle); } /** * @param src The source of bitmap. + * @param dirName The name of directory. * @param format The format of the image. * @param quality Hint to the compressor, 0-100. 0 meaning compress for * small size, 100 meaning compress for max quality. Some @@ -1780,13 +1857,15 @@ public static File save2Album(final Bitmap src, */ @Nullable public static File save2Album(final Bitmap src, + final String dirName, final CompressFormat format, final int quality) { - return save2Album(src, format, quality, false); + return save2Album(src, dirName, format, quality, false); } /** * @param src The source of bitmap. + * @param dirName The name of directory. * @param format The format of the image. * @param quality Hint to the compressor, 0-100. 0 meaning compress for * small size, 100 meaning compress for max quality. Some @@ -1797,9 +1876,11 @@ public static File save2Album(final Bitmap src, */ @Nullable public static File save2Album(final Bitmap src, + final String dirName, final CompressFormat format, final int quality, final boolean recycle) { + String safeDirName = TextUtils.isEmpty(dirName) ? Utils.getApp().getPackageName() : dirName; String suffix = CompressFormat.JPEG.equals(format) ? "JPG" : format.name(); String fileName = System.currentTimeMillis() + "_" + quality + "." + suffix; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { @@ -1808,7 +1889,7 @@ public static File save2Album(final Bitmap src, return null; } File picDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); - File destFile = new File(picDir, Utils.getApp().getPackageName() + "/" + fileName); + File destFile = new File(picDir, safeDirName + "/" + fileName); if (!save(src, destFile, format, quality, recycle)) { return null; } @@ -1824,7 +1905,7 @@ public static File save2Album(final Bitmap src, } else { contentUri = MediaStore.Images.Media.INTERNAL_CONTENT_URI; } - contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DCIM + "/" + Utils.getApp().getPackageName()); + contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DCIM + "/" + safeDirName); contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1); Uri uri = Utils.getApp().getContentResolver().insert(contentUri, contentValues); if (uri == null) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java index 2364db719c..4a821458fa 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java @@ -8,6 +8,7 @@ import android.os.Bundle; import android.provider.MediaStore; import android.provider.Settings; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresPermission; import android.support.v4.content.FileProvider; @@ -402,8 +403,8 @@ public static Intent getShutdownIntent() { * @param phoneNumber The phone number. * @return the intent of dial */ - public static Intent getDialIntent(final String phoneNumber) { - Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber)); + public static Intent getDialIntent(@NonNull final String phoneNumber) { + Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + Uri.encode(phoneNumber))); return getIntent(intent, true); } @@ -415,8 +416,8 @@ public static Intent getDialIntent(final String phoneNumber) { * @return the intent of call */ @RequiresPermission(CALL_PHONE) - public static Intent getCallIntent(final String phoneNumber) { - Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + phoneNumber)); + public static Intent getCallIntent(@NonNull final String phoneNumber) { + Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + Uri.encode(phoneNumber))); return getIntent(intent, true); } @@ -427,8 +428,8 @@ public static Intent getCallIntent(final String phoneNumber) { * @param content The content of SMS. * @return the intent of send SMS */ - public static Intent getSendSmsIntent(final String phoneNumber, final String content) { - Uri uri = Uri.parse("smsto:" + phoneNumber); + public static Intent getSendSmsIntent(@NonNull final String phoneNumber, final String content) { + Uri uri = Uri.parse("smsto:" + Uri.encode(phoneNumber)); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", content); return getIntent(intent, true); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java index 1e5e2982a3..972d804e16 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/PhoneUtils.java @@ -3,6 +3,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.os.Build; +import android.support.annotation.NonNull; import android.support.annotation.RequiresPermission; import android.telephony.TelephonyManager; import android.text.TextUtils; @@ -288,7 +289,7 @@ public static String getSimOperatorByMnc() { * * @param phoneNumber The phone number. */ - public static void dial(final String phoneNumber) { + public static void dial(@NonNull final String phoneNumber) { Utils.getApp().startActivity(UtilsBridge.getDialIntent(phoneNumber)); } @@ -299,7 +300,7 @@ public static void dial(final String phoneNumber) { * @param phoneNumber The phone number. */ @RequiresPermission(CALL_PHONE) - public static void call(final String phoneNumber) { + public static void call(@NonNull final String phoneNumber) { Utils.getApp().startActivity(UtilsBridge.getCallIntent(phoneNumber)); } @@ -309,7 +310,7 @@ public static void call(final String phoneNumber) { * @param phoneNumber The phone number. * @param content The content. */ - public static void sendSms(final String phoneNumber, final String content) { + public static void sendSms(@NonNull final String phoneNumber, final String content) { Utils.getApp().startActivity(UtilsBridge.getSendSmsIntent(phoneNumber, content)); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RomUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RomUtils.java index 90f2255cf1..49e1cf6fcf 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RomUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RomUtils.java @@ -38,7 +38,7 @@ public final class RomUtils { private static final String[] ROM_SAMSUNG = {"samsung"}; private static final String[] ROM_MEIZU = {"meizu"}; private static final String[] ROM_LENOVO = {"lenovo"}; - private static final String[] ROM_SMARTISAN = {"smartisan"}; + private static final String[] ROM_SMARTISAN = {"smartisan", "deltainno"}; private static final String[] ROM_HTC = {"htc"}; private static final String[] ROM_SONY = {"sony"}; private static final String[] ROM_GIONEE = {"gionee", "amigo"}; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java index fbc3ff02ff..ca14204dfc 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SnackbarUtils.java @@ -47,7 +47,7 @@ public final class SnackbarUtils { private static final int COLOR_ERROR = 0xFFFF0000; private static final int COLOR_MESSAGE = 0xFFFFFFFF; - private static WeakReference sReference; + private static WeakReference sWeakSnackbar; private View view; private CharSequence message; @@ -223,11 +223,11 @@ public Snackbar show(boolean isShowTop) { spannableString.setSpan( colorSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ); - sReference = new WeakReference<>(Snackbar.make(view, spannableString, duration)); + sWeakSnackbar = new WeakReference<>(Snackbar.make(view, spannableString, duration)); } else { - sReference = new WeakReference<>(Snackbar.make(view, message, duration)); + sWeakSnackbar = new WeakReference<>(Snackbar.make(view, message, duration)); } - final Snackbar snackbar = sReference.get(); + final Snackbar snackbar = sWeakSnackbar.get(); final Snackbar.SnackbarLayout snackbarView = (Snackbar.SnackbarLayout) snackbar.getView(); if (isShowTop) { for (int i = 0; i < snackbarView.getChildCount(); i++) { @@ -316,9 +316,9 @@ public void showError(boolean isShowTop) { * Dismiss the snackbar. */ public static void dismiss() { - if (sReference != null && sReference.get() != null) { - sReference.get().dismiss(); - sReference = null; + if (sWeakSnackbar != null && sWeakSnackbar.get() != null) { + sWeakSnackbar.get().dismiss(); + sWeakSnackbar = null; } } @@ -328,7 +328,7 @@ public static void dismiss() { * @return the view of snackbar */ public static View getView() { - Snackbar snackbar = sReference.get(); + Snackbar snackbar = sWeakSnackbar.get(); if (snackbar == null) return null; return snackbar.getView(); } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java index 86141a8d56..f8eb9465bd 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java @@ -514,9 +514,7 @@ public SpanUtils setVerticalAlign(@Align final int align) { * @return the single {@link SpanUtils} instance */ public SpanUtils setClickSpan(@NonNull final ClickableSpan clickSpan) { - if (mTextView != null && mTextView.getMovementMethod() == null) { - mTextView.setMovementMethod(LinkMovementMethod.getInstance()); - } + setMovementMethodIfNeed(); this.clickSpan = clickSpan; return this; } @@ -533,9 +531,7 @@ public SpanUtils setClickSpan(@NonNull final ClickableSpan clickSpan) { public SpanUtils setClickSpan(@ColorInt final int color, final boolean underlineText, final View.OnClickListener listener) { - if (mTextView != null && mTextView.getMovementMethod() == null) { - mTextView.setMovementMethod(LinkMovementMethod.getInstance()); - } + setMovementMethodIfNeed(); this.clickSpan = new ClickableSpan() { @Override @@ -562,11 +558,15 @@ public void onClick(@NonNull View widget) { * @return the single {@link SpanUtils} instance */ public SpanUtils setUrl(@NonNull final String url) { + setMovementMethodIfNeed(); + this.url = url; + return this; + } + + private void setMovementMethodIfNeed() { if (mTextView != null && mTextView.getMovementMethod() == null) { mTextView.setMovementMethod(LinkMovementMethod.getInstance()); } - this.url = url; - return this; } /** diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java index 28efede8d4..f218ae5567 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/StringUtils.java @@ -2,6 +2,7 @@ import android.content.res.Resources; import android.support.annotation.ArrayRes; +import android.support.annotation.Nullable; import android.support.annotation.StringRes; import java.util.IllegalFormatException; @@ -245,7 +246,7 @@ public static String[] getStringArray(@ArrayRes int id) { * @param args The args. * @return a formatted string. */ - public static String format(String str, Object... args) { + public static String format(@Nullable String str, Object... args) { String text = str; if (text != null) { if (args != null && args.length > 0) { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java index b99dc4d21f..96830dd89f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ThreadUtils.java @@ -1216,6 +1216,7 @@ public void run() { if (!isDone() && mTimeoutListener != null) { timeout(); mTimeoutListener.onTimeout(); + onDone(); } } }, mTimeoutMillis); @@ -1287,7 +1288,6 @@ private void timeout() { if (runner != null) { runner.interrupt(); } - onDone(); } @@ -1362,6 +1362,18 @@ public T getValue() { } return mValue; } + + public T getValue(long timeout, TimeUnit unit, T defaultValue) { + if (!mFlag.get()) { + try { + mLatch.await(timeout, unit); + } catch (InterruptedException e) { + e.printStackTrace(); + return defaultValue; + } + } + return mValue; + } } private static Executor getGlobalDeliver() { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java index 69bce2594b..d08f2923bc 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ToastUtils.java @@ -38,6 +38,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.lang.ref.WeakReference; import java.lang.reflect.Field; /** @@ -63,7 +64,7 @@ public final class ToastUtils { private static final String NOTHING = "toast nothing"; private static final ToastUtils DEFAULT_MAKER = make(); - private static IToast iToast; + private static WeakReference sWeakToast; private String mMode; private int mGravity = -1; @@ -82,6 +83,7 @@ public final class ToastUtils { * * @return the single {@link ToastUtils} instance */ + @NonNull public static ToastUtils make() { return new ToastUtils(); } @@ -90,6 +92,7 @@ public static ToastUtils make() { * @param mode The mode. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setMode(@MODE String mode) { mMode = mode; return this; @@ -103,6 +106,7 @@ public final ToastUtils setMode(@MODE String mode) { * @param yOffset Y-axis offset, in pixel. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setGravity(final int gravity, final int xOffset, final int yOffset) { mGravity = gravity; mXOffset = xOffset; @@ -116,6 +120,7 @@ public final ToastUtils setGravity(final int gravity, final int xOffset, final i * @param backgroundColor The color of background. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setBgColor(@ColorInt final int backgroundColor) { mBgColor = backgroundColor; return this; @@ -127,6 +132,7 @@ public final ToastUtils setBgColor(@ColorInt final int backgroundColor) { * @param bgResource The resource of background. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setBgResource(@DrawableRes final int bgResource) { mBgResource = bgResource; return this; @@ -138,6 +144,7 @@ public final ToastUtils setBgResource(@DrawableRes final int bgResource) { * @param msgColor The text color of toast. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setTextColor(@ColorInt final int msgColor) { mTextColor = msgColor; return this; @@ -149,6 +156,7 @@ public final ToastUtils setTextColor(@ColorInt final int msgColor) { * @param textSize The text size of toast. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setTextSize(final int textSize) { mTextSize = textSize; return this; @@ -159,6 +167,7 @@ public final ToastUtils setTextSize(final int textSize) { * * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setDurationIsLong(boolean isLong) { this.isLong = isLong; return this; @@ -170,6 +179,7 @@ public final ToastUtils setDurationIsLong(boolean isLong) { * @param resId The left icon resource identifier. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setLeftIcon(@DrawableRes int resId) { return setLeftIcon(ContextCompat.getDrawable(Utils.getApp(), resId)); } @@ -180,7 +190,8 @@ public final ToastUtils setLeftIcon(@DrawableRes int resId) { * @param drawable The left icon drawable. * @return the single {@link ToastUtils} instance */ - public final ToastUtils setLeftIcon(Drawable drawable) { + @NonNull + public final ToastUtils setLeftIcon(@Nullable Drawable drawable) { mIcons[0] = drawable; return this; } @@ -191,6 +202,7 @@ public final ToastUtils setLeftIcon(Drawable drawable) { * @param resId The top icon resource identifier. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setTopIcon(@DrawableRes int resId) { return setTopIcon(ContextCompat.getDrawable(Utils.getApp(), resId)); } @@ -201,7 +213,8 @@ public final ToastUtils setTopIcon(@DrawableRes int resId) { * @param drawable The top icon drawable. * @return the single {@link ToastUtils} instance */ - public final ToastUtils setTopIcon(Drawable drawable) { + @NonNull + public final ToastUtils setTopIcon(@Nullable Drawable drawable) { mIcons[1] = drawable; return this; } @@ -212,6 +225,7 @@ public final ToastUtils setTopIcon(Drawable drawable) { * @param resId The right icon resource identifier. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setRightIcon(@DrawableRes int resId) { return setRightIcon(ContextCompat.getDrawable(Utils.getApp(), resId)); } @@ -222,7 +236,8 @@ public final ToastUtils setRightIcon(@DrawableRes int resId) { * @param drawable The right icon drawable. * @return the single {@link ToastUtils} instance */ - public final ToastUtils setRightIcon(Drawable drawable) { + @NonNull + public final ToastUtils setRightIcon(@Nullable Drawable drawable) { mIcons[2] = drawable; return this; } @@ -233,6 +248,7 @@ public final ToastUtils setRightIcon(Drawable drawable) { * @param resId The bottom icon resource identifier. * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setBottomIcon(int resId) { return setBottomIcon(ContextCompat.getDrawable(Utils.getApp(), resId)); } @@ -243,7 +259,8 @@ public final ToastUtils setBottomIcon(int resId) { * @param drawable The bottom icon drawable. * @return the single {@link ToastUtils} instance */ - public final ToastUtils setBottomIcon(Drawable drawable) { + @NonNull + public final ToastUtils setBottomIcon(@Nullable Drawable drawable) { mIcons[3] = drawable; return this; } @@ -253,6 +270,7 @@ public final ToastUtils setBottomIcon(Drawable drawable) { * * @return the single {@link ToastUtils} instance */ + @NonNull public final ToastUtils setNotUseSystemToast() { isNotUseSystemToast = true; return this; @@ -263,6 +281,7 @@ public final ToastUtils setNotUseSystemToast() { * * @return the default {@link ToastUtils} instance */ + @NonNull public static ToastUtils getDefaultMaker() { return DEFAULT_MAKER; } @@ -272,7 +291,7 @@ public static ToastUtils getDefaultMaker() { * * @param text The text. */ - public final void show(final CharSequence text) { + public final void show(@Nullable final CharSequence text) { show(text, getDuration(), this); } @@ -301,14 +320,14 @@ public final void show(@StringRes final int resId, final Object... args) { * @param format The format. * @param args The args. */ - public final void show(final String format, final Object... args) { + public final void show(@Nullable final String format, final Object... args) { show(UtilsBridge.format(format, args), getDuration(), this); } /** * Show custom toast. */ - public final void show(final View view) { + public final void show(@NonNull final View view) { show(view, getDuration(), this); } @@ -359,7 +378,7 @@ private View tryApplyUtilsToastView(final CharSequence text) { * * @param text The text. */ - public static void showShort(final CharSequence text) { + public static void showShort(@Nullable final CharSequence text) { show(text, Toast.LENGTH_SHORT, DEFAULT_MAKER); } @@ -388,7 +407,7 @@ public static void showShort(@StringRes final int resId, final Object... args) { * @param format The format. * @param args The args. */ - public static void showShort(final String format, final Object... args) { + public static void showShort(@Nullable final String format, final Object... args) { show(UtilsBridge.format(format, args), Toast.LENGTH_SHORT, DEFAULT_MAKER); } @@ -397,7 +416,7 @@ public static void showShort(final String format, final Object... args) { * * @param text The text. */ - public static void showLong(final CharSequence text) { + public static void showLong(@Nullable final CharSequence text) { show(text, Toast.LENGTH_LONG, DEFAULT_MAKER); } @@ -426,7 +445,7 @@ public static void showLong(@StringRes final int resId, final Object... args) { * @param format The format. * @param args The args. */ - public static void showLong(final String format, final Object... args) { + public static void showLong(@Nullable final String format, final Object... args) { show(UtilsBridge.format(format, args), Toast.LENGTH_LONG, DEFAULT_MAKER); } @@ -434,26 +453,38 @@ public static void showLong(final String format, final Object... args) { * Cancel the toast. */ public static void cancel() { - if (iToast != null) { - iToast.cancel(); - iToast = null; - } + UtilsBridge.runOnUiThread(new Runnable() { + @Override + public void run() { + if (sWeakToast != null) { + final IToast iToast = ToastUtils.sWeakToast.get(); + if (iToast != null) { + iToast.cancel(); + } + sWeakToast = null; + } + } + }); } - private static void show(final CharSequence text, final int duration, final ToastUtils utils) { + private static void show(@Nullable final CharSequence text, final int duration, final ToastUtils utils) { show(null, getToastFriendlyText(text), duration, utils); } - private static void show(final View view, final int duration, final ToastUtils utils) { + private static void show(@NonNull final View view, final int duration, final ToastUtils utils) { show(view, null, duration, utils); } - private static void show(@Nullable final View view, final CharSequence text, final int duration, final ToastUtils utils) { + private static void show(@Nullable final View view, + @Nullable final CharSequence text, + final int duration, + @NonNull final ToastUtils utils) { UtilsBridge.runOnUiThread(new Runnable() { @Override public void run() { cancel(); - iToast = newToast(utils); + IToast iToast = newToast(utils); + ToastUtils.sWeakToast = new WeakReference<>(iToast); if (view != null) { iToast.setToastView(view); } else { @@ -491,9 +522,9 @@ private static IToast newToast(ToastUtils toastUtils) { return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_TOAST); } else if (UtilsBridge.isGrantedDrawOverlays()) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); + return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); } else { - new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_PHONE); + return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_PHONE); } } return new ActivityToast(toastUtils); @@ -553,11 +584,17 @@ static final class WindowManagerToast extends AbsToast { private WindowManager.LayoutParams mParams; - private Utils.ActivityLifecycleCallbacks mActivityLifecycleCallbacks; - WindowManagerToast(ToastUtils toastUtils, int type) { super(toastUtils); mParams = new WindowManager.LayoutParams(); + mWM = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE); + mParams.type = type; + } + + WindowManagerToast(ToastUtils toastUtils, WindowManager wm, int type) { + super(toastUtils); + mParams = new WindowManager.LayoutParams(); + mWM = wm; mParams.type = type; } @@ -587,7 +624,6 @@ public void show(final int duration) { mParams.horizontalMargin = mToast.getHorizontalMargin(); mParams.verticalMargin = mToast.getVerticalMargin(); - mWM = (WindowManager) Utils.getApp().getSystemService(Context.WINDOW_SERVICE); try { if (mWM != null) { mWM.addView(mToastView, mParams); @@ -619,6 +655,7 @@ static final class ActivityToast extends AbsToast { private static int sShowingIndex = 0; private Utils.ActivityLifecycleCallbacks mActivityLifecycleCallbacks; + private IToast iToast; ActivityToast(ToastUtils toastUtils) { super(toastUtils); @@ -629,7 +666,7 @@ public void show(int duration) { if (mToast == null) return; if (!UtilsBridge.isAppForeground()) { // try to use system toast - showSystemToast(duration); + iToast = showSystemToast(duration); return; } boolean hasAliveActivity = false; @@ -637,8 +674,12 @@ public void show(int duration) { if (!UtilsBridge.isActivityAlive(activity)) { continue; } - hasAliveActivity = true; - showWithActivity(activity, sShowingIndex, true); + if (!hasAliveActivity) { + hasAliveActivity = true; + iToast = showWithActivityWindow(activity, duration); + } else { + showWithActivityView(activity, sShowingIndex, true); + } } if (hasAliveActivity) { registerLifecycleCallback(); @@ -652,7 +693,7 @@ public void run() { ++sShowingIndex; } else { // try to use system toast - showSystemToast(duration); + iToast = showSystemToast(duration); } } @@ -676,16 +717,29 @@ public void cancel() { } } } + if (iToast != null) { + iToast.cancel(); + iToast = null; + } super.cancel(); } - private void showSystemToast(int duration) { + private IToast showSystemToast(int duration) { SystemToast systemToast = new SystemToast(mToastUtils); systemToast.mToast = mToast; systemToast.show(duration); + return systemToast; } - private void showWithActivity(final Activity activity, final int index, boolean useAnim) { + private IToast showWithActivityWindow(Activity activity, int duration) { + WindowManagerToast wmToast = new WindowManagerToast(mToastUtils, activity.getWindowManager(), WindowManager.LayoutParams.LAST_APPLICATION_WINDOW); + wmToast.mToastView = getToastViewSnapshot(-1); + wmToast.mToast = mToast; + wmToast.show(duration); + return wmToast; + } + + private void showWithActivityView(final Activity activity, final int index, boolean useAnim) { final Window window = activity.getWindow(); if (window != null) { final ViewGroup decorView = (ViewGroup) window.getDecorView(); @@ -694,6 +748,7 @@ private void showWithActivity(final Activity activity, final int index, boolean ); lp.gravity = mToast.getGravity(); lp.bottomMargin = mToast.getYOffset() + UtilsBridge.getNavBarHeight(); + lp.topMargin = mToast.getYOffset() + UtilsBridge.getStatusBarHeight(); lp.leftMargin = mToast.getXOffset(); View toastViewSnapshot = getToastViewSnapshot(index); if (useAnim) { @@ -704,21 +759,13 @@ private void showWithActivity(final Activity activity, final int index, boolean } } - private View getToastViewSnapshot(final int index) { - Bitmap bitmap = UtilsBridge.view2Bitmap(mToastView); - ImageView toastIv = new ImageView(Utils.getApp()); - toastIv.setTag(TAG_TOAST + index); - toastIv.setImageBitmap(bitmap); - return toastIv; - } - private void registerLifecycleCallback() { final int index = sShowingIndex; mActivityLifecycleCallbacks = new Utils.ActivityLifecycleCallbacks() { @Override public void onActivityCreated(@NonNull Activity activity) { if (isShowing()) { - showWithActivity(activity, index, false); + showWithActivityView(activity, index, false); } } }; @@ -761,6 +808,7 @@ public void setToastView(CharSequence text) { View utilsToastView = mToastUtils.tryApplyUtilsToastView(text); if (utilsToastView != null) { setToastView(utilsToastView); + processRtlIfNeed(); return; } @@ -778,9 +826,16 @@ public void setToastView(CharSequence text) { messageTv.setTextSize(mToastUtils.mTextSize); } setBg(messageTv); + processRtlIfNeed(); } - protected void setBg(final TextView msgTv) { + private void processRtlIfNeed() { + if (UtilsBridge.isLayoutRtl()) { + setToastView(getToastViewSnapshot(-1)); + } + } + + private void setBg(final TextView msgTv) { if (mToastUtils.mBgResource != -1) { mToastView.setBackgroundResource(mToastUtils.mBgResource); msgTv.setBackgroundColor(Color.TRANSPARENT); @@ -809,6 +864,14 @@ public void cancel() { mToast = null; mToastView = null; } + + View getToastViewSnapshot(final int index) { + Bitmap bitmap = UtilsBridge.view2Bitmap(mToastView); + ImageView toastIv = new ImageView(Utils.getApp()); + toastIv.setTag(TAG_TOAST + index); + toastIv.setImageBitmap(bitmap); + return toastIv; + } } interface IToast { diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java index 272eddcb45..28414efd78 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsActivityLifecycleImpl.java @@ -201,6 +201,9 @@ public void onActivityPreCreated(@NonNull Activity activity, @Nullable Bundle sa @Override public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) { + if (mActivityList.size() == 0) { + postStatus(activity, true); + } LanguageUtils.applyLanguage(activity); setAnimatorsEnabled(); setTopActivity(activity); diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java index 5361fdc1de..e920b53635 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UtilsBridge.java @@ -12,6 +12,7 @@ import android.os.Parcelable; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.support.annotation.RequiresPermission; import android.support.annotation.StringRes; @@ -535,7 +536,7 @@ static String getString(@StringRes int id, Object... formatArgs) { return StringUtils.getString(id, formatArgs); } - static String format(String str, Object... args) { + static String format(@Nullable String str, Object... args) { return StringUtils.format(str, args); } @@ -606,6 +607,10 @@ static View layoutId2View(@LayoutRes final int layoutId) { return ViewUtils.layoutId2View(layoutId); } + static boolean isLayoutRtl() { + return ViewUtils.isLayoutRtl(); + } + /////////////////////////////////////////////////////////////////////////// // Common diff --git a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml index ce405066c0..ed731a2299 100644 --- a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml +++ b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml @@ -1,9 +1,5 @@ - - diff --git a/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentView.java b/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentView.java index 246c011492..0af63e0fa8 100644 --- a/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentView.java +++ b/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/BaseContentView.java @@ -10,6 +10,8 @@ import com.blankj.utildebug.base.view.listener.OnBackListener; import com.blankj.utildebug.base.view.listener.OnRefreshListener; +import java.util.Collections; + /** *
      *     author: blankj
    
    From 66a4c0488ca6da273098058d70dabb0fe9b9bd8d Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Mon, 22 Feb 2021 00:07:51 +0800
    Subject: [PATCH 089/122] see 02/22 log
    
    ---
     .../blankj/subutil/util/CoordinateUtils.java  | 28 +++++++++++
     .../com/blankj/utilcode/util/IntentUtils.java |  4 +-
     .../com/blankj/utilcode/util/ScreenUtils.java | 46 ++++++++-----------
     3 files changed, 50 insertions(+), 28 deletions(-)
    
    diff --git a/lib/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java b/lib/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
    index ee6d78a118..c205a52a75 100644
    --- a/lib/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
    +++ b/lib/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
    @@ -121,6 +121,34 @@ public static double[] wgs84ToBd09(double lng, double lat) {
             return gcj02ToBd09(gcj[0], gcj[1]);
         }
     
    +    /**
    +     * Mercator 坐标转 WGS84 坐标
    +     *
    +     * @param lng Mercator 坐标经度
    +     * @param lat Mercator 坐标纬度
    +     * @return WGS84 坐标:[经度,纬度]
    +     */
    +    public static double[] mercatorToWGS84(double lng, double lat) {
    +        double x = lng / 20037508.34d * 180.;
    +        double y = lat / 20037508.34d * 180.;
    +        y = 180 / PI * (2 * Math.atan(Math.exp(y * PI / 180.0)) - PI / 2);
    +        return new double[]{x, y};
    +    }
    +
    +    /**
    +     * WGS84 坐标转 Mercator 坐标
    +     *
    +     * @param lng WGS84 坐标经度
    +     * @param lat WGS84 坐标纬度
    +     * @return Mercator 坐标:[经度,纬度]
    +     */
    +    public static double[] wgs84ToMercator(double lng, double lat) {
    +        double x = lng * 20037508.34D / 180.0;
    +        double y = Math.log(Math.tan((90.0 + lat) * PI / 360.0)) / (PI / 180.);
    +        y = y * 20037508.34D / 180.0;
    +        return new double[]{x, y};
    +    }
    +
         private static double transformLat(double lng, double lat) {
             double ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
             ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java
    index 4a821458fa..fccddd8d35 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/IntentUtils.java
    @@ -389,9 +389,9 @@ public static Intent getComponentIntent(final String pkgName,
         public static Intent getShutdownIntent() {
             Intent intent;
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    -            intent = new Intent(Intent.ACTION_SHUTDOWN);
    -        } else {
                 intent = new Intent("com.android.internal.intent.action.REQUEST_SHUTDOWN");
    +        } else {
    +            intent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
             }
             intent.putExtra("android.intent.extra.KEY_CONFIRM", false);
             return intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
    index cb742b7a7d..623e15518b 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ScreenUtils.java
    @@ -112,39 +112,34 @@ public static float getScreenDensity() {
         public static int getScreenDensityDpi() {
             return Resources.getSystem().getDisplayMetrics().densityDpi;
         }
    -    
    -    
    -    
    -    
    +
         /**
    -     * Return X (width) of the screen expressed as dots-per-inch.
    +     * Return the exact physical pixels per inch of the screen in the Y dimension.
          *
    -     * @return the width of screen density expressed as dots-per-inch
    +     * @return the exact physical pixels per inch of the screen in the Y dimension
          */
    -    public static int getScreenXDpi() {
    +    public static float getScreenXDpi() {
             return Resources.getSystem().getDisplayMetrics().xdpi;
         }
    -    
    +
         /**
    -     * Return Y (height) of the screen expressed as dots-per-inch.
    +     * Return the exact physical pixels per inch of the screen in the Y dimension.
          *
    -     * @return the height of screen density expressed as dots-per-inch
    +     * @return the exact physical pixels per inch of the screen in the Y dimension
          */
    -    public static int getScreenYDpi() {
    +    public static float getScreenYDpi() {
             return Resources.getSystem().getDisplayMetrics().ydpi;
         }
    -    
    -   
    -    
    +
         /**
          * Return the distance between the given View's X (start point of View's width) and the screen width.
          *
          * @return the distance between the given View's X (start point of View's width) and the screen width.
          */
    -    public float calculateDistanceByX(View view) {
    -        int[] point = new int[0];
    +    public int calculateDistanceByX(View view) {
    +        int[] point = new int[2];
             view.getLocationOnScreen(point);
    -        return (getScreenWidth() - point[0]).toFloat();
    +        return getScreenWidth() - point[0];
         }
     
         /**
    @@ -152,10 +147,10 @@ public float calculateDistanceByX(View view) {
          *
          * @return the distance between the given View's Y (start point of View's height) and the screen height.
          */
    -    public float calculateDistanceByY(View view) {
    -        int[] point = new int[0];
    +    public int calculateDistanceByY(View view) {
    +        int[] point = new int[2];
             view.getLocationOnScreen(point);
    -        return (getScreenHeight() - point[1]).toFloat();
    +        return getScreenHeight() - point[1];
         }
     
         /**
    @@ -163,23 +158,22 @@ public float calculateDistanceByY(View view) {
          *
          * @return X coordinate of the given View on the screen.
          */
    -    public int getViewX(View view){
    -        int[] point = new int[0];
    +    public int getViewX(View view) {
    +        int[] point = new int[2];
             view.getLocationOnScreen(point);
             return point[0];
         }
    -    
    +
         /**
          * Return the Y coordinate of the given View on the screen.
          *
          * @return Y coordinate of the given View on the screen.
          */
    -    public int getViewY(View view){
    -        int[] point = new int[0];
    +    public int getViewY(View view) {
    +        int[] point = new int[2];
             view.getLocationOnScreen(point);
             return point[1];
         }
    -    
     
         /**
          * Set full screen.
    
    From f14b404543d17cdba6680a78a15afdf7570a9248 Mon Sep 17 00:00:00 2001
    From: jobs_xie 
    Date: Thu, 22 Apr 2021 10:46:19 +0800
    Subject: [PATCH 090/122] Fix: IllegalStateException: message is already in use
    
    ---
     .../src/main/java/com/blankj/utilcode/util/MessengerUtils.java  | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    index a764eb50b6..d1d4669dbe 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    @@ -320,7 +320,7 @@ private void sendMsg2Client(final Message msg) {
                 for (Messenger client : mClientMap.values()) {
                     try {
                         if (client != null) {
    -                        client.send(msg);
    +                        client.send(Message.obtain(msg));
                         }
                     } catch (RemoteException e) {
                         e.printStackTrace();
    
    From e04bfdf9eff1cc82788a0255d38bdcb9f08180cc Mon Sep 17 00:00:00 2001
    From: jobs_xie 
    Date: Thu, 22 Apr 2021 10:58:44 +0800
    Subject: [PATCH 091/122] Fix: IllegalStateException: message is already in use
    
    ---
     .../main/java/com/blankj/utilcode/util/MessengerUtils.java    | 4 +++-
     1 file changed, 3 insertions(+), 1 deletion(-)
    
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    index d1d4669dbe..61aa8e2543 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    @@ -317,15 +317,17 @@ public int onStartCommand(Intent intent, int flags, int startId) {
             }
     
             private void sendMsg2Client(final Message msg) {
    +           final Message obtain = Message.obtain(msg); //Copy the original
                 for (Messenger client : mClientMap.values()) {
                     try {
                         if (client != null) {
    -                        client.send(Message.obtain(msg));
    +                        client.send(obtain);
                         }
                     } catch (RemoteException e) {
                         e.printStackTrace();
                     }
                 }
    +            obtain.recycle(); //Recycled copy
             }
     
             private void consumeServerProcessCallback(final Message msg) {
    
    From ab073b7a4d856771822c08fbdf2a13f300420ce1 Mon Sep 17 00:00:00 2001
    From: xiexin52k <517436384@qq.com>
    Date: Thu, 22 Apr 2021 14:28:21 +0800
    Subject: [PATCH 092/122] Update MessengerUtils.java
    
    ---
     .../src/main/java/com/blankj/utilcode/util/MessengerUtils.java  | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    index 61aa8e2543..71af539ab7 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MessengerUtils.java
    @@ -321,7 +321,7 @@ private void sendMsg2Client(final Message msg) {
                 for (Messenger client : mClientMap.values()) {
                     try {
                         if (client != null) {
    -                        client.send(obtain);
    +                        client.send(Message.obtain(obtain));
                         }
                     } catch (RemoteException e) {
                         e.printStackTrace();
    
    From 20290bb808058d92cf52a2632fc463faccc10ff6 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?=E9=A9=AC=E6=AD=87=E5=B0=94?= 
    Date: Wed, 5 May 2021 02:51:15 +1000
    Subject: [PATCH 093/122] Added 2 very useful methods
    
    1. isFirstTimeInstall():
    If you want to know whether this is the first time installation of this app in this device.
    2. isAppUpgraded():
    If you want to know whether the current version was installed over a previous version (update/upgrade) or if it is freshly installed (clean install).
    
    Code:
    /**
         * Return true if this is the first ever time that the application is installed on the device.
         *
         * @return true if this is the first ever time that the application is installed on the device.
         */
        public static boolean isFirstTimeInstall(){
            try {
                Long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).firstInstallTime;
                Long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).lastUpdateTime;
                return firstInstallTime == lastUpdateTime;
            } catch (Exception e) {
                return false;
            }
        }
    
        /**
         * Return true if app was previously installed and this one is an update/upgrade to that one, returns false if this is a fresh installation and not an update/upgrade.
         *
         * @return true if app was previously installed and this one is an update/upgrade to that one, returns false if this is a fresh installation and not an update/upgrade.
         */
        public static boolean isAppUpgraded(){
            try {
                Long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).firstInstallTime;
                Long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).lastUpdateTime;
                return firstInstallTime != lastUpdateTime;
            } catch (Exception e) {
                return false;
            }
        }
    ---
     .../com/blankj/utilcode/util/AppUtils.java    | 32 +++++++++++++++++++
     1 file changed, 32 insertions(+)
    
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    index a8b65dfecf..1cc9112b16 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    @@ -384,6 +384,38 @@ public static int getAppIconId(final String packageName) {
             }
         }
     
    +    
    +    /**
    +     * Return true if this is the first ever time that the application is installed on the device.
    +     *
    +     * @return true if this is the first ever time that the application is installed on the device.
    +     */
    +    public static boolean isFirstTimeInstall(){
    +        try {
    +            Long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).firstInstallTime;
    +            Long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).lastUpdateTime;
    +            return firstInstallTime == lastUpdateTime;
    +        } catch (Exception e) {
    +            return false;
    +        }
    +    }
    +
    +    /**
    +     * Return true if app was previously installed and this one is an update/upgrade to that one, returns false if this is a fresh installation and not an update/upgrade.
    +     *
    +     * @return true if app was previously installed and this one is an update/upgrade to that one, returns false if this is a fresh installation and not an update/upgrade.
    +     */
    +    public static boolean isAppUpgraded(){
    +        try {
    +            Long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).firstInstallTime;
    +            Long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).lastUpdateTime;
    +            return firstInstallTime != lastUpdateTime;
    +        } catch (Exception e) {
    +            return false;
    +        }
    +    }
    +    
    +   
         /**
          * Return the application's package name.
          *
    
    From cbea6b40658e04ee923c2e4c1d5fad0e18bae5ae Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?=E9=A9=AC=E6=AD=87=E5=B0=94?= 
    Date: Tue, 4 May 2021 18:56:24 +0200
    Subject: [PATCH 094/122] Added yet another 2 very useful methods
    
    1. isBehindProxy():
    Returns true if device is connecting to the internet via a proxy, works for both Wi-Fi and Mobile Data.
    2. isUsingVPN():
    Returns true if device is connecting to the internet via a VPN.
    ---
     .../blankj/utilcode/util/NetworkUtils.java    | 28 +++++++++++++++++++
     1 file changed, 28 insertions(+)
    
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
    index 8f874dbf38..37104b1b43 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
    @@ -261,6 +261,34 @@ public static boolean getMobileDataEnabled() {
             }
             return false;
         }
    +    
    +     /**
    +     * Returns true if device is connecting to the internet via a proxy, works for both Wi-Fi and Mobile Data.
    +     *
    +     * @return true if using proxy to connect to the internet.
    +     */
    +    public static boolean isBehindProxy(){
    +        return !(System.getProperty("http.proxyHost") == null || System.getProperty("http.proxyPort") == null);
    +    }
    +
    +    /**
    +     * Returns true if device is connecting to the internet via a VPN.
    +     *
    +     * @return true if using VPN to conncet to the internet.
    +     */
    +    public static boolean isUsingVPN(){
    +        ConnectivityManager cm = (ConnectivityManager) com.blankj.utilcode.util.Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE);
    +        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    +            return cm.getNetworkInfo(ConnectivityManager.TYPE_VPN).isConnectedOrConnecting()
    +        } else {
    +            return cm.getNetworkInfo(NetworkCapabilities.TRANSPORT_VPN).isConnectedOrConnecting()
    +        }
    +    }
    +
    +    
    +    
    +    
    +    
     
         /**
          * Return whether using mobile data.
    
    From ebc64cd35122d1cba80822dd5942900d7fa507ae Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?=E9=A9=AC=E6=AD=87=E5=B0=94?= 
    Date: Mon, 10 May 2021 10:11:14 +0700
    Subject: [PATCH 095/122] Added 4 useful methods
    
    /**
         * Returns the domain part of a given Email address
         *
         * @param email The Email address. E.g Returns "protonmail.com" from the given Email "johnsmith@protonmail.com".
         * @return the domain part of a given Email address.
         */
        public static String extractEmailProvider(String email) {
            return email.substring(email.lastIndexOf("@") + 1);
        }
    
        /**
         * Returns the username part of a given Email address. E.g. Returns "johnsmith" from the given Email "johnsmith@protonmail.com".
         *
         * @param email The Email address.
         * @return the username part of a given Email address.
         */
        public static String extractEmailUsername(String email) {
            return email.substring(0, email.lastIndexOf("@"));
        }
    
    
        /**
         * Return whether a given Email address is on a specified Email provider. E.g. "johnsmith@protonmail.com" and "gmail.com" will return false.
         *
         * @param email The Email address.
         * @param emailProvider The Email provider to testify against.
         * @return {@code true}: yes
    {@code false}: no */ public static boolean isFromEmailProvider(String email, String emailProvider) { return extractEmailProvider(email).equalsIgnoreCase(emailProvider); } /** * Return whether a given Email address is on any of the specified Email providers list (array). E.g. Useful if you pass it a list of real Email provider services and check if the Email is a disposable Email or a real one. * * @param email The Email address. * @param emailProviders The list of Email providers to testify against. * @return {@code true}: yes
    {@code false}: no */ public static boolean isFromAnyOfEmailProviders(String email, String[] emailProviders) { return com.blankj.utilcode.util.ArrayUtils.contains(emailProviders, extractEmailProvider(email)); } --- .../com/blankj/utilcode/util/RegexUtils.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java index ae90e4ea5e..624a93511c 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java @@ -40,6 +40,54 @@ public static boolean isMobileSimple(final CharSequence input) { return isMatch(RegexConstants.REGEX_MOBILE_SIMPLE, input); } + + /** + * Returns the domain part of a given Email address + * + * @param email The Email address. E.g Returns "protonmail.com" from the given Email "johnsmith@protonmail.com". + * @return the domain part of a given Email address. + */ + public static String extractEmailProvider(String email) { + return email.substring(email.lastIndexOf("@") + 1); + } + + /** + * Returns the username part of a given Email address. E.g. Returns "johnsmith" from the given Email "johnsmith@protonmail.com". + * + * @param email The Email address. + * @return the username part of a given Email address. + */ + public static String extractEmailUsername(String email) { + return email.substring(0, email.lastIndexOf("@")); + } + + + /** + * Return whether a given Email address is on a specified Email provider. E.g. "johnsmith@protonmail.com" and "gmail.com" will return false. + * + * @param email The Email address. + * @param emailProvider The Email provider to testify against. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isFromEmailProvider(String email, String emailProvider) { + return extractEmailProvider(email).equalsIgnoreCase(emailProvider); + } + + /** + * Return whether a given Email address is on any of the specified Email providers list (array). E.g. Useful if you pass it a list of real Email provider services and check if the Email is a disposable Email or a real one. + * + * @param email The Email address. + * @param emailProviders The list of Email providers to testify against. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isFromAnyOfEmailProviders(String email, String[] emailProviders) { + return com.blankj.utilcode.util.ArrayUtils.contains(emailProviders, extractEmailProvider(email)); + } + + + + + /** * Return whether input matches regex of exact mobile. * From 402cc73a240a9527cea3180c6cf647223b3e6e91 Mon Sep 17 00:00:00 2001 From: caimengjie Date: Thu, 13 May 2021 01:09:26 +0800 Subject: [PATCH 096/122] add(publish): support publish mavenCentral --- CHANGELOG.md | 1 + build.gradle | 13 +- buildApp.gradle | 44 ++-- buildCommon.gradle | 16 -- buildSrc/src/main/groovy/Config.groovy | 6 +- config/flavor.gradle | 22 ++ config/publish.gradle | 237 ++++++++++++++++++ feature/utilcode/export/build.gradle | 14 +- gradle/publish.gradle | 237 ------------------ gradle/wrapper/gradle-wrapper.properties | 2 +- lib/subutil/build.gradle | 2 +- lib/utilcode/build.gradle | 15 +- lib/utilcode/src/main/AndroidManifest.xml | 2 +- .../com/blankj/utilcode/util/IntentUtils.java | 2 +- .../com/blankj/utilcode/util/ToastUtils.java | 2 +- .../com/blankj/utilcode/util/UriUtils.java | 2 +- lib/utildebug/build.gradle | 4 - plugin/api-gradle-plugin/build.gradle | 6 +- plugin/bus-gradle-plugin/build.gradle | 6 +- plugin/lib/base-transform/build.gradle | 6 +- script/clean.sh | 4 - script/gitHelp.sh | 45 ++++ script/runDevDebug.sh | 9 + script/runProductionRelease.sh | 9 + 24 files changed, 380 insertions(+), 326 deletions(-) create mode 100644 config/flavor.gradle create mode 100644 config/publish.gradle delete mode 100644 gradle/publish.gradle delete mode 100755 script/clean.sh create mode 100755 script/gitHelp.sh create mode 100755 script/runDevDebug.sh create mode 100755 script/runProductionRelease.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index db3e52985a..401a5071f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* `21/05/13` [add] Support publish mavenCentral. * `21/02/22` [add] Fix ToastUtils rtl bug. Publish v1.30.6. * `20/11/16` [add] Add ImageUtils#save2Album support param of dirName. * `20/11/13` [add] Fix MessengerUtils ANR. Add NetworkUtils#getWifiScanResult, [add|remove]OnWifiChangedConsumer. Publish v1.30.5. diff --git a/build.gradle b/build.gradle index dd27b98617..133f032278 100644 --- a/build.gradle +++ b/build.gradle @@ -2,11 +2,9 @@ buildscript { ConfigUtils.init(gradle) repositories { - // use for debug plugin local - if (Config.depConfig.plugin_bus.useLocal || Config.depConfig.plugin_api.useLocal) { - maven() { url uri("${project.rootDir.path}/mavenLocal") } - } + mavenLocal() google() + mavenCentral() jcenter() } @@ -19,9 +17,10 @@ buildscript { allprojects { repositories { - maven() { url uri("${project.rootDir.path}/mavenLocal") } + mavenLocal() maven { url "https://jitpack.io/" } google() + mavenCentral() jcenter() } @@ -29,8 +28,8 @@ allprojects { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' resolutionStrategy.eachDependency { - if (it.requested.group == 'com.android.support' - && !it.requested.name.contains('multidex')) { + if (it.requested.group == 'com.android.support' && !it.requested.name.contains( + 'multidex')) { it.useVersion Config.supportVersion } } diff --git a/buildApp.gradle b/buildApp.gradle index 7aa523c466..d7ed2c75a3 100644 --- a/buildApp.gradle +++ b/buildApp.gradle @@ -1,6 +1,7 @@ apply { plugin "com.android.application" - from "${rootDir.path}/buildCommon.gradle" + from "${rootDir.path}/buildCommon.gradle" + from "${rootDir.path}/config/flavor.gradle" if (Config.depConfig.plugin_api.isApply) { plugin Config.depConfig.plugin_api.pluginId } @@ -32,19 +33,11 @@ android { } buildTypes { - debug { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - applicationIdSuffix ".debug" - resValue "string", "app_name", Config.appName + suffix + ".debug" - } + debug {} release { - aaptOptions.cruncherEnabled = false - aaptOptions.useNewCruncher = false minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - resValue "string", "app_name", Config.appName + suffix } } @@ -58,8 +51,19 @@ android { maxProcessCount 8 dexInProcess = true } -} + productFlavors { + dev { + applicationIdSuffix ".dev" + versionNameSuffix "-dev" + resValue "string", "app_name", Config.appName + suffix + "-dev" + } + + production { + resValue "string", "app_name", Config.appName + suffix + } + } +} dependencies { // LeakCanary @@ -80,7 +84,9 @@ dependencies { def getSuffix() { if (project.name == "feature_launcher_app") return "" - return "." + project.name.substring("feature_".length(), project.name.length() - "_app".length()) + return "." + project. + name. + substring("feature_".length(), project.name.length() - "_app".length()) } def configSigning() { @@ -110,12 +116,14 @@ def configApkName() { if (variant.buildType.name != "debug") { def artifact = variant.getPackageApplicationProvider().get() artifact.outputDirectory = new File("${rootDir.path}/apk") - artifact.outputScope.apkDatas.forEach { apkData -> - apkData.outputFileName = "util" + suffix + - (variant.flavorName == "" ? "" : ("_" + variant.flavorName)) + - "_" + variant.versionName.replace(".", "_") + - "_" + variant.buildType.name + - ".apk" + variant.outputs.each { + it.outputFileName = "util" + suffix + + (variant.flavorName == "" ? "" : ("_" + variant.flavorName)) + + "_" + + variant.versionName.replace(".", "_") + + "_" + + variant.buildType.name + + ".apk" } } } diff --git a/buildCommon.gradle b/buildCommon.gradle index f83f74f52d..8cbcc26255 100644 --- a/buildCommon.gradle +++ b/buildCommon.gradle @@ -22,20 +22,4 @@ android { lintOptions { abortOnError false } - -// viewBinding { -// enabled = true -// } - -// flavorDimensions "region" -// -// productFlavors { -// china { -// dimension "region" -// } -// -// oversea { -// dimension "region" -// } -// } } \ No newline at end of file diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 9b6e55d3bb..4fb2b7ef2f 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -15,10 +15,10 @@ class Config { static minSdkVersion = 14 static targetSdkVersion = 29 static versionCode = 1_030_006 - static versionName = '1.30.6'// E.g. 1.9.72 => 1,009,072 + static versionName = '1.30.7-alpha1'// E.g. 1.9.72 => 1,009,072 // lib version - static gradlePluginVersion = '3.5.2' + static gradlePluginVersion = '4.1.0' static kotlinVersion = '1.3.72' static androidxVersion = '1.0.0' @@ -47,8 +47,6 @@ class Config { /*Never delete this line*/ plugin_gradle : new DepConfig(pluginPath: "com.android.tools.build:gradle:$gradlePluginVersion"), plugin_kotlin : new DepConfig(pluginPath: "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"), - plugin_maven : new DepConfig(pluginPath: "com.github.dcendents:android-maven-gradle-plugin:2.1", pluginId: "com.github.dcendents.android-maven"),// 上传到 maven - plugin_bintray : new DepConfig(pluginPath: "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4", pluginId: "com.jfrog.bintray"),// 上传到 bintray plugin_traute : new DepConfig(pluginPath: "tech.harmonysoft:traute-gradle:1.1.10", pluginId: "tech.harmonysoft.oss.traute"),// 注解转非空判断 // 上传新版本插件更新 pluginPath 中的版本号,并设置 isApply = false diff --git a/config/flavor.gradle b/config/flavor.gradle new file mode 100644 index 0000000000..25c1801983 --- /dev/null +++ b/config/flavor.gradle @@ -0,0 +1,22 @@ +android { + flavorDimensions "env" + productFlavors { + dev { + dimension "env" + } + + production { + dimension "env" + } + } + + variantFilter { variant -> + def flavorNames = variant.flavors*.name + def buildTypeName = variant.buildType.name + + // production 包不允许 debug 构建 + if (flavorNames.contains("production") && buildTypeName.contains("debug")) { + variant.setIgnore(true) + } + } +} \ No newline at end of file diff --git a/config/publish.gradle b/config/publish.gradle new file mode 100644 index 0000000000..af97da785b --- /dev/null +++ b/config/publish.gradle @@ -0,0 +1,237 @@ +/* + 1. add + signing.keyId=xx + signing.password=xx + signing.secretKeyRingFile=/Users/xx/secring.gpg + ossrhUsername=xx + ossrhPassword=xx + in root local.properties + + 2. copy the file to the directory of gradle, and apply the file in the module + ext { + groupId = Config.depConfig.lib_utilcode.groupId + artifactId = Config.depConfig.lib_utilcode.artifactId + version = Config.depConfig.lib_utilcode.version + website = "https://github.com/Blankj/AndroidUtilCode" +} + apply from: "${rootDir.path}/config/publish.gradle" + + 3. execute following command to publish + ./gradlew :xxmodule:publish2Local -> upload to mavenCentral + ./gradlew :xxmodule:publish2Remote -> upload to mavenLocal +*/ + +apply plugin: 'maven-publish' +apply plugin: 'signing' + +ext.multiPublishMode = true + +File localPropertiesFile = project.rootProject.file("local.properties"); +if (localPropertiesFile.exists()) { + Properties properties = new Properties() + properties.load(new FileInputStream(localPropertiesFile)) + properties.each { name, value -> ext[name] = value } +} else { + if (!ext["signing.keyId"] && !ext["signing.password"] && + !ext["signing.secretKeyRingFile"] && + !ext["ossrhUsername"] && + !ext["ossrhPassword"]) { + throw new NullPointerException("U should set MavenCentral params in local.properties") + } +} + +afterEvaluate { + def ext = project.ext + publishing { + publications { + release(MavenPublication) { + groupId ext.groupId + artifactId ext.artifactId + version ext.version + + if (isAndroidEnv(project)) { + if (project.ext.multiPublishMode) { + artifact("$buildDir/outputs/aar/${project.getName()}-release.aar") + artifact sourcesJar + } else { + from project.components.release + } + } else { + from project.components.java + } + + pom { + name = ext.artifactId + description = ext.artifactId + url = ext.website + + licenses { + license { + name = 'The Apache Software License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + id = ext.ossrhUsername + name = ext.ossrhUsername + } + } + scm { + url = ext.website + connection = ext.website + developerConnection = ext.website + ".git" + } + + if (project.ext.multiPublishMode) { + withXml { + def dependenciesNode = asNode().getAt('dependencies')[0] ?: + asNode().appendNode('dependencies') + + configurations. + api. + getDependencies(). + each { dep -> addDependency(project, dependenciesNode, dep, "compile") } + configurations. + implementation. + getDependencies(). + each { dep -> addDependency(project, dependenciesNode, dep, "runtime") } + } + } + } + } + } + + repositories { + maven { + // s01 is newest + def releasesUrl = "https://s01.oss.sonatype.org/content/repositories/releases/" + def snapshotUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" + url = version.toUpperCase().endsWith('SNAPSHOT') ? snapshotUrl : releasesUrl + + credentials { + username ossrhUsername + password ossrhPassword + } + } + } + } + + signing { + sign publishing.publications + } +} + +private void addDependency(Project project, def dependenciesNode, Dependency dep, String scope) { + if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified") { + return + } + + final dependencyNode = dependenciesNode.appendNode('dependency') + dependencyNode.appendNode('scope', scope) + + if (dep.version == 'unspecified') { + // 检测 module 中的 dependencies 是否有源码依赖 + // 如果是源码依赖,而且没有在 config 中配置 remotePath, + // 那么发布到仓库,其他地方依赖该库时会找不到源码的那个库 + println "publish -> module(unspecified) <${dep.group}:${dep.name}:${dep.version}>" + if (project.ext.groupId || project.ext.version) { + throw new GradleException( + "The module of <" + dep.name + "> should set groupId & version.") + } + // 源码依赖,但配置了 remotePath,让 pom 中写入 remotePath + println( + "publish -> module(wrapped) <${project.ext.groupId}:${name}:${project.ext.version}>") + + dependencyNode.appendNode('groupId', project.ext.pomGroupID) + dependencyNode.appendNode('artifactId', dep.name) + dependencyNode.appendNode('version', project.ext.pomVersion) + } else { + dependencyNode.appendNode('groupId', dep.group) + dependencyNode.appendNode('artifactId', dep.name) + dependencyNode.appendNode('version', dep.version) + println("publish -> library <${dep.group}:${dep.name}:${dep.version}>") + } + + if (!dep.transitive) { + // In case of non transitive dependency, + // all its dependencies should be force excluded from them POM file + final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion') + exclusionNode.appendNode('groupId', '*') + exclusionNode.appendNode('artifactId', '*') + } else if (!dep.properties.excludeRules.empty) { + // For transitive with exclusions, all exclude rules should be added to the POM file + final exclusions = dependencyNode.appendNode('exclusions') + dep.properties.excludeRules.each { ExcludeRule rule -> + final exclusionNode = exclusions.appendNode('exclusion') + exclusionNode.appendNode('groupId', rule.group ?: '*') + exclusionNode.appendNode('artifactId', rule.module ?: '*') + } + } +} + +if (isAndroidEnv(project)) { + // This generates sources.jar + task sourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.source + } + + task javadoc(type: Javadoc) { + source = android.sourceSets.main.java.source + classpath += configurations.compile + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + } + + task javadocJar(type: Jar, dependsOn: javadoc) { + classifier = 'javadoc' + from javadoc.destinationDir + } +} else { + task sourcesJar(type: Jar, dependsOn: classes) { + classifier = 'sources' + from sourceSets.main.allSource + } + + task javadocJar(type: Jar, dependsOn: javadoc) { + classifier = 'javadoc' + from javadoc.destinationDir + } +} + +if (project.hasProperty("kotlin")) { + // Disable creating javadocs + project.tasks.withType(Javadoc) { + enabled = false + } +} + +javadoc { + options { + encoding "UTF-8" + charSet 'UTF-8' + author true + version project.ext.version + links "http://docs.oracle.com/javase/7/docs/api" + title "${project.ext.artifactId} ${project.ext.version}" + } +} + +artifacts { + archives javadocJar + archives sourcesJar +} + +static def isAndroidEnv(Project project) { + return project.getPlugins().hasPlugin('com.android.application') || project. + getPlugins(). + hasPlugin('com.android.library') +} + +task publish2Local(type: GradleBuild) { + tasks = ['clean', 'assemble', 'publishReleasePublicationToMavenLocal'] +} + +task publish2Remote(type: GradleBuild) { + tasks = ['clean', 'assemble', 'publishReleasePublicationToMavenRepository'] +} \ No newline at end of file diff --git a/feature/utilcode/export/build.gradle b/feature/utilcode/export/build.gradle index cecc254461..815f9babe6 100644 --- a/feature/utilcode/export/build.gradle +++ b/feature/utilcode/export/build.gradle @@ -1,10 +1,8 @@ -apply from: "${rootDir.path}/gradle/publish.gradle" -publish { - def depConfig = Config.depConfig.feature_utilcode_export - name = "UtilCodeExport" - groupId = depConfig.groupId - artifactId = depConfig.artifactId - version = depConfig.version - website = "https://github.com/Blankj/UtilCodeExport" +ext { + groupId = Config.depConfig.feature_utilcode_export.groupId + artifactId = Config.depConfig.feature_utilcode_export.artifactId + version = Config.depConfig.feature_utilcode_export.version + website = "https://github.com/Blankj/AndroidUtilCode" } +apply from: "${rootDir.path}/config/publish.gradle" //./gradlew :feature_utilcode_export:mavenLocal // 上传到本地 mavenLocal \ No newline at end of file diff --git a/gradle/publish.gradle b/gradle/publish.gradle deleted file mode 100644 index 76bb5fea66..0000000000 --- a/gradle/publish.gradle +++ /dev/null @@ -1,237 +0,0 @@ -/* - 1. must add the following classpath in root build.gradle - classpath "com.github.dcendents:android-maven-gradle-plugin:2.1" - classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4" - - 2. add bintrayUser, bintrayKey in root local.properties - - 3. copy the file to the directory of gradle, and apply the file in the module - apply from: "${rootDir.path}/gradle/publish.gradle" - publish { - name = "UtilCode" - groupId = "com.blankj" - artifactId = "utilcode" - version = "xx.xx" - website = "https://github.com/Blankj/AndroidUtilCode" - } - - 4. execute following command to publish - ./gradlew bintrayUpload -> upload to bintray - ./gradlew mavenLocal -> upload to local maven -*/ - -apply plugin: "com.github.dcendents.android-maven" -apply plugin: "com.jfrog.bintray" - -extensions.create('publish', PublishExtension) - -afterEvaluate { - def ext = project['publish'] as PublishExtension - loadBintray(ext) - configMaven(project, ext) - configBintray(project, ext) - configJavadoc(project, ext) -} - -private void loadBintray(PublishExtension ext) { - Properties properties = new Properties() - File localPropertiesFile = project.rootProject.file("local.properties"); - if (localPropertiesFile.exists()) { - properties.load(localPropertiesFile.newDataInputStream()) - ext.bintrayUser = properties.getProperty("bintrayUser") - ext.bintrayKey = properties.getProperty("bintrayKey") - } -} - -def configMaven(Project project, PublishExtension ext) { - project.group = ext.groupId - project.version = ext.version - - project.install { - repositories.mavenInstaller { - configPom(pom, ext) - } - } - - project.tasks.create("mavenLocal", Upload) { - group("publishing") - configuration = project.configurations.archives - - repositories.mavenDeployer { - repository(url: uri("${project.rootDir.path}/mavenLocal")) - configPom(pom, ext) - } - - doFirst { - ext.check(false) - } - } - - project.tasks.findByName("bintrayUpload").doFirst { - ext.check(true) - } -} - -def configPom(pom, PublishExtension ext) { - pom.project { - name ext.name - groupId ext.groupId - artifactId ext.artifactId - version ext.version - packaging isAndroid() ? "aar" : "jar" - description ext.name - url ext.website - - scm { - url ext.website - connection ext.website - developerConnection ext.website + ".git" - } - - licenses { - license { - name 'The Apache Software License, Version 2.0' - url 'http://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - - developers { - developer { - id ext.bintrayUser - name ext.bintrayUser - } - } - } - - pom.whenConfigured { - // 检测 module 中的 dependencies 是否有源码依赖 - // 如果是源码依赖,而且没有在 config 中配置 remotePath,那么发布到仓库,其他地方依赖该库时会找不到源码的那个库 - it.dependencies.findAll { dep -> dep.version == "unspecified" }.collect { dep -> - DepConfig config = Config.depConfig.get(dep.artifactId) - if (config == null || config.version == null) { - // 源码依赖而且没有在 config 中配置 remotePath,直接报错 - System.err.println("The module of <" + dep.artifactId + "> should publish to maven first.") - throw new RuntimeException() - } - dep.groupId = config.groupId - dep.version = config.version - // 源码依赖,但配置了 remotePath,让 pom 中写入 remotePath - GLog.l("Please check <${dep.groupId}:${dep.artifactId}:${dep.version}> is published.") - } - } -} - -def configBintray(Project project, PublishExtension ext) { - project.bintray { - user = ext.bintrayUser - key = ext.bintrayKey - configurations = ['archives'] - override = false - publish = true - pkg { - repo = "maven" - name = ext.name - websiteUrl = ext.website - vcsUrl = ext.website + '.git' - licenses = ["Apache-2.0"] - } - } -} - -private void configJavadoc(Project project, PublishExtension ext) { - if (isAndroid()) { - // This generates sources.jar - task sourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.source - } - - task javadoc(type: Javadoc) { - source = android.sourceSets.main.java.source - classpath += configurations.compile - classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) - } - - task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' - from javadoc.destinationDir - } - } else { - task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' - from sourceSets.main.allSource - } - - task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' - from javadoc.destinationDir - } - } - - if (project.hasProperty("kotlin")) { - // Disable creating javadocs - project.tasks.withType(Javadoc) { - enabled = false - } - } - - javadoc { - options { - encoding "UTF-8" - charSet 'UTF-8' - author true - version ext.version - links "http://docs.oracle.com/javase/7/docs/api" - title "${ext.name} ${ext.version}" - } - } - - artifacts { - archives javadocJar - archives sourcesJar - } -} - -def isAndroid() { - return project.getPlugins().hasPlugin('com.android.application') || - project.getPlugins().hasPlugin('com.android.library') -} - -class PublishExtension { - String name - String groupId - String artifactId - String version - String website - - String bintrayUser - String bintrayKey - - void check(boolean isBintray) { - checkField(name, "name") - checkField(groupId, "groupId") - checkField(artifactId, "artifactId") - checkField(version, "version") - checkField(website, "website") - - if (isBintray) { - if (isBintrayEmpty()) { - throw new NullPointerException("U should set bintrayUser and bintrayKey in local.properties") - } - } - } - - boolean isBintrayEmpty() { - return isEmpty(bintrayUser) || isEmpty(bintrayKey) - } - - static void checkField(String field, String fieldName) { - if (isEmpty(field)) { - throw new NullPointerException("$fieldName is empty!!") - } - } - - static boolean isEmpty(String str) { - return str == null || str.length() == 0 - } -} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e4718dff4d..1e0ae1a108 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip diff --git a/lib/subutil/build.gradle b/lib/subutil/build.gradle index a561916f3e..1d2b458537 100644 --- a/lib/subutil/build.gradle +++ b/lib/subutil/build.gradle @@ -1,5 +1,5 @@ apply { - plugin Config.depConfig.plugin_traute.pluginId +// plugin Config.depConfig.plugin_traute.pluginId plugin "readme-sub" } diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index 891f7dbf40..612969a45c 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -1,5 +1,5 @@ apply { - plugin Config.depConfig.plugin_traute.pluginId + // plugin Config.depConfig.plugin_traute.pluginId plugin "readme-core" } @@ -29,7 +29,7 @@ android { dependencies { implementation Config.depConfig.gson.dep - compileOnly Config.depConfig.androidx_appcompat.dep + implementation Config.depConfig.androidx_appcompat.dep compileOnly Config.depConfig.androidx_material.dep testImplementation Config.depConfig.test_junit.dep @@ -39,15 +39,10 @@ dependencies { testImplementation Config.depConfig.eventbus_lib.dep } -afterEvaluate { - verifyReleaseResources.enabled(false) -} - -apply from: "${rootDir.path}/gradle/publish.gradle" -publish { - name = "UtilCodeX" +ext { groupId = Config.depConfig.lib_utilcode.groupId artifactId = Config.depConfig.lib_utilcode.artifactId version = Config.depConfig.lib_utilcode.version website = "https://github.com/Blankj/AndroidUtilCode" -} \ No newline at end of file +} +apply from: "${rootDir.path}/config/publish.gradle" \ No newline at end of file diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml index 4cf4fe1090..fc5b75e0e3 100644 --- a/lib/utilcode/src/main/AndroidManifest.xml +++ b/lib/utilcode/src/main/AndroidManifest.xml @@ -18,7 +18,7 @@ = Build.VERSION_CODES.N) { - String authority = Utils.getApp().getPackageName() + ".utilcode.provider"; + String authority = Utils.getApp().getPackageName() + ".utilcode.fileprovider"; return FileProvider.getUriForFile(Utils.getApp(), authority, file); } else { return Uri.fromFile(file); diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle index 4dd4682f3c..22f1f7294b 100644 --- a/lib/utildebug/build.gradle +++ b/lib/utildebug/build.gradle @@ -1,7 +1,3 @@ -afterEvaluate { - verifyReleaseResources.enabled(false) -} - dependencies { compileOnly Config.depConfig.androidx_appcompat.dep compileOnly Config.depConfig.androidx_material.dep diff --git a/plugin/api-gradle-plugin/build.gradle b/plugin/api-gradle-plugin/build.gradle index 8b859f35a6..2f6b956ee0 100755 --- a/plugin/api-gradle-plugin/build.gradle +++ b/plugin/api-gradle-plugin/build.gradle @@ -31,14 +31,12 @@ sourceSets { } } -apply from: "${rootDir.path}/gradle/publish.gradle" -publish { - name = "ApiPlugin" +ext { groupId = Config.depConfig.plugin_api.groupId artifactId = Config.depConfig.plugin_api.artifactId version = Config.depConfig.plugin_api.version website = "https://github.com/Blankj/AndroidUtilCode" } - +apply from: "${rootDir.path}/config/publish.gradle" //./gradlew clean :plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean :plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter diff --git a/plugin/bus-gradle-plugin/build.gradle b/plugin/bus-gradle-plugin/build.gradle index ec264eaf4e..7cd24042a7 100755 --- a/plugin/bus-gradle-plugin/build.gradle +++ b/plugin/bus-gradle-plugin/build.gradle @@ -31,14 +31,12 @@ sourceSets { } } -apply from: "${rootDir.path}/gradle/publish.gradle" -publish { - name = "BusPlugin" +ext { groupId = Config.depConfig.plugin_bus.groupId artifactId = Config.depConfig.plugin_bus.artifactId version = Config.depConfig.plugin_bus.version website = "https://github.com/Blankj/AndroidUtilCode" } - +apply from: "${rootDir.path}/config/publish.gradle" //./gradlew clean :plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean :plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter \ No newline at end of file diff --git a/plugin/lib/base-transform/build.gradle b/plugin/lib/base-transform/build.gradle index 72d0abe453..3518481ebd 100755 --- a/plugin/lib/base-transform/build.gradle +++ b/plugin/lib/base-transform/build.gradle @@ -18,14 +18,12 @@ sourceSets { } } -apply from: "${rootDir.path}/gradle/publish.gradle" -publish { - name = "BaseTransform" +ext { groupId = Config.depConfig.plugin_lib_base_transform.groupId artifactId = Config.depConfig.plugin_lib_base_transform.artifactId version = Config.depConfig.plugin_lib_base_transform.version website = "https://github.com/Blankj/AndroidUtilCode" } - +apply from: "${rootDir.path}/config/publish.gradle" //./gradlew clean plugin:lib:plugin_lib_base-transform:mavenLocal // 上传到本地 mavenLocal //./gradlew clean plugin:lib:plugin_lib_base-transform:bintrayUpload // 上传到 gradle 插件库中 diff --git a/script/clean.sh b/script/clean.sh deleted file mode 100755 index 2ff72056bb..0000000000 --- a/script/clean.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -rm -rf .idea -find . -name "*.iml" -type f -exec rm -rf {} \; -find . -name "build" -type d -exec rm -rf {} \; \ No newline at end of file diff --git a/script/gitHelp.sh b/script/gitHelp.sh new file mode 100755 index 0000000000..af98ce2ac6 --- /dev/null +++ b/script/gitHelp.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +while true; do + echo " ############## input command code #################" + echo " # [1] Git Push #" + echo " # [2] Git Push And Merge to Master #" + echo " # [other] exit #" + echo " ###################################################" + + read which + + case $which in + 1) + curBranch=$(git symbolic-ref --short -q HEAD) + gitPush $curBranch + ;; + 2) + curBranch=$(git symbolic-ref --short -q HEAD) + gitPush $curBranch + echo "git checkout master" + echo $(git checkout master) + echo "git merge $branchName" + echo $(git merge $branchName) + echo "git push origin master" + echo $(git push origin master) + echo "git checkout $branchName" + echo $(git checkout $branchName) + ;; + *) + echo "88" + break + ;; + esac +done + +function gitPush() { + curBranch=$1 + echo "curBranch = $curBranch" + echo "git add -A" + echo $(git add -A) + date=$(date "+%m/%d") + echo "git commit -m \"see $date log\"" + echo $(git commit -m "see $date log") + echo "git push origin $curBranch" + echo $(git push origin $curBranch) +} diff --git a/script/runDevDebug.sh b/script/runDevDebug.sh new file mode 100755 index 0000000000..e42394e0c8 --- /dev/null +++ b/script/runDevDebug.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -e + +# build dev debug apk +./gradlew --daemon installDevDebug + +# start main activity +adb shell am start -n "com.blankj.androidutilcode.dev/com.blankj.main.pkg.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER \ No newline at end of file diff --git a/script/runProductionRelease.sh b/script/runProductionRelease.sh new file mode 100755 index 0000000000..a3d44d5ede --- /dev/null +++ b/script/runProductionRelease.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -e + +# build dev debug apk +./gradlew --daemon installProductionRelease + +# start main activity +adb shell am start -n "com.blankj.androidutilcode/com.blankj.main.pkg.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER \ No newline at end of file From 8faee0b382724d3579921672f8a5dbb9c9360f30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=AD=87=E5=B0=94?= Date: Wed, 22 Sep 2021 13:39:01 -0600 Subject: [PATCH 097/122] isUsingNetworkProvidedTime() Useful in situations where you want to verify that the device has a correct time set, to avoid fraud, or if you want to prevent the user from messing with the time and abusing your "one-time" and "expiring" features. --- .../java/com/blankj/utilcode/util/TimeUtils.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java index 2ab5370c82..88887b621f 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java @@ -36,6 +36,19 @@ protected Map initialValue() { private static SimpleDateFormat getDefaultFormat() { return getSafeDateFormat("yyyy-MM-dd HH:mm:ss"); } + /** + * Checks whether the device is using Network Provided Time or not. + * Useful in situations where you want to verify that the device has a correct time set, to avoid fraud, or if you want to prevent the user from messing with the time and abusing your "one-time" and "expiring" features. + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isUsingNetworkProvidedTime() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + return Settings.Global.getInt(Utils.getApp().getContentResolver(), Settings.Global.AUTO_TIME, 0) == 1; + } else { + return android.provider.Settings.System.getInt(Utils.getApp().getContentResolver(), android.provider.Settings.System.AUTO_TIME, 0) == 1; + } + } + @SuppressLint("SimpleDateFormat") public static SimpleDateFormat getSafeDateFormat(String pattern) { From fb1f0d0a616bbbb326e9c7665887365c5dd064f9 Mon Sep 17 00:00:00 2001 From: jikun2008 Date: Wed, 10 Nov 2021 16:52:17 +0800 Subject: [PATCH 098/122] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=86=85=E5=AD=98=E6=B3=84=E6=BC=8F=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit //这里会发生内存泄漏 如果不设置为null contentView.setTag(TAG_ON_GLOBAL_LAYOUT_LISTENER, null); --- .../src/main/java/com/blankj/utilcode/util/KeyboardUtils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java index 7f95fdee75..fd70fef220 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java @@ -238,6 +238,8 @@ public static void unregisterSoftInputChangedListener(@NonNull final Window wind if (tag instanceof OnGlobalLayoutListener) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { contentView.getViewTreeObserver().removeOnGlobalLayoutListener((OnGlobalLayoutListener) tag); + //这里会发生内存泄漏 如果不设置为null + contentView.setTag(TAG_ON_GLOBAL_LAYOUT_LISTENER, null); } } } From 9df5d7e15b06109153d0499c3f1ed1a3080c94ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=AD=87=E5=B0=94?= Date: Tue, 23 Nov 2021 22:19:24 +0100 Subject: [PATCH 099/122] 2 new methods: isJSONObject() and isJSONArray() Check if a given input is a JSONObject or a JSONArray. --- .../com/blankj/utilcode/util/JsonUtils.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java index ea40ac3162..43046adf5a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/JsonUtils.java @@ -26,6 +26,27 @@ private JsonUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } + + /** + * Checks if a given input is a JSONObject. + * + * @param input Anything. + * @return true if it is a JSONObject. + */ + public static boolean isJSONObject(final T input) { + return input instanceof JSONObject; + } + + /** + * Checks if a given input is a JSONArray + * + * @param input Anything. + * @return true if it is a JSONArray. + */ + public static boolean isJSONArray(final T input) { + return input instanceof JSONArray; + } + public static boolean getBoolean(final JSONObject jsonObject, final String key) { return getBoolean(jsonObject, key, false); From e40b6d40b55cfb3608cd954d6bdd1feac67b94ca Mon Sep 17 00:00:00 2001 From: caimengjie Date: Mon, 6 Dec 2021 00:00:20 +0800 Subject: [PATCH 100/122] opt: Config --- build.gradle | 4 +- buildApp.gradle | 43 ++-- buildCommon.gradle | 5 + buildLib.gradle | 2 +- buildSrc/settings.gradle | 8 + buildSrc/src/main/groovy/Config.groovy | 114 ++++----- buildSrc/src/main/groovy/ConfigUtils.groovy | 45 ++-- buildSrc/src/main/groovy/DepConfig.groovy | 93 ------- buildSrc/src/main/groovy/GitUtils.groovy | 111 --------- buildSrc/src/main/groovy/LibConfig.groovy | 29 +++ buildSrc/src/main/groovy/ModuleConfig.groovy | 35 +++ buildSrc/src/main/groovy/PluginConfig.groovy | 35 +++ buildSrc/src/main/groovy/ShellUtils.java | 228 ------------------ .../src/main/groovy/TaskDurationUtils.groovy | 5 + config.json | 28 --- config/publish.gradle | 52 ++-- feature/launcher/app/build.gradle | 2 +- feature/utilcode/export/build.gradle | 8 +- gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 55616 bytes gradlew | 88 ++++--- gradlew.bat | 190 ++++++++------- lib/base/build.gradle | 23 +- .../java/com/blankj/base/rv/BaseItem.java | 6 +- lib/common/build.gradle | 2 +- lib/subutil/build.gradle | 19 +- lib/utilcode/README-CN.md | 1 + lib/utilcode/build.gradle | 23 +- .../blankj/utilcode/util/ActivityUtils.java | 3 +- .../com/blankj/utilcode/util/AppUtils.java | 16 ++ .../com/blankj/utilcode/util/CrashUtils.java | 30 ++- .../blankj/utilcode/util/KeyboardUtils.java | 127 ++++++---- .../blankj/utilcode/util/MetaDataUtils.java | 2 +- .../com/blankj/utilcode/util/SpanUtils.java | 26 +- .../util/UtilsActivityLifecycleImpl.java | 19 +- lib/utildebug/build.gradle | 16 +- .../com/blankj/utildebug/menu/DebugMenu.java | 1 + module_config.gradle | 72 ++++++ module_config.json | 30 +++ module_config.yaml | 91 +++++++ plugin/api-gradle-plugin/build.gradle | 20 +- plugin/buildSrc-plugin/.gitignore | 1 + plugin/buildSrc-plugin/build.gradle | 37 +++ .../com/blankj/buildSrc/BuildSrcPlugin.groovy | 13 + .../java/com/blankj/buildSrc/ModuleCfg.groovy | 80 ++++++ plugin/bus-gradle-plugin/build.gradle | 18 +- plugin/lib/base-transform/build.gradle | 14 +- settings.gradle | 112 +++------ 47 files changed, 968 insertions(+), 959 deletions(-) create mode 100644 buildSrc/settings.gradle delete mode 100644 buildSrc/src/main/groovy/DepConfig.groovy delete mode 100644 buildSrc/src/main/groovy/GitUtils.groovy create mode 100644 buildSrc/src/main/groovy/LibConfig.groovy create mode 100644 buildSrc/src/main/groovy/ModuleConfig.groovy create mode 100644 buildSrc/src/main/groovy/PluginConfig.groovy delete mode 100644 buildSrc/src/main/groovy/ShellUtils.java delete mode 100644 config.json create mode 100644 module_config.gradle create mode 100644 module_config.json create mode 100644 module_config.yaml create mode 100755 plugin/buildSrc-plugin/.gitignore create mode 100755 plugin/buildSrc-plugin/build.gradle create mode 100644 plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/BuildSrcPlugin.groovy create mode 100644 plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/ModuleCfg.groovy diff --git a/build.gradle b/build.gradle index 133f032278..e0f0f36c87 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { dependencies { for (def entrySet : ConfigUtils.getApplyPlugins().entrySet()) { - classpath entrySet.value.dep + classpath entrySet.value.path } } } @@ -29,7 +29,7 @@ allprojects { resolutionStrategy.eachDependency { if (it.requested.group == 'com.android.support' && !it.requested.name.contains( - 'multidex')) { + 'multidex')) { it.useVersion Config.supportVersion } } diff --git a/buildApp.gradle b/buildApp.gradle index d7ed2c75a3..93f0b9b1d4 100644 --- a/buildApp.gradle +++ b/buildApp.gradle @@ -1,29 +1,30 @@ +apply plugin: "com.android.application" + apply { - plugin "com.android.application" from "${rootDir.path}/buildCommon.gradle" from "${rootDir.path}/config/flavor.gradle" - if (Config.depConfig.plugin_api.isApply) { - plugin Config.depConfig.plugin_api.pluginId + if (Config.plugins.plugin_api.isApply) { + plugin Config.plugins.plugin_api.id } - if (Config.depConfig.plugin_bus.isApply) { - plugin Config.depConfig.plugin_bus.pluginId + if (Config.plugins.plugin_bus.isApply) { + plugin Config.plugins.plugin_bus.id } } configSigning() configApkName() -if (Config.depConfig.plugin_bus.isApply) { - bus { - onlyScanLibRegex = '^([:]|(com\\.blankj)).+$' - } -} - -if (Config.depConfig.plugin_api.isApply) { - api { - onlyScanLibRegex = '^([:]|(com\\.blankj)).+$' - } -} +//if (PluginConfig.plugin_bus.isApply) { +// bus { +// onlyScanLibRegex = '^([:]|(com\\.blankj)).+$' +// } +//} +// +//if (PluginConfig.plugin_api.isApply) { +// api { +// onlyScanLibRegex = '^([:]|(com\\.blankj)).+$' +// } +//} android { defaultConfig { @@ -67,18 +68,18 @@ android { dependencies { // LeakCanary - debugImplementation Config.depConfig.leakcanary.dep + debugImplementation Config.libs.leakcanary.path - debugImplementation Config.depConfig.lib_utildebug.dep - releaseImplementation Config.depConfig.lib_utildebug_no_op.dep + debugImplementation Config.modules.lib_utildebug.dep + releaseImplementation Config.modules.lib_utildebug_no_op.dep // 根据 Config.pkgConfig 来依赖所有 pkg for (def entrySet : ConfigUtils.getApplyPkgs().entrySet()) { api entrySet.value.dep } - if (Config.depConfig.feature_mock.isApply) { - api Config.depConfig.feature_mock.dep + if (Config.modules.feature_mock.isApply) { + api ModuleConfig.modules.feature_mock.dep } } diff --git a/buildCommon.gradle b/buildCommon.gradle index 8cbcc26255..2cba3ffea2 100644 --- a/buildCommon.gradle +++ b/buildCommon.gradle @@ -19,6 +19,11 @@ android { } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + lintOptions { abortOnError false } diff --git a/buildLib.gradle b/buildLib.gradle index ac9c42ac1c..aed207cbee 100644 --- a/buildLib.gradle +++ b/buildLib.gradle @@ -8,6 +8,6 @@ dependencies { api entrySet.value.dep } } else if (project.name.endsWith("_export")) { - api Config.depConfig.lib_common.dep + api Config.modules.lib_common.dep } } \ No newline at end of file diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle new file mode 100644 index 0000000000..8a313c3b99 --- /dev/null +++ b/buildSrc/settings.gradle @@ -0,0 +1,8 @@ +//dependencyResolutionManagement { +// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) +// repositories { +// google() +// mavenCentral() +// jcenter() // Warning: this repository is going to shut down soon +// } +//} \ No newline at end of file diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index 4fb2b7ef2f..4a0b27a980 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -1,11 +1,3 @@ -/** - *
    - *     author: blankj
    - *     blog  : http://blankj.com
    - *     time  : 2019/07/13
    - *     desc  :
    - * 
    - */ class Config { static applicationId = 'com.blankj.androidutilcode' @@ -14,74 +6,84 @@ class Config { static compileSdkVersion = 29 static minSdkVersion = 14 static targetSdkVersion = 29 - static versionCode = 1_030_006 - static versionName = '1.30.7-alpha1'// E.g. 1.9.72 => 1,009,072 + static versionCode = 1_030_007 + static versionName = '1.31.0'// E.g. 1.9.72 => 1,009,072 // lib version static gradlePluginVersion = '4.1.0' static kotlinVersion = '1.3.72' static androidxVersion = '1.0.0' - static depConfig = [ - /*Never delete this line*/ - /*Generated by "config.json"*/ - plugin_api_gradle_plugin : new DepConfig(true , true , ":plugin:api-gradle-plugin"), - plugin_bus_gradle_plugin : new DepConfig(true , true , ":plugin:bus-gradle-plugin"), - plugin_lib_base_transform : new DepConfig(true , false, ":plugin:lib:base-transform", "com.blankj:base-transform:1.0"), - feature_mock : new DepConfig(false, true , ":feature:mock"), - feature_launcher_app : new DepConfig(true , true , ":feature:launcher:app"), - feature_main_app : new DepConfig(false, true , ":feature:main:app"), - feature_main_pkg : new DepConfig(true , true , ":feature:main:pkg"), - feature_subutil_app : new DepConfig(false, true , ":feature:subutil:app"), - feature_subutil_pkg : new DepConfig(true , true , ":feature:subutil:pkg"), - feature_subutil_export : new DepConfig(true , true , ":feature:subutil:export"), - feature_utilcode_app : new DepConfig(false, true , ":feature:utilcode:app"), - feature_utilcode_pkg : new DepConfig(true , true , ":feature:utilcode:pkg"), - feature_utilcode_export : new DepConfig(true , true , ":feature:utilcode:export", "com.blankj:utilcode-export:1.1"), - lib_base : new DepConfig(true , true , ":lib:base"), - lib_common : new DepConfig(true , true , ":lib:common"), - lib_subutil : new DepConfig(true , true , ":lib:subutil"), - lib_utilcode : new DepConfig(true , true , ":lib:utilcode", "com.blankj:utilcodex:$versionName"), - lib_utildebug : new DepConfig(true , true , ":lib:utildebug"), - lib_utildebug_no_op : new DepConfig(true , true , ":lib:utildebug-no-op"), - /*Never delete this line*/ - plugin_gradle : new DepConfig(pluginPath: "com.android.tools.build:gradle:$gradlePluginVersion"), - plugin_kotlin : new DepConfig(pluginPath: "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"), - plugin_traute : new DepConfig(pluginPath: "tech.harmonysoft:traute-gradle:1.1.10", pluginId: "tech.harmonysoft.oss.traute"),// 注解转非空判断 + static modules = [ + /*Don't delete this line*/ + /*Generated by "module_config.json"*/ + plugin_api_gradle_plugin : new ModuleConfig(isApply: true , useLocal: true , localPath: "./plugin/api-gradle-plugin"), + plugin_bus_gradle_plugin : new ModuleConfig(isApply: true , useLocal: true , localPath: "./plugin/bus-gradle-plugin"), + plugin_lib_base_transform : new ModuleConfig(isApply: true , useLocal: true , localPath: "./plugin/lib/base-transform", remotePath: "com.blankj:base-transform:1.0"), + plugin_buildSrc_plugin : new ModuleConfig(isApply: true , useLocal: true , localPath: "./plugin/buildSrc-plugin"), + feature_mock : new ModuleConfig(isApply: false, useLocal: true , localPath: "./feature/mock"), + feature_launcher_app : new ModuleConfig(isApply: true , useLocal: true , localPath: "./feature/launcher/app"), + feature_main_app : new ModuleConfig(isApply: false, useLocal: true , localPath: "./feature/main/app"), + feature_main_pkg : new ModuleConfig(isApply: true , useLocal: true , localPath: "./feature/main/pkg"), + feature_subutil_app : new ModuleConfig(isApply: false, useLocal: true , localPath: "./feature/subutil/app"), + feature_subutil_pkg : new ModuleConfig(isApply: true , useLocal: true , localPath: "./feature/subutil/pkg"), + feature_subutil_export : new ModuleConfig(isApply: true , useLocal: true , localPath: "./feature/subutil/export"), + feature_utilcode_app : new ModuleConfig(isApply: false, useLocal: true , localPath: "./feature/utilcode/app"), + feature_utilcode_pkg : new ModuleConfig(isApply: true , useLocal: true , localPath: "./feature/utilcode/pkg"), + feature_utilcode_export : new ModuleConfig(isApply: true , useLocal: true , localPath: "./feature/utilcode/export", remotePath: "com.blankj:utilcode-export:1.1"), + lib_base : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/base"), + lib_common : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/common"), + lib_subutil : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/subutil"), + lib_utilcode : new ModuleConfig(isApply: true , useLocal: false, localPath: "./lib/utilcode", remotePath: "com.blankj:utilcode:$Config.versionName"), + lib_utildebug : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug"), + lib_utildebug_no_op : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug-no-op"), + /*Don't delete this line*/ + ] + + static plugins = [ + plugin_gradle : new PluginConfig(path: "com.android.tools.build:gradle:$gradlePluginVersion"), + plugin_kotlin : new PluginConfig(path: "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"), + // 上传到 maven + plugin_maven : new PluginConfig(path: "com.github.dcendents:android-maven-gradle-plugin:2.1", id: "com.github.dcendents.android-maven"), - // 上传新版本插件更新 pluginPath 中的版本号,并设置 isApply = false + // 上传新版本插件更新 path 中的版本号,并设置 isApply = false // 通过 mavenLocal 上传本地版本,设置 isApply = true 即可应用插件来调试,最后通过 bintrayUpload 来发布插件 - plugin_api : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:api-gradle-plugin:1.5", pluginId: "com.blankj.api"), + plugin_api : new PluginConfig(isApply: true, useLocal: false, path: "com.blankj:api-gradle-plugin:1.5", id: "com.blankj.api"), //./gradlew clean :plugin_api-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean :plugin_api-gradle-plugin:bintrayUpload // 上传到 jcenter - plugin_bus : new DepConfig(isApply: true, useLocal: false, pluginPath: "com.blankj:bus-gradle-plugin:2.6", pluginId: "com.blankj.bus"), + plugin_bus : new PluginConfig(isApply: true, useLocal: false, path: "com.blankj:bus-gradle-plugin:2.6", id: "com.blankj.bus"), //./gradlew clean :plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal //./gradlew clean :plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter + plugin_buildSrc: new PluginConfig(isApply: true, useLocal: false, path: "com.blankj:buildSrc-plugin:1.0", id: "com.blankj.buildSrc"), + //./gradlew clean :plugin_bus-gradle-plugin:mavenLocal // 上传到本地 mavenLocal + //./gradlew clean :plugin_bus-gradle-plugin:bintrayUpload // 上传到 jcenter + ] - androidx_appcompat : new DepConfig("androidx.appcompat:appcompat:$androidxVersion"), - androidx_material : new DepConfig("com.google.android.material:material:$androidxVersion"), - androidx_multidex : new DepConfig("androidx.multidex:multidex:2.0.0"), - androidx_constraint : new DepConfig("androidx.constraintlayout:constraintlayout:1.1.3"), + static libs = [ + androidx_appcompat : new LibConfig(path: "androidx.appcompat:appcompat:$androidxVersion"), + androidx_material : new LibConfig(path: "com.google.android.material:material:$androidxVersion"), + androidx_multidex : new LibConfig(path: "androidx.multidex:multidex:2.0.0"), + androidx_constraint: new LibConfig(path: "androidx.constraintlayout:constraintlayout:1.1.3"), - kotlin : new DepConfig("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"), + kotlin : new LibConfig(path: "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"), - leakcanary : new DepConfig("com.squareup.leakcanary:leakcanary-android:2.1"), + leakcanary : new LibConfig(path: "com.squareup.leakcanary:leakcanary-android:2.1"), - free_proguard : new DepConfig("com.blankj:free-proguard:1.0.2"), - swipe_panel : new DepConfig("com.blankj:swipe-panel:1.2"), + free_proguard : new LibConfig(path: "com.blankj:free-proguard:1.0.2"), + swipe_panel : new LibConfig(path: "com.blankj:swipe-panel:1.2"), - gson : new DepConfig("com.google.code.gson:gson:2.8.5"), - glide : new DepConfig("com.github.bumptech.glide:glide:4.7.1"), - retrofit : new DepConfig("com.squareup.retrofit2:retrofit:2.4.0"), - commons_io : new DepConfig("commons-io:commons-io:2.6"), + gson : new LibConfig(path: "com.google.code.gson:gson:2.8.5"), + glide : new LibConfig(path: "com.github.bumptech.glide:glide:4.7.1"), + retrofit : new LibConfig(path: "com.squareup.retrofit2:retrofit:2.4.0"), + commons_io : new LibConfig(path: "commons-io:commons-io:2.6"), - eventbus_lib : new DepConfig("org.greenrobot:eventbus:3.1.1"), - eventbus_processor : new DepConfig("org.greenrobot:eventbus-annotation-processor:3.0.1"), + eventbus_lib : new LibConfig(path: "org.greenrobot:eventbus:3.1.1"), + eventbus_processor : new LibConfig(path: "org.greenrobot:eventbus-annotation-processor:3.0.1"), - photo_view : new DepConfig("com.github.chrisbanes:PhotoView:2.0.0"), + photo_view : new LibConfig(path: "com.github.chrisbanes:PhotoView:2.0.0"), - test_junit : new DepConfig("junit:junit:4.12"), - test_robolectric : new DepConfig("org.robolectric:robolectric:4.3.1"), + test_junit : new LibConfig(path: "junit:junit:4.12"), + test_robolectric : new LibConfig(path: "org.robolectric:robolectric:4.3.1"), ] } //./gradlew clean :lib_utilcode:bintrayUpload \ No newline at end of file diff --git a/buildSrc/src/main/groovy/ConfigUtils.groovy b/buildSrc/src/main/groovy/ConfigUtils.groovy index d60518fac5..6a09d2f2d9 100644 --- a/buildSrc/src/main/groovy/ConfigUtils.groovy +++ b/buildSrc/src/main/groovy/ConfigUtils.groovy @@ -17,7 +17,6 @@ class ConfigUtils { generateDep(gradle) addCommonGradle(gradle) TaskDurationUtils.init(gradle) - GitUtils.init(gradle) } /** @@ -25,16 +24,12 @@ class ConfigUtils { */ private static void generateDep(Gradle gradle) { def configs = [:] - for (Map.Entry entry : Config.depConfig.entrySet()) { + for (Map.Entry entry : Config.modules.entrySet()) { def (name, config) = [entry.key, entry.value] - if (entry.value.pluginPath) { - config.dep = config.pluginPath + if (config.useLocal) { + config.dep = gradle.rootProject.findProject(name) } else { - if (config.useLocal) { - config.dep = gradle.rootProject.findProject(config.projectPath) - } else { - config.dep = config.remotePath - } + config.dep = config.remotePath } configs.put(name, config) } @@ -46,20 +41,18 @@ class ConfigUtils { @Override void beforeEvaluate(Project project) { // 在 project 的 build.gradle 前 do sth. - if (project.subprojects.isEmpty()) { - if (project.path.startsWith(":plugin")) { - return + if (project.name.contains("plugin")) { + return + } + if (project.name.endsWith("_app")) { + GLog.l(project.toString() + " applies buildApp.gradle") + project.apply { + from "${project.rootDir.path}/buildApp.gradle" } - if (project.name.endsWith("_app")) { - GLog.l(project.toString() + " applies buildApp.gradle") - project.apply { - from "${project.rootDir.path}/buildApp.gradle" - } - } else { - GLog.l(project.toString() + " applies buildLib.gradle") - project.apply { - from "${project.rootDir.path}/buildLib.gradle" - } + } else { + GLog.l(project.toString() + " applies buildLib.gradle") + project.apply { + from "${project.rootDir.path}/buildLib.gradle" } } } @@ -73,8 +66,8 @@ class ConfigUtils { static getApplyPlugins() { def plugins = [:] - for (Map.Entry entry : Config.depConfig.entrySet()) { - if (entry.value.isApply && entry.value.pluginPath) { + for (Map.Entry entry : Config.plugins.entrySet()) { + if (entry.value.isApply) { plugins.put(entry.key, entry.value) } } @@ -84,7 +77,7 @@ class ConfigUtils { static getApplyPkgs() { def pkgs = [:] - for (Map.Entry entry : Config.depConfig.entrySet()) { + for (Map.Entry entry : Config.modules.entrySet()) { if (entry.value.isApply && entry.key.endsWith("_pkg")) { pkgs.put(entry.key, entry.value) } @@ -95,7 +88,7 @@ class ConfigUtils { static getApplyExports() { def exports = [:] - for (Map.Entry entry : Config.depConfig.entrySet()) { + for (Map.Entry entry : Config.modules.entrySet()) { if (entry.value.isApply && entry.key.endsWith("_export")) { exports.put(entry.key, entry.value) } diff --git a/buildSrc/src/main/groovy/DepConfig.groovy b/buildSrc/src/main/groovy/DepConfig.groovy deleted file mode 100644 index 042b67036d..0000000000 --- a/buildSrc/src/main/groovy/DepConfig.groovy +++ /dev/null @@ -1,93 +0,0 @@ -/** - *
    - *     author: blankj
    - *     blog  : http://blankj.com
    - *     time  : 2019/07/13
    - *     desc  :
    - * 
    - */ -class DepConfig { - boolean isApply // 是否应用 - boolean useLocal // 是否使用本地的 - String localPath // 本地路径 - String remotePath// 远程路径 - String pluginPath// 插件路径 - String pluginId // 插件 ID - def dep // 根据条件生成项目最终的依赖项 - - DepConfig() { - isApply = true - } - - DepConfig(String path) { - this(true, path) - } - - DepConfig(boolean isApply, String path) { - if (path.startsWith(":")) { - this.useLocal = true - this.localPath = path - this.isApply = isApply - } else { - this.useLocal = false - this.remotePath = path - this.isApply = isApply - } - } - - DepConfig(boolean useLocal, String localPath, String remotePath) { - this(true, useLocal, localPath, remotePath) - } - - DepConfig(boolean isApply, boolean useLocal, String localPath) { - this(isApply, useLocal, localPath, null) - } - - DepConfig(boolean isApply, boolean useLocal, String localPath, String remotePath) { - this.isApply = isApply - this.useLocal = useLocal - this.localPath = localPath - this.remotePath = remotePath - } - - void setPluginPath(String pluginPath) { - this.pluginPath = pluginPath - this.remotePath = pluginPath - } - - String getPath() { - if (pluginPath != null) return pluginPath - return useLocal ? localPath : remotePath - } - - String getGroupId() { - String[] splits = remotePath.split(":") - return splits.length == 3 ? splits[0] : null - } - - String getArtifactId() { - String[] splits = remotePath.split(":") - return splits.length == 3 ? splits[1] : null - } - - String getVersion() { - String[] splits = remotePath.split(":") - return splits.length == 3 ? splits[2] : null - } - - String getProjectPath() { - return ":" + localPath.substring(1).replace(":", "_") - } - - @Override - String toString() { - return "{ isApply = ${getFlag(isApply)}" + - ", useLocal = ${getFlag(useLocal)}" + - (dep == null ? ", path = " + path : (", dep = " + dep)) + - " }" - } - - static String getFlag(boolean b) { - return b ? "✅" : "❌" - } -} \ No newline at end of file diff --git a/buildSrc/src/main/groovy/GitUtils.groovy b/buildSrc/src/main/groovy/GitUtils.groovy deleted file mode 100644 index f525377a79..0000000000 --- a/buildSrc/src/main/groovy/GitUtils.groovy +++ /dev/null @@ -1,111 +0,0 @@ -import org.gradle.api.Action -import org.gradle.api.Project -import org.gradle.api.invocation.Gradle - -import java.text.SimpleDateFormat - -/** - *
    - *     author: blankj
    - *     blog  : http://blankj.com
    - *     time  : 2019/08/16
    - *     desc  :
    - * 
    - */ -class GitUtils { - - private static Project rootProject; - - static void init(Gradle gradle) { - rootProject = gradle.rootProject - addGitHelpTask() - } - - static def addGitHelpTask() { - rootProject.task("gitHelp").doLast { - def commands = [ - " ############## input command code #################", - " # [1] Git Push #", - " # [2] Git Push And Merge to Master #", - " # [3] Git New Branch #", - " # [0] exit #", - " ###################################################", - ] - String commandTips = String.join(System.getProperty("line.separator"), commands) - while (true) { - GLog.l(commandTips) - Scanner scanner = new Scanner(System.in) - def input = scanner.next() - GLog.l(input) - switch (input) { - case "1": - gitPush() - break - case "2": - gitPushAndMerge2Master() - break - case "3": - gitNewBranch() - break - case "0": - return - } - } - } - } - - static void gitPush() { - String branchName = getGitBranch() - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd") - String date = simpleDateFormat.format(new Date()) - exeCmd( - "git add -A", - "git commit -m \"see $date log\"", - "git push origin $branchName" - ) - } - - static void gitPushAndMerge2Master() { - String branchName = getGitBranch() - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd") - String date = simpleDateFormat.format(new Date()) - exeCmd( - "git add -A", - "git commit -m \"see $date log\"", - "git push origin $branchName", - "git checkout master", - "git merge $branchName", - "git push origin master", - "git checkout $branchName" - ) - } - - static void gitNewBranch() { - exeCmd( - "git checkout master", - "git checkout -b ${Config.versionName}", - "git push origin ${Config.versionName}:${Config.versionName}", - ) - } - - private static def getGitBranch() { - return exeCmd("git symbolic-ref --short -q HEAD") - } - - private static def exeCmd(String... cmds) { - String output = "" - for (def cmd in cmds) { - output = _exeCmd(cmd) - } - return output - } - - private static def _exeCmd(String cmd) { - def output = new StringBuilder() - GLog.l("Execute command: ${cmd}") - def cmdResult = ShellUtils.execCmd(cmd) - GLog.l("$cmdResult") - return cmdResult.successMsg - } -} -// ./gradlew gitHelp diff --git a/buildSrc/src/main/groovy/LibConfig.groovy b/buildSrc/src/main/groovy/LibConfig.groovy new file mode 100644 index 0000000000..6369553ba0 --- /dev/null +++ b/buildSrc/src/main/groovy/LibConfig.groovy @@ -0,0 +1,29 @@ +class LibConfig { + + String path + + String getGroupId() { + String[] splits = path.split(":") + return splits.length == 3 ? splits[0] : null + } + + String getArtifactId() { + String[] splits = path.split(":") + return splits.length == 3 ? splits[1] : null + } + + String getVersion() { + String[] splits = path.split(":") + return splits.length == 3 ? splits[2] : null + } + + @Override + String toString() { + return "LibConfig { path = $path }" + } + + static String getFlag(boolean b) { + return b ? "✅" : "❌" + } +} + diff --git a/buildSrc/src/main/groovy/ModuleConfig.groovy b/buildSrc/src/main/groovy/ModuleConfig.groovy new file mode 100644 index 0000000000..291abd8ffe --- /dev/null +++ b/buildSrc/src/main/groovy/ModuleConfig.groovy @@ -0,0 +1,35 @@ +class ModuleConfig { + + boolean isApply // 是否应用 + boolean useLocal // 是否使用本地的 + String localPath // 本地路径 + String remotePath // 远程路径 + def dep // 根据条件生成项目最终的依赖项 + + String getGroupId() { + String[] splits = remotePath.split(":") + return splits.length == 3 ? splits[0] : null + } + + String getArtifactId() { + String[] splits = remotePath.split(":") + return splits.length == 3 ? splits[1] : null + } + + String getVersion() { + String[] splits = remotePath.split(":") + return splits.length == 3 ? splits[2] : null + } + + @Override + String toString() { + return "ModuleConfig { isApply = ${getFlag(isApply)}" + + ", dep = " + dep + + " }" + } + + static String getFlag(boolean b) { + return b ? "✅" : "❌" + } +} + diff --git a/buildSrc/src/main/groovy/PluginConfig.groovy b/buildSrc/src/main/groovy/PluginConfig.groovy new file mode 100644 index 0000000000..3811c6a0ca --- /dev/null +++ b/buildSrc/src/main/groovy/PluginConfig.groovy @@ -0,0 +1,35 @@ +final class PluginConfig { + + boolean isApply = true // 是否应用 + boolean useLocal // 是否使用本地的 + String path // 插件路径 + String id // 插件 ID + + String getGroupId() { + String[] splits = path.split(":") + return splits.length == 3 ? splits[0] : null + } + + String getArtifactId() { + String[] splits = path.split(":") + return splits.length == 3 ? splits[1] : null + } + + String getVersion() { + String[] splits = path.split(":") + return splits.length == 3 ? splits[2] : null + } + + @Override + String toString() { + return "PluginConfig { isApply = ${getFlag(isApply)}" + + ", useLocal = ${getFlag(useLocal)}" + + ", path = " + path + + ", id = " + id + + " }" + } + + static String getFlag(boolean b) { + return b ? "✅" : "❌" + } +} \ No newline at end of file diff --git a/buildSrc/src/main/groovy/ShellUtils.java b/buildSrc/src/main/groovy/ShellUtils.java deleted file mode 100644 index ef4917c68e..0000000000 --- a/buildSrc/src/main/groovy/ShellUtils.java +++ /dev/null @@ -1,228 +0,0 @@ -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.List; - -/** - *
    - *     author: Blankj
    - *     blog  : http://blankj.com
    - *     time  : 2016/08/07
    - *     desc  : utils about shell
    - * 
    - */ -public final class ShellUtils { - - private static final String LINE_SEP = System.getProperty("line.separator"); - - private ShellUtils() { - throw new UnsupportedOperationException("u can't instantiate me..."); - } - - /** - * Execute the command. - * - * @param command The command. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final String command) { - return execCmd(new String[]{command}, false, true); - } - - /** - * Execute the command. - * - * @param command The command. - * @param isRooted True to use root, false otherwise. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final String command, final boolean isRooted) { - return execCmd(new String[]{command}, isRooted, true); - } - - /** - * Execute the command. - * - * @param commands The commands. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final List commands) { - return execCmd(commands == null ? null : commands.toArray(new String[]{}), false, true); - } - - /** - * Execute the command. - * - * @param commands The commands. - * @param isRooted True to use root, false otherwise. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final List commands, final boolean isRooted) { - return execCmd(commands == null ? null : commands.toArray(new String[]{}), isRooted, true); - } - - /** - * Execute the command. - * - * @param commands The commands. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final String[] commands) { - return execCmd(commands, false, true); - } - - /** - * Execute the command. - * - * @param commands The commands. - * @param isRooted True to use root, false otherwise. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final String[] commands, final boolean isRooted) { - return execCmd(commands, isRooted, true); - } - - /** - * Execute the command. - * - * @param command The command. - * @param isRooted True to use root, false otherwise. - * @param isNeedResultMsg True to return the message of result, false otherwise. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final String command, - final boolean isRooted, - final boolean isNeedResultMsg) { - return execCmd(new String[]{command}, isRooted, isNeedResultMsg); - } - - /** - * Execute the command. - * - * @param commands The commands. - * @param isRooted True to use root, false otherwise. - * @param isNeedResultMsg True to return the message of result, false otherwise. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final List commands, - final boolean isRooted, - final boolean isNeedResultMsg) { - return execCmd(commands == null ? null : commands.toArray(new String[]{}), - isRooted, - isNeedResultMsg); - } - - /** - * Execute the command. - * - * @param commands The commands. - * @param isRooted True to use root, false otherwise. - * @param isNeedResultMsg True to return the message of result, false otherwise. - * @return the single {@link CommandResult} instance - */ - public static CommandResult execCmd(final String[] commands, - final boolean isRooted, - final boolean isNeedResultMsg) { - int result = -1; - if (commands == null || commands.length == 0) { - return new CommandResult(result, "", ""); - } - Process process = null; - BufferedReader successResult = null; - BufferedReader errorResult = null; - StringBuilder successMsg = null; - StringBuilder errorMsg = null; - DataOutputStream os = null; - try { - process = Runtime.getRuntime().exec(isRooted ? "su" : "sh"); - os = new DataOutputStream(process.getOutputStream()); - for (String command : commands) { - if (command == null) continue; - os.write(command.getBytes()); - os.writeBytes(LINE_SEP); - os.flush(); - } - os.writeBytes("exit" + LINE_SEP); - os.flush(); - result = process.waitFor(); - if (isNeedResultMsg) { - successMsg = new StringBuilder(); - errorMsg = new StringBuilder(); - successResult = new BufferedReader( - new InputStreamReader(process.getInputStream(), "UTF-8") - ); - errorResult = new BufferedReader( - new InputStreamReader(process.getErrorStream(), "UTF-8") - ); - String line; - if ((line = successResult.readLine()) != null) { - successMsg.append(line); - while ((line = successResult.readLine()) != null) { - successMsg.append(LINE_SEP).append(line); - } - } - if ((line = errorResult.readLine()) != null) { - errorMsg.append(line); - while ((line = errorResult.readLine()) != null) { - errorMsg.append(LINE_SEP).append(line); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (os != null) { - os.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - try { - if (successResult != null) { - successResult.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - try { - if (errorResult != null) { - errorResult.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - if (process != null) { - process.destroy(); - } - } - return new CommandResult( - result, - successMsg == null ? "" : successMsg.toString(), - errorMsg == null ? "" : errorMsg.toString() - ); - } - - /** - * The result of command. - */ - public static class CommandResult { - public int result; - public String successMsg; - public String errorMsg; - - public CommandResult(final int result, final String successMsg, final String errorMsg) { - this.result = result; - this.successMsg = successMsg; - this.errorMsg = errorMsg; - } - - @Override - public String toString() { - return "result: " + result + "\n" + - "successMsg: " + successMsg + "\n" + - "errorMsg: " + errorMsg; - } - } -} diff --git a/buildSrc/src/main/groovy/TaskDurationUtils.groovy b/buildSrc/src/main/groovy/TaskDurationUtils.groovy index 9ff2722345..6aacfcf30f 100644 --- a/buildSrc/src/main/groovy/TaskDurationUtils.groovy +++ b/buildSrc/src/main/groovy/TaskDurationUtils.groovy @@ -38,6 +38,11 @@ class TaskDurationUtils { } }) grd.addBuildListener(new BuildListener() { + @Override + void beforeSettings(Settings settings) { + super.beforeSettings(settings) + } + @Override void buildStarted(Gradle gradle) {} diff --git a/config.json b/config.json deleted file mode 100644 index c4c025e27b..0000000000 --- a/config.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "appConfigDesc": "appConfig 配置的是可以跑 app 的模块,git 提交务必只包含 launcher", - "appConfig": ["launcher"], - "pkgConfigDesc": "pkgConfig 配置的是要依赖的功能包,为空则依赖全部,git 提交务必为空", - "pkgConfig": [], - "proConfigDesc": "proConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig", - "proConfig": [ - {"isApply": true, "useLocal": true, "localPath": ":plugin:api-gradle-plugin"}, - {"isApply": true, "useLocal": true, "localPath": ":plugin:bus-gradle-plugin"}, - {"isApply": true, "useLocal": false, "localPath": ":plugin:lib:base-transform", "remotePath": "com.blankj:base-transform:1.0"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:mock"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:launcher:app"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:main:app"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:main:pkg"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:subutil:app"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:subutil:pkg"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:subutil:export"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:utilcode:app"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:utilcode:pkg"}, - {"isApply": true, "useLocal": true, "localPath": ":feature:utilcode:export", "remotePath": "com.blankj:utilcode-export:1.1"}, - {"isApply": true, "useLocal": true, "localPath": ":lib:base"}, - {"isApply": true, "useLocal": true, "localPath": ":lib:common"}, - {"isApply": true, "useLocal": true, "localPath": ":lib:subutil"}, - {"isApply": true, "useLocal": true, "localPath": ":lib:utilcode", "remotePath": "com.blankj:utilcodex:$versionName"}, - {"isApply": true, "useLocal": true, "localPath": ":lib:utildebug"}, - {"isApply": true, "useLocal": true, "localPath": ":lib:utildebug-no-op"} - ] -} diff --git a/config/publish.gradle b/config/publish.gradle index af97da785b..fa8a449f3c 100644 --- a/config/publish.gradle +++ b/config/publish.gradle @@ -9,16 +9,16 @@ 2. copy the file to the directory of gradle, and apply the file in the module ext { - groupId = Config.depConfig.lib_utilcode.groupId - artifactId = Config.depConfig.lib_utilcode.artifactId - version = Config.depConfig.lib_utilcode.version + groupId = Config.modules.lib_utilcode.groupId + artifactId = Config.modules.lib_utilcode.artifactId + version = Config.modules.lib_utilcode.version website = "https://github.com/Blankj/AndroidUtilCode" } apply from: "${rootDir.path}/config/publish.gradle" 3. execute following command to publish - ./gradlew :xxmodule:publish2Local -> upload to mavenCentral - ./gradlew :xxmodule:publish2Remote -> upload to mavenLocal + ./gradlew :xxmodule:publish2Local -> upload to mavenLocal + ./gradlew :xxmodule:publish2Remote -> upload to mavenCentral */ apply plugin: 'maven-publish' @@ -32,10 +32,8 @@ if (localPropertiesFile.exists()) { properties.load(new FileInputStream(localPropertiesFile)) properties.each { name, value -> ext[name] = value } } else { - if (!ext["signing.keyId"] && !ext["signing.password"] && - !ext["signing.secretKeyRingFile"] && - !ext["ossrhUsername"] && - !ext["ossrhPassword"]) { + if (!ext["signing.keyId"] && !ext["signing.password"] && !ext["signing.secretKeyRingFile"] + && !ext["ossrhUsername"] && !ext["ossrhPassword"]) { throw new NullPointerException("U should set MavenCentral params in local.properties") } } @@ -86,16 +84,14 @@ afterEvaluate { if (project.ext.multiPublishMode) { withXml { def dependenciesNode = asNode().getAt('dependencies')[0] ?: - asNode().appendNode('dependencies') - - configurations. - api. - getDependencies(). - each { dep -> addDependency(project, dependenciesNode, dep, "compile") } - configurations. - implementation. - getDependencies(). - each { dep -> addDependency(project, dependenciesNode, dep, "runtime") } + asNode().appendNode('dependencies') + + configurations.api.getDependencies().each { + dep -> addDependency(project, dependenciesNode, dep, "compile") + } + configurations.implementation.getDependencies().each { + dep -> addDependency(project, dependenciesNode, dep, "runtime") + } } } } @@ -136,12 +132,10 @@ private void addDependency(Project project, def dependenciesNode, Dependency dep // 那么发布到仓库,其他地方依赖该库时会找不到源码的那个库 println "publish -> module(unspecified) <${dep.group}:${dep.name}:${dep.version}>" if (project.ext.groupId || project.ext.version) { - throw new GradleException( - "The module of <" + dep.name + "> should set groupId & version.") + throw new GradleException("The module of <" + dep.name + "> should set groupId & version.") } // 源码依赖,但配置了 remotePath,让 pom 中写入 remotePath - println( - "publish -> module(wrapped) <${project.ext.groupId}:${name}:${project.ext.version}>") + println("publish -> module(wrapped) <${project.ext.groupId}:${name}:${project.ext.version}>") dependencyNode.appendNode('groupId', project.ext.pomGroupID) dependencyNode.appendNode('artifactId', dep.name) @@ -223,15 +217,9 @@ artifacts { } static def isAndroidEnv(Project project) { - return project.getPlugins().hasPlugin('com.android.application') || project. - getPlugins(). - hasPlugin('com.android.library') + return project.getPlugins().hasPlugin('com.android.application') || project.getPlugins().hasPlugin('com.android.library') } -task publish2Local(type: GradleBuild) { - tasks = ['clean', 'assemble', 'publishReleasePublicationToMavenLocal'] -} +task publish2Local(type: GradleBuild, dependsOn: ['clean', 'assemble', 'publishReleasePublicationToMavenLocal']) {} -task publish2Remote(type: GradleBuild) { - tasks = ['clean', 'assemble', 'publishReleasePublicationToMavenRepository'] -} \ No newline at end of file +task publish2Remote(type: GradleBuild, dependsOn: ['clean', 'assemble', 'publishReleasePublicationToMavenRepository']) {} \ No newline at end of file diff --git a/feature/launcher/app/build.gradle b/feature/launcher/app/build.gradle index 408db62a67..8f2b6d205d 100644 --- a/feature/launcher/app/build.gradle +++ b/feature/launcher/app/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'kotlin-kapt' dependencies { - kapt Config.depConfig.eventbus_processor.dep + kapt Config.libs.eventbus_processor.path } \ No newline at end of file diff --git a/feature/utilcode/export/build.gradle b/feature/utilcode/export/build.gradle index 815f9babe6..30e59272ee 100644 --- a/feature/utilcode/export/build.gradle +++ b/feature/utilcode/export/build.gradle @@ -1,8 +1,8 @@ ext { - groupId = Config.depConfig.feature_utilcode_export.groupId - artifactId = Config.depConfig.feature_utilcode_export.artifactId - version = Config.depConfig.feature_utilcode_export.version + groupId = Config.modules.feature_utilcode_export.groupId + artifactId = Config.modules.feature_utilcode_export.artifactId + version = Config.modules.feature_utilcode_export.version website = "https://github.com/Blankj/AndroidUtilCode" } -apply from: "${rootDir.path}/config/publish.gradle" +//apply from: "${rootDir.path}/config/publish.gradle" //./gradlew :feature_utilcode_export:mavenLocal // 上传到本地 mavenLocal \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 13372aef5e24af05341d49695ee84e5f9b594659..5c2d1cf016b3885f6930543d57b744ea8c220a1a 100644 GIT binary patch literal 55616 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�J+L&6O)2CL%pxI@Gv&XXKx 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 V&}jHG \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +64,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,26 +75,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -85,7 +105,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -150,11 +170,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282aa6..15e1ee37a7 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,90 +1,100 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/lib/base/build.gradle b/lib/base/build.gradle index bb7fa31573..b7eb9d588c 100644 --- a/lib/base/build.gradle +++ b/lib/base/build.gradle @@ -1,15 +1,14 @@ dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') - api Config.depConfig.lib_subutil.dep - api Config.depConfig.lib_utilcode.dep + api Config.modules.lib_subutil.dep + api Config.modules.lib_utilcode.dep - api Config.depConfig.androidx_appcompat.dep - api Config.depConfig.androidx_material.dep - api Config.depConfig.androidx_multidex.dep - api Config.depConfig.androidx_constraint.dep - api Config.depConfig.kotlin.dep - api Config.depConfig.free_proguard.dep - api Config.depConfig.swipe_panel.dep - api Config.depConfig.eventbus_lib.dep - compileOnly Config.depConfig.lib_utildebug_no_op.dep + api Config.libs.androidx_appcompat.path + api Config.libs.androidx_material.path + api Config.libs.androidx_multidex.path + api Config.libs.androidx_constraint.path + api Config.libs.kotlin.path + api Config.libs.free_proguard.path + api Config.libs.swipe_panel.path + api Config.libs.eventbus_lib.path + compileOnly Config.modules.lib_utildebug_no_op.dep } \ No newline at end of file diff --git a/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java b/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java index 885fe1a6a5..b0d6de04fa 100644 --- a/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java +++ b/lib/base/src/main/java/com/blankj/base/rv/BaseItem.java @@ -24,6 +24,7 @@ public abstract class BaseItem { private static final SparseIntArray LAYOUT_SPARSE_ARRAY = new SparseIntArray(); private static final SparseArray VIEW_SPARSE_ARRAY = new SparseArray<>(); + public boolean isBindViewHolder = false; static ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { int layoutByType = LAYOUT_SPARSE_ARRAY.get(viewType, -1); @@ -43,6 +44,7 @@ public void partialUpdate(List payloads) { } void bindViewHolder(@NonNull final ItemViewHolder holder, final int position) { + isBindViewHolder = true; if (mOnItemClickListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override @@ -73,7 +75,9 @@ public boolean onLongClick(View v) { bind(holder, position); } - public void onViewRecycled(@NonNull final ItemViewHolder holder, final int position) {/**/} + public void onViewRecycled(@NonNull final ItemViewHolder holder, final int position) { + isBindViewHolder = false; + } public long getItemId() { return RecyclerView.NO_ID; diff --git a/lib/common/build.gradle b/lib/common/build.gradle index c4bb45fba5..4993b43792 100644 --- a/lib/common/build.gradle +++ b/lib/common/build.gradle @@ -1,4 +1,4 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - api Config.depConfig.lib_base.dep + api Config.modules.lib_base.dep } \ No newline at end of file diff --git a/lib/subutil/build.gradle b/lib/subutil/build.gradle index 1d2b458537..8a697c5a1e 100644 --- a/lib/subutil/build.gradle +++ b/lib/subutil/build.gradle @@ -1,5 +1,4 @@ apply { -// plugin Config.depConfig.plugin_traute.pluginId plugin "readme-sub" } @@ -9,16 +8,16 @@ readme { } dependencies { - compileOnly Config.depConfig.androidx_appcompat.dep - compileOnly Config.depConfig.androidx_material.dep - compileOnly Config.depConfig.lib_utilcode.dep - api(Config.depConfig.glide.dep) { + compileOnly Config.libs.androidx_appcompat.path + compileOnly Config.libs.androidx_material.path + compileOnly Config.modules.lib_utilcode.dep + api(Config.libs.glide.path) { exclude group: "com.android.support" } - api Config.depConfig.retrofit.dep - api Config.depConfig.gson.dep + api Config.libs.retrofit.path + api Config.libs.gson.path - testImplementation Config.depConfig.lib_utilcode.dep - testImplementation Config.depConfig.test_junit.dep - testImplementation Config.depConfig.test_robolectric.dep + testImplementation Config.modules.lib_utilcode.dep + testImplementation Config.libs.test_junit.path + testImplementation Config.libs.test_robolectric.path } \ No newline at end of file diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md index e8edeb5927..79b18eef15 100644 --- a/lib/utilcode/README-CN.md +++ b/lib/utilcode/README-CN.md @@ -78,6 +78,7 @@ getAppSignaturesMD5 : 获取应用签名的的 MD5 值 getAppInfo : 获取 App 信息 getAppsInfo : 获取所有已安装 App 信息 getApkInfo : 获取 Apk 信息 +isFirstTimeInstalled : 判断应用是否首次安装 ``` * ### 数组相关 -> [ArrayUtils.java][array.java] -> [Test][array.test] diff --git a/lib/utilcode/build.gradle b/lib/utilcode/build.gradle index 612969a45c..37a43b0a66 100644 --- a/lib/utilcode/build.gradle +++ b/lib/utilcode/build.gradle @@ -1,5 +1,4 @@ apply { - // plugin Config.depConfig.plugin_traute.pluginId plugin "readme-core" } @@ -27,22 +26,22 @@ android { } dependencies { - implementation Config.depConfig.gson.dep + implementation Config.libs.gson.path - implementation Config.depConfig.androidx_appcompat.dep - compileOnly Config.depConfig.androidx_material.dep + implementation Config.libs.androidx_appcompat.path + compileOnly Config.libs.androidx_material.path - testImplementation Config.depConfig.test_junit.dep - testImplementation Config.depConfig.test_robolectric.dep - testImplementation Config.depConfig.androidx_appcompat.dep - testImplementation Config.depConfig.androidx_material.dep - testImplementation Config.depConfig.eventbus_lib.dep + testImplementation Config.libs.test_junit.path + testImplementation Config.libs.test_robolectric.path + testImplementation Config.libs.androidx_appcompat.path + testImplementation Config.libs.androidx_material.path + testImplementation Config.libs.eventbus_lib.path } ext { - groupId = Config.depConfig.lib_utilcode.groupId - artifactId = Config.depConfig.lib_utilcode.artifactId - version = Config.depConfig.lib_utilcode.version + groupId = Config.modules.lib_utilcode.groupId + artifactId = Config.modules.lib_utilcode.artifactId + version = Config.modules.lib_utilcode.version website = "https://github.com/Blankj/AndroidUtilCode" } apply from: "${rootDir.path}/config/publish.gradle" \ No newline at end of file diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 8191618118..10858f75f4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -96,7 +96,8 @@ public static void removeActivityLifecycleCallbacks(@Nullable final Activity act * @return the activity by context. */ @Nullable - public static Activity getActivityByContext(@NonNull Context context) { + public static Activity getActivityByContext(@Nullable Context context) { + if (context == null) return null; Activity activity = getActivityByContextInner(context); if (!isActivityAlive(activity)) return null; return activity; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java index 2a5b2ed4ef..8848cbd193 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java @@ -774,6 +774,22 @@ public static AppUtils.AppInfo getApkInfo(final String apkFilePath) { return getBean(pm, pi); } + + /** + * Return whether the application was first installed. + * + * @return {@code true}: yes
    {@code false}: no + */ + public static boolean isFirstTimeInstalled() { + try { + PackageInfo pi = Utils.getApp().getPackageManager().getPackageInfo(Utils.getApp().getPackageName(), 0); + return pi.firstInstallTime == pi.lastUpdateTime; + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + return true; + } + } + private static AppInfo getBean(final PackageManager pm, final PackageInfo pi) { if (pi == null) return null; String versionName = pi.versionName; diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java index 69ae961662..598f7fdbac 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/CrashUtils.java @@ -1,15 +1,12 @@ package com.blankj.utilcode.util; -import android.annotation.SuppressLint; - +import androidx.annotation.NonNull; import java.io.File; import java.lang.Thread.UncaughtExceptionHandler; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; -import androidx.annotation.NonNull; - /** *
      *     author: Blankj
    @@ -22,7 +19,8 @@ public final class CrashUtils {
     
         private static final String FILE_SEP = System.getProperty("file.separator");
     
    -    private static final UncaughtExceptionHandler DEFAULT_UNCAUGHT_EXCEPTION_HANDLER = Thread.getDefaultUncaughtExceptionHandler();
    +    private static final UncaughtExceptionHandler DEFAULT_UNCAUGHT_EXCEPTION_HANDLER =
    +        Thread.getDefaultUncaughtExceptionHandler();
     
         private CrashUtils() {
             throw new UnsupportedOperationException("u can't instantiate me...");
    @@ -65,7 +63,7 @@ public static void init(final OnCrashListener onCrashListener) {
         /**
          * Initialization
          *
    -     * @param crashDir        The directory of saving crash information.
    +     * @param crashDir The directory of saving crash information.
          * @param onCrashListener The crash listener.
          */
         public static void init(@NonNull final File crashDir, final OnCrashListener onCrashListener) {
    @@ -75,22 +73,23 @@ public static void init(@NonNull final File crashDir, final OnCrashListener onCr
         /**
          * Initialization
          *
    -     * @param crashDirPath    The directory's path of saving crash information.
    +     * @param crashDirPath The directory's path of saving crash information.
          * @param onCrashListener The crash listener.
          */
         public static void init(final String crashDirPath, final OnCrashListener onCrashListener) {
             String dirPath;
             if (UtilsBridge.isSpace(crashDirPath)) {
                 if (UtilsBridge.isSDCardEnableByEnvironment()
    -                    && Utils.getApp().getExternalFilesDir(null) != null)
    +                && Utils.getApp().getExternalFilesDir(null) != null) {
                     dirPath = Utils.getApp().getExternalFilesDir(null) + FILE_SEP + "crash" + FILE_SEP;
    -            else {
    +            } else {
                     dirPath = Utils.getApp().getFilesDir() + FILE_SEP + "crash" + FILE_SEP;
                 }
             } else {
                 dirPath = crashDirPath.endsWith(FILE_SEP) ? crashDirPath : crashDirPath + FILE_SEP;
             }
    -        Thread.setDefaultUncaughtExceptionHandler(getUncaughtExceptionHandler(dirPath, onCrashListener));
    +        Thread.setDefaultUncaughtExceptionHandler(
    +            getUncaughtExceptionHandler(dirPath, onCrashListener));
         }
     
         private static UncaughtExceptionHandler getUncaughtExceptionHandler(final String dirPath,
    @@ -100,15 +99,15 @@ private static UncaughtExceptionHandler getUncaughtExceptionHandler(final String
                 public void uncaughtException(@NonNull final Thread t, @NonNull final Throwable e) {
                     final String time = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss").format(new Date());
                     CrashInfo info = new CrashInfo(time, e);
    -                if (onCrashListener != null) {
    -                    onCrashListener.onCrash(info);
    -                }
                     final String crashFile = dirPath + time + ".txt";
                     UtilsBridge.writeFileFromString(crashFile, info.toString(), true);
     
                     if (DEFAULT_UNCAUGHT_EXCEPTION_HANDLER != null) {
                         DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(t, e);
                     }
    +                if (onCrashListener != null) {
    +                    onCrashListener.onCrash(info);
    +                }
                 }
             };
         }
    @@ -123,7 +122,7 @@ public interface OnCrashListener {
     
         public static final class CrashInfo {
             private UtilsBridge.FileHead mFileHeadProvider;
    -        private Throwable            mThrowable;
    +        private Throwable mThrowable;
     
             private CrashInfo(String time, Throwable throwable) {
                 mThrowable = throwable;
    @@ -145,8 +144,7 @@ public final Throwable getThrowable() {
     
             @Override
             public String toString() {
    -            return mFileHeadProvider.toString() +
    -                    UtilsBridge.getFullStackTrace(mThrowable);
    +            return mFileHeadProvider.toString() + UtilsBridge.getFullStackTrace(mThrowable);
             }
         }
     }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
    index f2511e831f..c87687f8a1 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/KeyboardUtils.java
    @@ -17,10 +17,9 @@
     import android.view.inputmethod.InputMethodManager;
     import android.widget.EditText;
     import android.widget.FrameLayout;
    -
    -import java.lang.reflect.Field;
    -
     import androidx.annotation.NonNull;
    +import androidx.annotation.Nullable;
    +import java.lang.reflect.Field;
     
     /**
      * 
    @@ -42,7 +41,8 @@ private KeyboardUtils() {
          * Show the soft input.
          */
         public static void showSoftInput() {
    -        InputMethodManager imm = (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    +        InputMethodManager imm =
    +            (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
             if (imm == null) {
                 return;
             }
    @@ -52,7 +52,10 @@ public static void showSoftInput() {
         /**
          * Show the soft input.
          */
    -    public static void showSoftInput(@NonNull Activity activity) {
    +    public static void showSoftInput(@Nullable Activity activity) {
    +        if (activity == null) {
    +            return;
    +        }
             if (!isSoftInputVisible(activity)) {
                 toggleSoftInput();
             }
    @@ -70,14 +73,16 @@ public static void showSoftInput(@NonNull final View view) {
         /**
          * Show the soft input.
          *
    -     * @param view  The view.
    +     * @param view The view.
          * @param flags Provides additional operating flags.  Currently may be
    -     *              0 or have the {@link InputMethodManager#SHOW_IMPLICIT} bit set.
    +     * 0 or have the {@link InputMethodManager#SHOW_IMPLICIT} bit set.
          */
         public static void showSoftInput(@NonNull final View view, final int flags) {
             InputMethodManager imm =
    -                (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    -        if (imm == null) return;
    +            (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    +        if (imm == null) {
    +            return;
    +        }
             view.setFocusable(true);
             view.setFocusableInTouchMode(true);
             view.requestFocus();
    @@ -85,7 +90,7 @@ public static void showSoftInput(@NonNull final View view, final int flags) {
                 @Override
                 protected void onReceiveResult(int resultCode, Bundle resultData) {
                     if (resultCode == InputMethodManager.RESULT_UNCHANGED_HIDDEN
    -                        || resultCode == InputMethodManager.RESULT_HIDDEN) {
    +                    || resultCode == InputMethodManager.RESULT_HIDDEN) {
                         toggleSoftInput();
                     }
                 }
    @@ -98,7 +103,10 @@ protected void onReceiveResult(int resultCode, Bundle resultData) {
          *
          * @param activity The activity.
          */
    -    public static void hideSoftInput(@NonNull final Activity activity) {
    +    public static void hideSoftInput(@Nullable final Activity activity) {
    +        if (activity == null) {
    +            return;
    +        }
             hideSoftInput(activity.getWindow());
         }
     
    @@ -107,7 +115,10 @@ public static void hideSoftInput(@NonNull final Activity activity) {
          *
          * @param window The window.
          */
    -    public static void hideSoftInput(@NonNull final Window window) {
    +    public static void hideSoftInput(@Nullable final Window window) {
    +        if (window == null) {
    +            return;
    +        }
             View view = window.getCurrentFocus();
             if (view == null) {
                 View decorView = window.getDecorView();
    @@ -131,8 +142,10 @@ public static void hideSoftInput(@NonNull final Window window) {
          */
         public static void hideSoftInput(@NonNull final View view) {
             InputMethodManager imm =
    -                (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    -        if (imm == null) return;
    +            (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    +        if (imm == null) {
    +            return;
    +        }
             imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
         }
     
    @@ -143,7 +156,10 @@ public static void hideSoftInput(@NonNull final View view) {
          *
          * @param activity The activity.
          */
    -    public static void hideSoftInputByToggle(final Activity activity) {
    +    public static void hideSoftInputByToggle(@Nullable final Activity activity) {
    +        if (activity == null) {
    +            return;
    +        }
             long nowMillis = SystemClock.elapsedRealtime();
             long delta = nowMillis - millis;
             if (Math.abs(delta) > 500 && KeyboardUtils.isSoftInputVisible(activity)) {
    @@ -157,8 +173,10 @@ public static void hideSoftInputByToggle(final Activity activity) {
          */
         public static void toggleSoftInput() {
             InputMethodManager imm =
    -                (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    -        if (imm == null) return;
    +            (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    +        if (imm == null) {
    +            return;
    +        }
             imm.toggleSoftInput(0, 0);
         }
     
    @@ -178,8 +196,8 @@ private static int getDecorViewInvisibleHeight(@NonNull final Window window) {
             final View decorView = window.getDecorView();
             final Rect outRect = new Rect();
             decorView.getWindowVisibleDisplayFrame(outRect);
    -        Log.d("KeyboardUtils", "getDecorViewInvisibleHeight: "
    -                + (decorView.getBottom() - outRect.bottom));
    +        Log.d("KeyboardUtils",
    +            "getDecorViewInvisibleHeight: " + (decorView.getBottom() - outRect.bottom));
             int delta = Math.abs(decorView.getBottom() - outRect.bottom);
             if (delta <= UtilsBridge.getNavBarHeight() + UtilsBridge.getStatusBarHeight()) {
                 sDecorViewDelta = delta;
    @@ -195,24 +213,26 @@ private static int getDecorViewInvisibleHeight(@NonNull final Window window) {
          * @param listener The soft input changed listener.
          */
         public static void registerSoftInputChangedListener(@NonNull final Activity activity,
    -                                                        @NonNull final OnSoftInputChangedListener listener) {
    +                                                        @NonNull
    +                                                        final OnSoftInputChangedListener listener) {
             registerSoftInputChangedListener(activity.getWindow(), listener);
         }
     
         /**
          * Register soft input changed listener.
          *
    -     * @param window   The window.
    +     * @param window The window.
          * @param listener The soft input changed listener.
          */
         public static void registerSoftInputChangedListener(@NonNull final Window window,
    -                                                        @NonNull final OnSoftInputChangedListener listener) {
    +                                                        @NonNull
    +                                                        final OnSoftInputChangedListener listener) {
             final int flags = window.getAttributes().flags;
             if ((flags & WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) != 0) {
                 window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
             }
             final FrameLayout contentView = window.findViewById(android.R.id.content);
    -        final int[] decorViewInvisibleHeightPre = {getDecorViewInvisibleHeight(window)};
    +        final int[] decorViewInvisibleHeightPre = { getDecorViewInvisibleHeight(window) };
             OnGlobalLayoutListener onGlobalLayoutListener = new OnGlobalLayoutListener() {
                 @Override
                 public void onGlobalLayout() {
    @@ -234,11 +254,14 @@ public void onGlobalLayout() {
          */
         public static void unregisterSoftInputChangedListener(@NonNull final Window window) {
             final View contentView = window.findViewById(android.R.id.content);
    -        if (contentView == null) return;
    +        if (contentView == null) {
    +            return;
    +        }
             Object tag = contentView.getTag(TAG_ON_GLOBAL_LAYOUT_LISTENER);
             if (tag instanceof OnGlobalLayoutListener) {
                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    -                contentView.getViewTreeObserver().removeOnGlobalLayoutListener((OnGlobalLayoutListener) tag);
    +                contentView.getViewTreeObserver()
    +                    .removeOnGlobalLayoutListener((OnGlobalLayoutListener) tag);
                 }
             }
         }
    @@ -261,36 +284,35 @@ public static void fixAndroidBug5497(@NonNull final Activity activity) {
          */
         public static void fixAndroidBug5497(@NonNull final Window window) {
             int softInputMode = window.getAttributes().softInputMode;
    -        window.setSoftInputMode(softInputMode & ~WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    +        window.setSoftInputMode(
    +            softInputMode & ~WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
             final FrameLayout contentView = window.findViewById(android.R.id.content);
             final View contentViewChild = contentView.getChildAt(0);
             final int paddingBottom = contentViewChild.getPaddingBottom();
    -        final int[] contentViewInvisibleHeightPre5497 = {getContentViewInvisibleHeight(window)};
    -        contentView.getViewTreeObserver()
    -                .addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    -                    @Override
    -                    public void onGlobalLayout() {
    -                        int height = getContentViewInvisibleHeight(window);
    -                        if (contentViewInvisibleHeightPre5497[0] != height) {
    -                            contentViewChild.setPadding(
    -                                    contentViewChild.getPaddingLeft(),
    -                                    contentViewChild.getPaddingTop(),
    -                                    contentViewChild.getPaddingRight(),
    -                                    paddingBottom + getDecorViewInvisibleHeight(window)
    -                            );
    -                            contentViewInvisibleHeightPre5497[0] = height;
    -                        }
    -                    }
    -                });
    +        final int[] contentViewInvisibleHeightPre5497 = { getContentViewInvisibleHeight(window) };
    +        contentView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    +            @Override
    +            public void onGlobalLayout() {
    +                int height = getContentViewInvisibleHeight(window);
    +                if (contentViewInvisibleHeightPre5497[0] != height) {
    +                    contentViewChild.setPadding(contentViewChild.getPaddingLeft(),
    +                        contentViewChild.getPaddingTop(), contentViewChild.getPaddingRight(),
    +                        paddingBottom + getDecorViewInvisibleHeight(window));
    +                    contentViewInvisibleHeightPre5497[0] = height;
    +                }
    +            }
    +        });
         }
     
         private static int getContentViewInvisibleHeight(final Window window) {
             final View contentView = window.findViewById(android.R.id.content);
    -        if (contentView == null) return 0;
    +        if (contentView == null) {
    +            return 0;
    +        }
             final Rect outRect = new Rect();
             contentView.getWindowVisibleDisplayFrame(outRect);
    -        Log.d("KeyboardUtils", "getContentViewInvisibleHeight: "
    -                + (contentView.getBottom() - outRect.bottom));
    +        Log.d("KeyboardUtils",
    +            "getContentViewInvisibleHeight: " + (contentView.getBottom() - outRect.bottom));
             int delta = Math.abs(contentView.getBottom() - outRect.bottom);
             if (delta <= UtilsBridge.getStatusBarHeight() + UtilsBridge.getNavBarHeight()) {
                 return 0;
    @@ -314,9 +336,12 @@ public static void fixSoftInputLeaks(@NonNull final Activity activity) {
          */
         public static void fixSoftInputLeaks(@NonNull final Window window) {
             InputMethodManager imm =
    -                (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    -        if (imm == null) return;
    -        String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"};
    +            (InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
    +        if (imm == null) {
    +            return;
    +        }
    +        String[] leakViews =
    +            new String[] { "mLastSrvView", "mCurRootView", "mServedView", "mNextServedView" };
             for (String leakView : leakViews) {
                 try {
                     Field leakViewField = InputMethodManager.class.getDeclaredField(leakView);
    @@ -324,7 +349,9 @@ public static void fixSoftInputLeaks(@NonNull final Window window) {
                         leakViewField.setAccessible(true);
                     }
                     Object obj = leakViewField.get(imm);
    -                if (!(obj instanceof View)) continue;
    +                if (!(obj instanceof View)) {
    +                    continue;
    +                }
                     View view = (View) obj;
                     if (view.getRootView() == window.getDecorView().getRootView()) {
                         leakViewField.set(imm, null);
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
    index bd4b8da935..0ff8fa8798 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/MetaDataUtils.java
    @@ -118,7 +118,7 @@ public static String getMetaDataInService(@NonNull final Class getActivitiesByReflect() {
             Activity topActivity = null;
             try {
                 Object activityThread = getActivityThread();
    +            if (activityThread == null) return list;
                 Field mActivitiesField = activityThread.getClass().getDeclaredField("mActivities");
                 mActivitiesField.setAccessible(true);
                 Object mActivities = mActivitiesField.get(activityThread);
    @@ -388,10 +381,10 @@ private List getActivitiesByReflect() {
                         if (!pausedField.getBoolean(activityRecord)) {
                             topActivity = activity;
                         } else {
    -                        list.add(activity);
    +                        list.addFirst(activity);
                         }
                     } else {
    -                    list.add(activity);
    +                    list.addFirst(activity);
                     }
                 }
             } catch (Exception e) {
    diff --git a/lib/utildebug/build.gradle b/lib/utildebug/build.gradle
    index 22f1f7294b..d1c5a67273 100644
    --- a/lib/utildebug/build.gradle
    +++ b/lib/utildebug/build.gradle
    @@ -1,12 +1,12 @@
     dependencies {
    -    compileOnly Config.depConfig.androidx_appcompat.dep
    -    compileOnly Config.depConfig.androidx_material.dep
    +    compileOnly Config.libs.androidx_appcompat.path
    +    compileOnly Config.libs.androidx_material.path
     
    -    implementation Config.depConfig.lib_utilcode.dep
    -    implementation Config.depConfig.swipe_panel.dep
    -    implementation Config.depConfig.photo_view.dep
    +    implementation Config.modules.lib_utilcode.dep
    +    implementation Config.libs.swipe_panel.path
    +    implementation Config.libs.photo_view.path
     
    -    testImplementation Config.depConfig.test_junit.dep
    -    testImplementation Config.depConfig.test_robolectric.dep
    -    testImplementation Config.depConfig.androidx_appcompat.dep
    +    testImplementation Config.libs.test_junit.path
    +    testImplementation Config.libs.test_robolectric.path
    +    testImplementation Config.libs.androidx_appcompat.path
     }
    \ No newline at end of file
    diff --git a/lib/utildebug/src/main/java/com/blankj/utildebug/menu/DebugMenu.java b/lib/utildebug/src/main/java/com/blankj/utildebug/menu/DebugMenu.java
    index 37c53b89cb..8a0ac4f0f0 100644
    --- a/lib/utildebug/src/main/java/com/blankj/utildebug/menu/DebugMenu.java
    +++ b/lib/utildebug/src/main/java/com/blankj/utildebug/menu/DebugMenu.java
    @@ -56,6 +56,7 @@ protected void onAttachedToWindow() {
     
         @Override
         protected void onDetachedFromWindow() {
    +        int a = 0xe1;
             DebugIcon.setVisibility(true);
             super.onDetachedFromWindow();
         }
    diff --git a/module_config.gradle b/module_config.gradle
    new file mode 100644
    index 0000000000..6be8429bd7
    --- /dev/null
    +++ b/module_config.gradle
    @@ -0,0 +1,72 @@
    +import groovy.json.JsonSlurper
    +
    +/**
    + * 在 module_config.json 中 根据 appConfig 和 pkgConfig 来 include 本地模块
    + * 可以考虑写成插件来更方便 apply
    + */
    +
    +def json = new JsonSlurper().parse(file("./module_config.json"))
    +
    +for (def module in json.moduleConfig) {
    +    String moduleName = module.name
    +
    +    if (moduleName == "feature_mock") {
    +        if (json.pkgConfig.isEmpty()) {
    +            module.isApply = false
    +        }
    +    } else if (moduleName.endsWith("_app")) {
    +        if (!json.appConfig.contains(moduleName)) {
    +            module.isApply = false
    +        }
    +    } else if (moduleName.endsWith("_pkg")) {
    +        if (!json.pkgConfig.isEmpty()) {
    +            if (!json.pkgConfig.contains(moduleName)) {
    +                module.isApply = false
    +            }
    +        }
    +    }
    +
    +    if (module.useLocal && module.isApply) {
    +        include moduleName
    +        project(":$moduleName").projectDir = file(module.localPath)
    +    }
    +}
    +
    +def ls = System.getProperty("line.separator")
    +
    +List modules = []
    +for (def module in json.moduleConfig) {
    +    String name = module.name
    +    boolean isApply = module.isApply
    +    boolean useLocal = module.useLocal
    +    String localPath = module.localPath
    +    String remotePath = module.remotePath
    +    if (localPath != null) localPath = "\"$localPath\""
    +    if (remotePath != null) remotePath = "\"$remotePath\""
    +    modules.add(String.format("%-12s%-27s: new ModuleConfig(isApply: %-5s, useLocal: %-5s, localPath: $localPath%s),",
    +            "", name, isApply, useLocal, remotePath == null ? "" : ", remotePath: $remotePath"))
    +}
    +
    +def configFile = file('./buildSrc/src/main/groovy/Config.groovy')
    +def lines = configFile.readLines("utf8")
    +def configContent = new StringBuilder()
    +
    +boolean enterNeverFlag = false
    +for (def line : lines) {
    +    if (enterNeverFlag) {
    +        if (line.contains("/*Don't delete this line*/")) {
    +            configContent.append(ls).append(line)
    +            enterNeverFlag = false
    +        }
    +        continue
    +    }
    +    configContent.append(ls).append(line)
    +    if (line.contains("/*Don't delete this line*/")) {
    +        configContent.append(ls).append(String.format("%-12s/*Generated by \"module_config.json\"*/", ""))
    +        enterNeverFlag = true
    +        for (String m : modules) {
    +            configContent.append(ls).append(m)
    +        }
    +    }
    +}
    +configFile.write(configContent.substring(ls.length()).toString())
    \ No newline at end of file
    diff --git a/module_config.json b/module_config.json
    new file mode 100644
    index 0000000000..18f416382a
    --- /dev/null
    +++ b/module_config.json
    @@ -0,0 +1,30 @@
    +{
    +  "desc": "提交 git 时需要检查下配置是否正确!!!",
    +  "appConfigDesc": "appConfig 配置的是可以跑 app 的模块",
    +  "appConfig": ["feature_launcher_app"],
    +  "pkgConfigDesc": "pkgConfig 配置的是要依赖的功能包,为空则依赖全部",
    +  "pkgConfig": [],
    +  "moduleConfigDesc": "moduleConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig",
    +  "moduleConfig": [
    +    {"name": "plugin_api_gradle_plugin",  "isApply": true, "useLocal": true, "localPath": "./plugin/api-gradle-plugin"},
    +    {"name": "plugin_bus_gradle_plugin",  "isApply": true, "useLocal": true, "localPath": "./plugin/bus-gradle-plugin"},
    +    {"name": "plugin_lib_base_transform", "isApply": true, "useLocal": true, "localPath": "./plugin/lib/base-transform", "remotePath": "com.blankj:base-transform:1.0"},
    +    {"name": "plugin_buildSrc_plugin",    "isApply": true, "useLocal": true, "localPath": "./plugin/buildSrc-plugin"},
    +    {"name": "feature_mock",              "isApply": true, "useLocal": true, "localPath": "./feature/mock"},
    +    {"name": "feature_launcher_app",      "isApply": true, "useLocal": true, "localPath": "./feature/launcher/app"},
    +    {"name": "feature_main_app",          "isApply": true, "useLocal": true, "localPath": "./feature/main/app"},
    +    {"name": "feature_main_pkg",          "isApply": true, "useLocal": true, "localPath": "./feature/main/pkg"},
    +    {"name": "feature_subutil_app",       "isApply": true, "useLocal": true, "localPath": "./feature/subutil/app"},
    +    {"name": "feature_subutil_pkg",       "isApply": true, "useLocal": true, "localPath": "./feature/subutil/pkg"},
    +    {"name": "feature_subutil_export",    "isApply": true, "useLocal": true, "localPath": "./feature/subutil/export"},
    +    {"name": "feature_utilcode_app",      "isApply": true, "useLocal": true, "localPath": "./feature/utilcode/app"},
    +    {"name": "feature_utilcode_pkg",      "isApply": true, "useLocal": true, "localPath": "./feature/utilcode/pkg"},
    +    {"name": "feature_utilcode_export",   "isApply": true, "useLocal": true, "localPath": "./feature/utilcode/export", "remotePath": "com.blankj:utilcode-export:1.1"},
    +    {"name": "lib_base",                  "isApply": true, "useLocal": true, "localPath": "./lib/base"},
    +    {"name": "lib_common",                "isApply": true, "useLocal": true, "localPath": "./lib/common"},
    +    {"name": "lib_subutil",               "isApply": true, "useLocal": true, "localPath": "./lib/subutil"},
    +    {"name": "lib_utilcode",              "isApply": true, "useLocal": false, "localPath": "./lib/utilcode", "remotePath": "com.blankj:utilcodex:$Config.versionName"},
    +    {"name": "lib_utildebug",             "isApply": true, "useLocal": true, "localPath": "./lib/utildebug"},
    +    {"name": "lib_utildebug_no_op",       "isApply": true, "useLocal": true, "localPath": "./lib/utildebug-no-op"}
    +  ]
    +}
    diff --git a/module_config.yaml b/module_config.yaml
    new file mode 100644
    index 0000000000..b10ce808e6
    --- /dev/null
    +++ b/module_config.yaml
    @@ -0,0 +1,91 @@
    +desc: 提交 git 时需要检查下配置是否正确!!!
    +appConfigDesc: appConfig 配置的是可以跑 app 的模块
    +appConfig:
    +  - feature_launcher_app
    +pkgConfigDesc: pkgConfig 配置的是要依赖的功能包,为空则依赖全部
    +pkgConfig: [ ]
    +moduleConfigDesc: moduleConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig
    +moduleConfig:
    +  - name: plugin_api_gradle_plugin
    +      isApply: true
    +      useLocal: true
    +      localPath: ./plugin/api-gradle-plugin
    +  - name: plugin_bus_gradle_plugin
    +    isApply: true
    +    useLocal: true
    +    localPath: ./plugin/bus-gradle-plugin
    +  - name: plugin_lib_base_transform
    +    isApply: true
    +    useLocal: true
    +    localPath: ./plugin/lib/base-transform
    +    remotePath: 'com.blankj:base-transform:1.0'
    +  - name: plugin_buildSrc_plugin
    +    isApply: true
    +    useLocal: true
    +    localPath: ./plugin/buildSrc-plugin
    +  - name: feature_mock
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/mock
    +  - name: feature_launcher_app
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/launcher/app
    +  - name: feature_main_app
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/main/app
    +  - name: feature_main_pkg
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/main/pkg
    +  - name: feature_subutil_app
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/subutil/app
    +  - name: feature_subutil_pkg
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/subutil/pkg
    +  - name: feature_subutil_export
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/subutil/export
    +  - name: feature_utilcode_app
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/utilcode/app
    +  - name: feature_utilcode_pkg
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/utilcode/pkg
    +  - name: feature_utilcode_export
    +    isApply: true
    +    useLocal: true
    +    localPath: ./feature/utilcode/export
    +    remotePath: 'com.blankj:utilcode-export:1.1'
    +  - name: lib_base
    +    isApply: true
    +    useLocal: true
    +    localPath: ./lib/base
    +  - name: lib_common
    +    isApply: true
    +    useLocal: true
    +    localPath: ./lib/common
    +  - name: lib_subutil
    +    isApply: true
    +    useLocal: true
    +    localPath: ./lib/subutil
    +  - name: lib_utilcode
    +    isApply: true
    +    useLocal: true
    +    localPath: ./lib/utilcode
    +    remotePath: 'com.blankj:utilcode:$Config.versionName'
    +  - name: lib_utildebug
    +    isApply: true
    +    useLocal: true
    +    localPath: ./lib/utildebug
    +  - name: lib_utildebug_no_op
    +    isApply: true
    +    useLocal: true
    +    localPath: ./lib/utildebug-no-op
    diff --git a/plugin/api-gradle-plugin/build.gradle b/plugin/api-gradle-plugin/build.gradle
    index 2f6b956ee0..8a559c213d 100755
    --- a/plugin/api-gradle-plugin/build.gradle
    +++ b/plugin/api-gradle-plugin/build.gradle
    @@ -6,21 +6,21 @@ apply {
     gradlePlugin {
         plugins {
             apiPlugin {
    -            id = 'com.blankj.api'
    +            id = Config.plugins.plugin_api.id
                 implementationClass = 'com.blankj.api.ApiPlugin'
             }
         }
     }
     
     dependencies {
    -    compileOnly Config.depConfig.plugin_gradle.dep
    -    implementation Config.depConfig.commons_io.dep
    -    implementation Config.depConfig.plugin_lib_base_transform.dep
    +    compileOnly Config.plugins.plugin_gradle.path
    +    implementation Config.libs.commons_io.path
    +    implementation Config.modules.plugin_lib_base_transform.remotePath
         implementation gradleApi()
         implementation localGroovy()
     
    -    testImplementation Config.depConfig.test_junit.dep
    -    testImplementation Config.depConfig.plugin_gradle.dep
    +    testImplementation Config.libs.test_junit.path
    +    testImplementation Config.plugins.plugin_gradle.path
     }
     
     sourceSets {
    @@ -32,11 +32,9 @@ sourceSets {
     }
     
     ext {
    -    groupId = Config.depConfig.plugin_api.groupId
    -    artifactId = Config.depConfig.plugin_api.artifactId
    -    version = Config.depConfig.plugin_api.version
    +    groupId = Config.plugins.plugin_api.groupId
    +    artifactId = Config.plugins.plugin_api.artifactId
    +    version = Config.plugins.plugin_api.version
         website = "https://github.com/Blankj/AndroidUtilCode"
     }
     apply from: "${rootDir.path}/config/publish.gradle"
    -//./gradlew clean :plugin_api-gradle-plugin:mavenLocal     // 上传到本地 mavenLocal
    -//./gradlew clean :plugin_api-gradle-plugin:bintrayUpload  // 上传到 jcenter
    diff --git a/plugin/buildSrc-plugin/.gitignore b/plugin/buildSrc-plugin/.gitignore
    new file mode 100755
    index 0000000000..42afabfd2a
    --- /dev/null
    +++ b/plugin/buildSrc-plugin/.gitignore
    @@ -0,0 +1 @@
    +/build
    \ No newline at end of file
    diff --git a/plugin/buildSrc-plugin/build.gradle b/plugin/buildSrc-plugin/build.gradle
    new file mode 100755
    index 0000000000..567fbcef2d
    --- /dev/null
    +++ b/plugin/buildSrc-plugin/build.gradle
    @@ -0,0 +1,37 @@
    +apply {
    +    plugin "groovy"
    +    plugin "java-gradle-plugin"
    +}
    +
    +gradlePlugin {
    +    plugins {
    +        apiPlugin {
    +            id = 'com.blankj.buildSrc'
    +            implementationClass = 'com.blankj.buildSrc.BuildSrcPlugin'
    +        }
    +    }
    +}
    +
    +dependencies {
    +    compileOnly Config.plugins.plugin_gradle.path
    +    implementation Config.libs.commons_io.path
    +    implementation gradleApi()
    +    implementation localGroovy()
    +}
    +
    +sourceSets {
    +    main {
    +        groovy {
    +            srcDirs += 'src/main/java'
    +        }
    +    }
    +}
    +
    +ext {
    +    groupId = Config.plugins.plugin_buildSrc.groupId
    +    artifactId = Config.plugins.plugin_buildSrc.artifactId
    +    version = Config.plugins.plugin_buildSrc.version
    +    website = "https://github.com/Blankj/AndroidUtilCode"
    +}
    +apply from: "${rootDir.path}/config/publish.gradle"
    +//./gradlew clean plugin:plugin_buildSrc-plugin:publish2Local     // 上传到本地 mavenLocal
    diff --git a/plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/BuildSrcPlugin.groovy b/plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/BuildSrcPlugin.groovy
    new file mode 100644
    index 0000000000..2915b3ffe1
    --- /dev/null
    +++ b/plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/BuildSrcPlugin.groovy
    @@ -0,0 +1,13 @@
    +package com.blankj.buildSrc;
    +
    +import org.gradle.api.Plugin
    +import org.gradle.api.Project
    +
    +class BuildSrcPlugin implements Plugin {
    +
    +    @Override
    +    void apply(Project project) {
    +        println 'apply BuildSrcPlugin'
    +        ModuleCfg.main()
    +    }
    +}
    \ No newline at end of file
    diff --git a/plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/ModuleCfg.groovy b/plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/ModuleCfg.groovy
    new file mode 100644
    index 0000000000..d52675d158
    --- /dev/null
    +++ b/plugin/buildSrc-plugin/src/main/java/com/blankj/buildSrc/ModuleCfg.groovy
    @@ -0,0 +1,80 @@
    +package com.blankj.buildSrc
    +
    +import groovy.json.JsonSlurper
    +
    +
    +/**
    + * 在 config.json 中 根据 appConfig 和 pkgConfig 来 include 本地模块
    + * 可以考虑写成插件来更方便 apply
    + */
    +
    +println 'exe ModuleCfg.groovy'
    +
    +def config = new JsonSlurper().parse(file("./config.json"))
    +
    +for (def pro in config.proConfig) {
    +    String localPath = pro.localPath
    +
    +    if (localPath == ":feature:mock") {
    +        if (config.pkgConfig.isEmpty()) {
    +            pro.isApply = false
    +        }
    +    } else if (localPath.endsWith(":app")) {
    +        def appName = localPath.substring(":feature:".length(), localPath.length() - 4)
    +        if (!config.appConfig.contains(appName)) {
    +            pro.isApply = false
    +        }
    +    } else if (localPath.endsWith(":pkg")) {
    +        if (!config.pkgConfig.isEmpty()) {
    +            def pkgName = localPath.substring(":feature:".length(), localPath.length() - 4)
    +            if (!config.pkgConfig.contains(pkgName)) {
    +                pro.isApply = false
    +            }
    +        }
    +    }
    +
    +    if (pro.useLocal && pro.isApply) {
    +        def projectPath = ":" + localPath.substring(1).replace(":", "_")
    +        include projectPath
    +        project(projectPath).projectDir = file(localPath.substring(1).replace(":", "/"))
    +    }
    +}
    +
    +def ls = System.getProperty("line.separator")
    +
    +List proDeps = []
    +for (def pro in config.proConfig) {
    +    boolean useLocal = pro.useLocal
    +    String localPath = pro.localPath
    +    String remotePath = pro.remotePath
    +    String name = localPath.replace(":", "_").replace("-", "_").substring(1)
    +    if (localPath != null) localPath = "\"$localPath\""
    +    if (remotePath != null) remotePath = "\"$remotePath\""
    +    boolean isApply = pro.isApply
    +    proDeps.add(String.format("%-12s%-27s: new DepConfig(%-5s, %-5s, $localPath%s),",
    +            "", name, isApply, useLocal, remotePath == null ? "" : ", $remotePath"))
    +}
    +
    +def configFile = file('./buildSrc/src/main/groovy/ModuleConfig.groovy')
    +def lines = configFile.readLines("utf8")
    +def configContent = new StringBuilder()
    +
    +boolean enterNeverFlag = false
    +for (def line : lines) {
    +    if (enterNeverFlag) {
    +        if (line.contains("/*Never")) {
    +            configContent.append(ls).append(line)
    +            enterNeverFlag = false
    +        }
    +        continue
    +    }
    +    configContent.append(ls).append(line)
    +    if (line.contains("/*Never")) {
    +        configContent.append(ls).append(String.format("%-12s/*Generated by \"config.json\"*/", ""))
    +        enterNeverFlag = true
    +        for (String dep : proDeps) {
    +            configContent.append(ls).append(dep)
    +        }
    +    }
    +}
    +configFile.write(configContent.substring(ls.length()).toString())
    \ No newline at end of file
    diff --git a/plugin/bus-gradle-plugin/build.gradle b/plugin/bus-gradle-plugin/build.gradle
    index 7cd24042a7..68e43c6867 100755
    --- a/plugin/bus-gradle-plugin/build.gradle
    +++ b/plugin/bus-gradle-plugin/build.gradle
    @@ -6,21 +6,21 @@ apply {
     gradlePlugin {
         plugins {
             busPlugin {
    -            id = 'com.blankj.bus'
    +            id = Config.plugins.plugin_bus.id
                 implementationClass = 'com.blankj.bus.BusPlugin'
             }
         }
     }
     
     dependencies {
    -    compileOnly Config.depConfig.plugin_gradle.dep
    -    implementation Config.depConfig.commons_io.dep
    -    implementation Config.depConfig.plugin_lib_base_transform.dep
    +    compileOnly Config.plugins.plugin_gradle.path
    +    implementation Config.modules.plugin_lib_base_transform.remotePath
    +    implementation Config.libs.commons_io.path
         implementation gradleApi()
         implementation localGroovy()
     
    -    testImplementation Config.depConfig.test_junit.dep
    -    testImplementation Config.depConfig.plugin_gradle.dep
    +    testImplementation Config.libs.test_junit.path
    +    testImplementation Config.plugins.plugin_gradle.path
     }
     
     sourceSets {
    @@ -32,9 +32,9 @@ sourceSets {
     }
     
     ext {
    -    groupId = Config.depConfig.plugin_bus.groupId
    -    artifactId = Config.depConfig.plugin_bus.artifactId
    -    version = Config.depConfig.plugin_bus.version
    +    groupId = Config.plugins.plugin_bus.groupId
    +    artifactId = Config.plugins.plugin_bus.artifactId
    +    version = Config.plugins.plugin_bus.version
         website = "https://github.com/Blankj/AndroidUtilCode"
     }
     apply from: "${rootDir.path}/config/publish.gradle"
    diff --git a/plugin/lib/base-transform/build.gradle b/plugin/lib/base-transform/build.gradle
    index 3518481ebd..8eac0ab6d3 100755
    --- a/plugin/lib/base-transform/build.gradle
    +++ b/plugin/lib/base-transform/build.gradle
    @@ -4,8 +4,8 @@ apply {
     }
     
     dependencies {
    -    compileOnly Config.depConfig.plugin_gradle.dep
    -    implementation Config.depConfig.commons_io.dep
    +    compileOnly Config.plugins.plugin_gradle.path
    +    implementation Config.libs.commons_io.path
         implementation gradleApi()
         implementation localGroovy()
     }
    @@ -19,11 +19,11 @@ sourceSets {
     }
     
     ext {
    -    groupId = Config.depConfig.plugin_lib_base_transform.groupId
    -    artifactId = Config.depConfig.plugin_lib_base_transform.artifactId
    -    version = Config.depConfig.plugin_lib_base_transform.version
    +    groupId = Config.modules.plugin_lib_base_transform.groupId
    +    artifactId = Config.modules.plugin_lib_base_transform.artifactId
    +    version = Config.modules.plugin_lib_base_transform.version
         website = "https://github.com/Blankj/AndroidUtilCode"
     }
     apply from: "${rootDir.path}/config/publish.gradle"
    -//./gradlew clean plugin:lib:plugin_lib_base-transform:mavenLocal     // 上传到本地 mavenLocal
    -//./gradlew clean plugin:lib:plugin_lib_base-transform:bintrayUpload  // 上传到 gradle 插件库中
    +//./gradlew clean :plugin_lib_base-transform:mavenLocal     // 上传到本地 mavenLocal
    +//./gradlew clean :plugin_lib_base-transform:bintrayUpload  // 上传到 gradle 插件库中
    diff --git a/settings.gradle b/settings.gradle
    index 2d1b907aca..3fb2a0a2be 100644
    --- a/settings.gradle
    +++ b/settings.gradle
    @@ -1,73 +1,39 @@
    -import groovy.json.JsonSlurper
    -
    -/**
    - * 在 config.json 中 根据 appConfig 和 pkgConfig 来 include 本地模块
    - */
    -def config = new JsonSlurper().parse(file("./config.json"))
    -
    -for (def pro in config.proConfig) {
    -    String localPath = pro.localPath
    -
    -    if (localPath == ":feature:mock") {
    -        if (config.pkgConfig.isEmpty()) {
    -            pro.isApply = false
    -        }
    -    } else if (localPath.endsWith(":app")) {
    -        def appName = localPath.substring(":feature:".length(), localPath.length() - 4)
    -        if (!config.appConfig.contains(appName)) {
    -            pro.isApply = false
    -        }
    -    } else if (localPath.endsWith(":pkg")) {
    -        if (!config.pkgConfig.isEmpty()) {
    -            def pkgName = localPath.substring(":feature:".length(), localPath.length() - 4)
    -            if (!config.pkgConfig.contains(pkgName)) {
    -                pro.isApply = false
    -            }
    -        }
    -    }
    -
    -    if (pro.useLocal && pro.isApply) {
    -        def projectPath = ":" + localPath.substring(1).replace(":", "_")
    -        include projectPath
    -        project(projectPath).projectDir = file(localPath.substring(1).replace(":", "/"))
    -    }
    -}
    -
    -def ls = System.getProperty("line.separator")
    -
    -List proDeps = []
    -for (def pro in config.proConfig) {
    -    boolean useLocal = pro.useLocal
    -    String localPath = pro.localPath
    -    String remotePath = pro.remotePath
    -    String name = localPath.replace(":", "_").replace("-", "_").substring(1)
    -    if (localPath != null) localPath = "\"$localPath\""
    -    if (remotePath != null) remotePath = "\"$remotePath\""
    -    boolean isApply = pro.isApply
    -    proDeps.add(String.format("%-12s%-27s: new DepConfig(%-5s, %-5s, $localPath%s),",
    -            "", name, isApply, useLocal, remotePath == null ? "" : ", $remotePath"))
    -}
    -
    -def configFile = file('./buildSrc/src/main/groovy/Config.groovy')
    -def lines = configFile.readLines("utf8")
    -def configContent = new StringBuilder()
    -
    -boolean enterNeverFlag = false
    -for (def line : lines) {
    -    if (enterNeverFlag) {
    -        if (line.contains("/*Never")) {
    -            configContent.append(ls).append(line)
    -            enterNeverFlag = false
    -        }
    -        continue
    -    }
    -    configContent.append(ls).append(line)
    -    if (line.contains("/*Never")) {
    -        configContent.append(ls).append(String.format("%-12s/*Generated by \"config.json\"*/", ""))
    -        enterNeverFlag = true
    -        for (String dep : proDeps) {
    -            configContent.append(ls).append(dep)
    -        }
    -    }
    -}
    -configFile.write(configContent.substring(ls.length()).toString())
    \ No newline at end of file
    +//includeBuild 'configPlugin'
    +
    +//buildscript {
    +////    ConfigUtils.init(gradle)
    +//    repositories {
    +//        mavenLocal()
    +//        mavenCentral()
    +//    }
    +//
    +//    dependencies {
    +//        classpath 'com.blankj:buildSrc-plugin:1.0'
    +//    }
    +//}
    +
    +//apply plugin: "com.blankj.buildSrc"
    +
    +
    +//dependencyResolutionManagement {
    +//    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    +//    repositories {
    +//        google()
    +//        mavenCentral()
    +//        jcenter() // Warning: this repository is going to shut down soon
    +//        maven {url 'https://jetpack.io/'} // Warning: this repository is going to shut down soon
    +//    }
    +//
    +////    configurations.all {
    +////        resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
    +////
    +////        resolutionStrategy.eachDependency {
    +////            if (it.requested.group == 'com.android.support' && !it.requested.name.contains(
    +////                    'multidex')) {
    +////                it.useVersion Config.supportVersion
    +////            }
    +////        }
    +////    }
    +//}
    +
    +apply from: 'module_config.gradle'
    
    From d0b890e106be3658d259ca7ec52e232b991f67f1 Mon Sep 17 00:00:00 2001
    From: caimengjie 
    Date: Mon, 6 Dec 2021 01:45:43 +0800
    Subject: [PATCH 101/122] opt: publish v1.31.0
    
    ---
     module_config.yaml | 91 ----------------------------------------------
     1 file changed, 91 deletions(-)
     delete mode 100644 module_config.yaml
    
    diff --git a/module_config.yaml b/module_config.yaml
    deleted file mode 100644
    index b10ce808e6..0000000000
    --- a/module_config.yaml
    +++ /dev/null
    @@ -1,91 +0,0 @@
    -desc: 提交 git 时需要检查下配置是否正确!!!
    -appConfigDesc: appConfig 配置的是可以跑 app 的模块
    -appConfig:
    -  - feature_launcher_app
    -pkgConfigDesc: pkgConfig 配置的是要依赖的功能包,为空则依赖全部
    -pkgConfig: [ ]
    -moduleConfigDesc: moduleConfig 配置的是使用本地还是仓库,优先级低于 appConfig 和 pkgConfig
    -moduleConfig:
    -  - name: plugin_api_gradle_plugin
    -      isApply: true
    -      useLocal: true
    -      localPath: ./plugin/api-gradle-plugin
    -  - name: plugin_bus_gradle_plugin
    -    isApply: true
    -    useLocal: true
    -    localPath: ./plugin/bus-gradle-plugin
    -  - name: plugin_lib_base_transform
    -    isApply: true
    -    useLocal: true
    -    localPath: ./plugin/lib/base-transform
    -    remotePath: 'com.blankj:base-transform:1.0'
    -  - name: plugin_buildSrc_plugin
    -    isApply: true
    -    useLocal: true
    -    localPath: ./plugin/buildSrc-plugin
    -  - name: feature_mock
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/mock
    -  - name: feature_launcher_app
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/launcher/app
    -  - name: feature_main_app
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/main/app
    -  - name: feature_main_pkg
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/main/pkg
    -  - name: feature_subutil_app
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/subutil/app
    -  - name: feature_subutil_pkg
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/subutil/pkg
    -  - name: feature_subutil_export
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/subutil/export
    -  - name: feature_utilcode_app
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/utilcode/app
    -  - name: feature_utilcode_pkg
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/utilcode/pkg
    -  - name: feature_utilcode_export
    -    isApply: true
    -    useLocal: true
    -    localPath: ./feature/utilcode/export
    -    remotePath: 'com.blankj:utilcode-export:1.1'
    -  - name: lib_base
    -    isApply: true
    -    useLocal: true
    -    localPath: ./lib/base
    -  - name: lib_common
    -    isApply: true
    -    useLocal: true
    -    localPath: ./lib/common
    -  - name: lib_subutil
    -    isApply: true
    -    useLocal: true
    -    localPath: ./lib/subutil
    -  - name: lib_utilcode
    -    isApply: true
    -    useLocal: true
    -    localPath: ./lib/utilcode
    -    remotePath: 'com.blankj:utilcode:$Config.versionName'
    -  - name: lib_utildebug
    -    isApply: true
    -    useLocal: true
    -    localPath: ./lib/utildebug
    -  - name: lib_utildebug_no_op
    -    isApply: true
    -    useLocal: true
    -    localPath: ./lib/utildebug-no-op
    
    From ccba200fd83bc6479b8b8065a4824cd0e5fd67c2 Mon Sep 17 00:00:00 2001
    From: caimengjie 
    Date: Mon, 6 Dec 2021 01:47:28 +0800
    Subject: [PATCH 102/122] opt: publish v1.31.0
    
    ---
     CHANGELOG.md                                   |  1 +
     buildSrc/src/main/groovy/Config.groovy         |  2 +-
     config/publish.gradle                          |  8 ++++++--
     lib/utilcode/README-CN.md                      |  7 ++++---
     lib/utilcode/README.md                         |  7 ++++---
     .../com/blankj/utilcode/util/AppUtils.java     | 18 +++++++++---------
     .../com/blankj/utilcode/util/NetworkUtils.java |  5 +++--
     .../com/blankj/utilcode/util/TimeUtils.java    |  2 ++
     module_config.json                             |  2 +-
     9 files changed, 31 insertions(+), 21 deletions(-)
    
    diff --git a/CHANGELOG.md b/CHANGELOG.md
    index 401a5071f8..c4bcc19c85 100644
    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -1,3 +1,4 @@
    +* `21/12/06` [add] Publish v1.31.0
     * `21/05/13` [add] Support publish mavenCentral.
     * `21/02/22` [add] Fix ToastUtils rtl bug. Publish v1.30.6.
     * `20/11/16` [add] Add ImageUtils#save2Album support param of dirName.
    diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
    index 4a0b27a980..2465570d82 100644
    --- a/buildSrc/src/main/groovy/Config.groovy
    +++ b/buildSrc/src/main/groovy/Config.groovy
    @@ -34,7 +34,7 @@ class Config {
                 lib_base                   : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/base"),
                 lib_common                 : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/common"),
                 lib_subutil                : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/subutil"),
    -            lib_utilcode               : new ModuleConfig(isApply: true , useLocal: false, localPath: "./lib/utilcode", remotePath: "com.blankj:utilcode:$Config.versionName"),
    +            lib_utilcode               : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utilcode", remotePath: "com.blankj:utilcodex:$Config.versionName"),
                 lib_utildebug              : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug"),
                 lib_utildebug_no_op        : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug-no-op"),
                 /*Don't delete this line*/
    diff --git a/config/publish.gradle b/config/publish.gradle
    index fa8a449f3c..91f749a86d 100644
    --- a/config/publish.gradle
    +++ b/config/publish.gradle
    @@ -220,6 +220,10 @@ static def isAndroidEnv(Project project) {
         return project.getPlugins().hasPlugin('com.android.application') || project.getPlugins().hasPlugin('com.android.library')
     }
     
    -task publish2Local(type: GradleBuild, dependsOn: ['clean', 'assemble', 'publishReleasePublicationToMavenLocal']) {}
    +task publish2Local(type: GradleBuild) {
    +    tasks = ['assemble', 'publishReleasePublicationToMavenLocal']
    +}
     
    -task publish2Remote(type: GradleBuild, dependsOn: ['clean', 'assemble', 'publishReleasePublicationToMavenRepository']) {}
    \ No newline at end of file
    +task publish2Remote(type: GradleBuild) {
    +    tasks = ['assemble', 'publishReleasePublicationToMavenRepository']
    +}
    \ No newline at end of file
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index 79b18eef15..0e4e93f3a0 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -2,10 +2,11 @@
     
     Gradle:
     ```groovy
    -implementation 'com.blankj:utilcode:1.30.6'
    -
     // if u use AndroidX, use the following
    -implementation 'com.blankj:utilcodex:1.30.6'
    +implementation 'com.blankj:utilcodex:1.31.0'
    +
    +// Not in maintenance
    +implementation 'com.blankj:utilcode:1.30.6'
     ```
     
     
    diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
    index 63f7a83ba7..cdabfba45a 100644
    --- a/lib/utilcode/README.md
    +++ b/lib/utilcode/README.md
    @@ -2,10 +2,11 @@
     
     Gradle:
     ```groovy
    -implementation 'com.blankj:utilcode:1.30.6'
    -
     // if u use AndroidX, use the following
    -implementation 'com.blankj:utilcodex:1.30.6'
    +implementation 'com.blankj:utilcodex:1.31.0'
    +
    +// Not in maintenance
    +implementation 'com.blankj:utilcode:1.30.6'
     ```
     
     
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    index fe8301f9ec..8f03e1cf1f 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    @@ -385,16 +385,16 @@ public static int getAppIconId(final String packageName) {
             }
         }
     
    -    
    +
         /**
          * Return true if this is the first ever time that the application is installed on the device.
          *
          * @return true if this is the first ever time that the application is installed on the device.
          */
    -    public static boolean isFirstTimeInstall(){
    +    public static boolean isFirstTimeInstall() {
             try {
    -            Long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).firstInstallTime;
    -            Long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).lastUpdateTime;
    +            long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(getAppPackageName(), 0).firstInstallTime;
    +            long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(getAppPackageName(), 0).lastUpdateTime;
                 return firstInstallTime == lastUpdateTime;
             } catch (Exception e) {
                 return false;
    @@ -406,17 +406,17 @@ public static boolean isFirstTimeInstall(){
          *
          * @return true if app was previously installed and this one is an update/upgrade to that one, returns false if this is a fresh installation and not an update/upgrade.
          */
    -    public static boolean isAppUpgraded(){
    +    public static boolean isAppUpgraded() {
             try {
    -            Long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).firstInstallTime;
    -            Long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(this.getAppPackageName(), 0).lastUpdateTime;
    +            long firstInstallTime = Utils.getApp().getPackageManager().getPackageInfo(getAppPackageName(), 0).firstInstallTime;
    +            long lastUpdateTime = Utils.getApp().getPackageManager().getPackageInfo(getAppPackageName(), 0).lastUpdateTime;
                 return firstInstallTime != lastUpdateTime;
             } catch (Exception e) {
                 return false;
             }
         }
    -    
    -   
    +
    +
         /**
          * Return the application's package name.
          *
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
    index b2c64a6416..e73b6487db 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java
    @@ -6,6 +6,7 @@
     import android.content.Intent;
     import android.content.IntentFilter;
     import android.net.ConnectivityManager;
    +import android.net.NetworkCapabilities;
     import android.net.NetworkInfo;
     import android.net.wifi.ScanResult;
     import android.net.wifi.WifiInfo;
    @@ -280,9 +281,9 @@ public static boolean isBehindProxy(){
         public static boolean isUsingVPN(){
             ConnectivityManager cm = (ConnectivityManager) com.blankj.utilcode.util.Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE);
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    -            return cm.getNetworkInfo(ConnectivityManager.TYPE_VPN).isConnectedOrConnecting()
    +            return cm.getNetworkInfo(ConnectivityManager.TYPE_VPN).isConnectedOrConnecting();
             } else {
    -            return cm.getNetworkInfo(NetworkCapabilities.TRANSPORT_VPN).isConnectedOrConnecting()
    +            return cm.getNetworkInfo(NetworkCapabilities.TRANSPORT_VPN).isConnectedOrConnecting();
             }
         }
     
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java
    index 8a38efd195..ee700cbeb7 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java
    @@ -1,6 +1,8 @@
     package com.blankj.utilcode.util;
     
     import android.annotation.SuppressLint;
    +import android.os.Build;
    +import android.provider.Settings;
     
     import com.blankj.utilcode.constant.TimeConstants;
     
    diff --git a/module_config.json b/module_config.json
    index 18f416382a..87233122b9 100644
    --- a/module_config.json
    +++ b/module_config.json
    @@ -23,7 +23,7 @@
         {"name": "lib_base",                  "isApply": true, "useLocal": true, "localPath": "./lib/base"},
         {"name": "lib_common",                "isApply": true, "useLocal": true, "localPath": "./lib/common"},
         {"name": "lib_subutil",               "isApply": true, "useLocal": true, "localPath": "./lib/subutil"},
    -    {"name": "lib_utilcode",              "isApply": true, "useLocal": false, "localPath": "./lib/utilcode", "remotePath": "com.blankj:utilcodex:$Config.versionName"},
    +    {"name": "lib_utilcode",              "isApply": true, "useLocal": true, "localPath": "./lib/utilcode", "remotePath": "com.blankj:utilcodex:$Config.versionName"},
         {"name": "lib_utildebug",             "isApply": true, "useLocal": true, "localPath": "./lib/utildebug"},
         {"name": "lib_utildebug_no_op",       "isApply": true, "useLocal": true, "localPath": "./lib/utildebug-no-op"}
       ]
    
    From ac872f8fb52d569d252e5fe136b0f7af14798f5a Mon Sep 17 00:00:00 2001
    From: caimengjie 
    Date: Mon, 6 Dec 2021 01:51:47 +0800
    Subject: [PATCH 103/122] fix: ci
    
    ---
     buildSrc/src/main/groovy/Config.groovy |  4 ++--
     config/publish.gradle                  | 15 ++++++---------
     module_config.json                     |  2 +-
     3 files changed, 9 insertions(+), 12 deletions(-)
    
    diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
    index 2465570d82..268ec666ce 100644
    --- a/buildSrc/src/main/groovy/Config.groovy
    +++ b/buildSrc/src/main/groovy/Config.groovy
    @@ -34,7 +34,7 @@ class Config {
                 lib_base                   : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/base"),
                 lib_common                 : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/common"),
                 lib_subutil                : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/subutil"),
    -            lib_utilcode               : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utilcode", remotePath: "com.blankj:utilcodex:$Config.versionName"),
    +            lib_utilcode               : new ModuleConfig(isApply: true , useLocal: false, localPath: "./lib/utilcode", remotePath: "com.blankj:utilcodex:$Config.versionName"),
                 lib_utildebug              : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug"),
                 lib_utildebug_no_op        : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug-no-op"),
                 /*Don't delete this line*/
    @@ -54,7 +54,7 @@ class Config {
                 plugin_bus     : new PluginConfig(isApply: true, useLocal: false, path: "com.blankj:bus-gradle-plugin:2.6", id: "com.blankj.bus"),
                 //./gradlew clean :plugin_bus-gradle-plugin:mavenLocal     // 上传到本地 mavenLocal
                 //./gradlew clean :plugin_bus-gradle-plugin:bintrayUpload  // 上传到 jcenter
    -            plugin_buildSrc: new PluginConfig(isApply: true, useLocal: false, path: "com.blankj:buildSrc-plugin:1.0", id: "com.blankj.buildSrc"),
    +            plugin_buildSrc: new PluginConfig(isApply: false, useLocal: false, path: "com.blankj:buildSrc-plugin:1.0", id: "com.blankj.buildSrc"),
                 //./gradlew clean :plugin_bus-gradle-plugin:mavenLocal     // 上传到本地 mavenLocal
                 //./gradlew clean :plugin_bus-gradle-plugin:bintrayUpload  // 上传到 jcenter
         ]
    diff --git a/config/publish.gradle b/config/publish.gradle
    index 91f749a86d..7608215123 100644
    --- a/config/publish.gradle
    +++ b/config/publish.gradle
    @@ -27,17 +27,14 @@ apply plugin: 'signing'
     ext.multiPublishMode = true
     
     File localPropertiesFile = project.rootProject.file("local.properties");
    -if (localPropertiesFile.exists()) {
    -    Properties properties = new Properties()
    -    properties.load(new FileInputStream(localPropertiesFile))
    -    properties.each { name, value -> ext[name] = value }
    -} else {
    -    if (!ext["signing.keyId"] && !ext["signing.password"] && !ext["signing.secretKeyRingFile"]
    -            && !ext["ossrhUsername"] && !ext["ossrhPassword"]) {
    -        throw new NullPointerException("U should set MavenCentral params in local.properties")
    -    }
    +if (!localPropertiesFile.exists()) {
    +    return
     }
     
    +Properties properties = new Properties()
    +properties.load(new FileInputStream(localPropertiesFile))
    +properties.each { name, value -> ext[name] = value }
    +
     afterEvaluate {
         def ext = project.ext
         publishing {
    diff --git a/module_config.json b/module_config.json
    index 87233122b9..18f416382a 100644
    --- a/module_config.json
    +++ b/module_config.json
    @@ -23,7 +23,7 @@
         {"name": "lib_base",                  "isApply": true, "useLocal": true, "localPath": "./lib/base"},
         {"name": "lib_common",                "isApply": true, "useLocal": true, "localPath": "./lib/common"},
         {"name": "lib_subutil",               "isApply": true, "useLocal": true, "localPath": "./lib/subutil"},
    -    {"name": "lib_utilcode",              "isApply": true, "useLocal": true, "localPath": "./lib/utilcode", "remotePath": "com.blankj:utilcodex:$Config.versionName"},
    +    {"name": "lib_utilcode",              "isApply": true, "useLocal": false, "localPath": "./lib/utilcode", "remotePath": "com.blankj:utilcodex:$Config.versionName"},
         {"name": "lib_utildebug",             "isApply": true, "useLocal": true, "localPath": "./lib/utildebug"},
         {"name": "lib_utildebug_no_op",       "isApply": true, "useLocal": true, "localPath": "./lib/utildebug-no-op"}
       ]
    
    From f9a1dbf0dfa8ad5bd20fe4f72bb72a4470b248db Mon Sep 17 00:00:00 2001
    From: Absinthe 
    Date: Sat, 11 Dec 2021 11:59:28 +0800
    Subject: [PATCH 104/122] Explicitly specify `android:exported` to make
     compatible with Android 12.
    
    ---
     lib/utilcode/src/main/AndroidManifest.xml | 2 ++
     1 file changed, 2 insertions(+)
    
    diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml
    index fc5b75e0e3..d45dd57787 100644
    --- a/lib/utilcode/src/main/AndroidManifest.xml
    +++ b/lib/utilcode/src/main/AndroidManifest.xml
    @@ -5,12 +5,14 @@
     
             
     
             
    Date: Wed, 25 May 2022 11:18:02 +0800
    Subject: [PATCH 105/122] fix bug
    
    ---
     lib/utilcode/src/main/res/xml/util_code_provider_paths.xml | 7 ++++++-
     1 file changed, 6 insertions(+), 1 deletion(-)
    
    diff --git a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml
    index ed731a2299..b88716480c 100644
    --- a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml
    +++ b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml
    @@ -23,4 +23,9 @@
         
    -
    \ No newline at end of file
    +      
    +    
    +
    
    From 8dc01389ee5599c44c7ae26a8c26411b63bfa564 Mon Sep 17 00:00:00 2001
    From: Justson 
    Date: Wed, 8 Jun 2022 10:55:22 +0800
    Subject: [PATCH 106/122] Update README-CN.md
    
    ---
     lib/utilcode/README-CN.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index 0e4e93f3a0..260cabac24 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -6,7 +6,7 @@ Gradle:
     implementation 'com.blankj:utilcodex:1.31.0'
     
     // Not in maintenance
    -implementation 'com.blankj:utilcode:1.30.6'
    +implementation 'com.blankj:utilcode:1.30.7'
     ```
     
     
    
    From ed848ebd638507a492946e6300b057fb621b5dba Mon Sep 17 00:00:00 2001
    From: NH002 
    Date: Thu, 9 Jun 2022 09:06:11 +0200
    Subject: [PATCH 107/122] Added uri2FileNoCacheCopy
    
    ---
     .../main/java/com/blankj/utilcode/util/UriUtils.java  | 11 +++++++++++
     1 file changed, 11 insertions(+)
    
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java
    index 322b9d1190..c22d1bba38 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/UriUtils.java
    @@ -77,6 +77,17 @@ public static File uri2File(final Uri uri) {
             return copyUri2Cache(uri);
         }
     
    +    /**
    +     * Uri to file, without creating the cache copy if the path cannot be resolved.
    +     *
    +     * @param uri The uri.
    +     * @return file
    +     */
    +    public static File uri2FileNoCacheCopy(final Uri uri) {
    +        if (uri == null) return null;
    +        return uri2FileReal(uri);
    +    }
    +    
         /**
          * Uri to file.
          *
    
    From da8b04946981398dfb217825946af55cba3b3444 Mon Sep 17 00:00:00 2001
    From: taochen <935612713@qq.com>
    Date: Mon, 18 Jul 2022 16:12:33 +0800
    Subject: [PATCH 108/122] =?UTF-8?q?[M]=20BarUtils=E6=B7=BB=E5=8A=A0transpa?=
     =?UTF-8?q?rentNavBar=E5=AE=9E=E7=8E=B0?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     .../pkg/feature/bar/nav/BarNavActivity.kt     | 42 +++++++++++++------
     .../com/blankj/utilcode/util/BarUtils.java    | 32 +++++++++++---
     2 files changed, 57 insertions(+), 17 deletions(-)
    
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    index 1b3032974f..48a738ecd7 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    @@ -12,7 +12,6 @@ import com.blankj.utilcode.pkg.R
     import com.blankj.utilcode.util.BarUtils
     import com.blankj.utilcode.util.CollectionUtils
     import com.blankj.utilcode.util.ColorUtils
    -import com.blankj.utilcode.util.Utils
     
     /**
      * ```
    @@ -41,24 +40,43 @@ class BarNavActivity : CommonActivity() {
                 add(CommonItemTitle("isSupportNavBar", BarUtils.isSupportNavBar().toString()))
                 if (BarUtils.isSupportNavBar()) {
                     add(CommonItemSwitch(
    -                        R.string.bar_nav_visibility,
    -                        { BarUtils.isNavBarVisible(this@BarNavActivity) },
    -                        { BarUtils.setNavBarVisibility(this@BarNavActivity, it) }
    +                    R.string.bar_nav_visibility,
    +                    { BarUtils.isNavBarVisible(this@BarNavActivity) },
    +                    { BarUtils.setNavBarVisibility(this@BarNavActivity, it) }
                     ))
     
                     add(CommonItemSwitch(
    -                        R.string.bar_nav_light_mode,
    -                        { BarUtils.isNavBarLightMode(this@BarNavActivity) },
    -                        { BarUtils.setNavBarLightMode(this@BarNavActivity, it) }
    +                    R.string.bar_nav_light_mode,
    +                    { BarUtils.isNavBarLightMode(this@BarNavActivity) },
    +                    { BarUtils.setNavBarLightMode(this@BarNavActivity, it) }
                     ))
     
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    -                    add(CommonItemClick("getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}").setOnItemClickListener() { _, item, _ ->
    -                        BarUtils.setNavBarColor(this@BarNavActivity, ColorUtils.getRandomColor())
    -                        itemsView.updateItems(bindItems())
    -                        item.title = "getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}"
    -                    })
    +                    add(
    +                        CommonItemClick(
    +                            "getNavBarColor: ${
    +                                ColorUtils.int2ArgbString(
    +                                    BarUtils.getNavBarColor(
    +                                        this@BarNavActivity
    +                                    )
    +                                )
    +                            }"
    +                        ).setOnItemClickListener() { _, item, _ ->
    +                            BarUtils.setNavBarColor(
    +                                this@BarNavActivity,
    +                                ColorUtils.getRandomColor()
    +                            )
    +                            itemsView.updateItems(bindItems())
    +                            item.title = "getNavBarColor: ${
    +                                ColorUtils.int2ArgbString(
    +                                    BarUtils.getNavBarColor(this@BarNavActivity)
    +                                )
    +                            }"
    +                        })
                     }
    +                add(CommonItemClick("transparentNavBar").setOnItemClickListener() { _, item, _ ->
    +                    BarUtils.transparentNavBar(this@BarNavActivity)
    +                })
                 }
             }
         }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    index af9dbc4fcd..ece4f7faba 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    @@ -1,5 +1,7 @@
     package com.blankj.utilcode.util;
     
    +import static android.Manifest.permission.EXPAND_STATUS_BAR;
    +
     import android.annotation.SuppressLint;
     import android.app.Activity;
     import android.content.Context;
    @@ -19,15 +21,13 @@
     import android.view.Window;
     import android.view.WindowManager;
     
    -import java.lang.reflect.Method;
    -
     import androidx.annotation.ColorInt;
     import androidx.annotation.NonNull;
     import androidx.annotation.RequiresApi;
     import androidx.annotation.RequiresPermission;
     import androidx.drawerlayout.widget.DrawerLayout;
     
    -import static android.Manifest.permission.EXPAND_STATUS_BAR;
    +import java.lang.reflect.Method;
     
     /**
      * 
    @@ -44,8 +44,8 @@ public final class BarUtils {
         ///////////////////////////////////////////////////////////////////////////
     
         private static final String TAG_STATUS_BAR = "TAG_STATUS_BAR";
    -    private static final String TAG_OFFSET     = "TAG_OFFSET";
    -    private static final int    KEY_OFFSET     = -123;
    +    private static final String TAG_OFFSET = "TAG_OFFSET";
    +    private static final int KEY_OFFSET = -123;
     
         private BarUtils() {
             throw new UnsupportedOperationException("u can't instantiate me...");
    @@ -715,4 +715,26 @@ public static boolean isNavBarLightMode(@NonNull final Window window) {
             }
             return false;
         }
    +
    +    public static void transparentNavBar(@NonNull final Activity activity) {
    +        transparentNavBar(activity.getWindow());
    +    }
    +
    +    public static void transparentNavBar(@NonNull final Window window) {
    +        if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) return;
    +        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    +            window.setNavigationBarContrastEnforced(false);
    +        }
    +        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    +            window.setNavigationBarColor(Color.TRANSPARENT);
    +        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    +            if ((window.getAttributes().flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) == 0) {
    +                window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    +            }
    +        }
    +        View decorView = window.getDecorView();
    +        int vis = decorView.getSystemUiVisibility();
    +        int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
    +        decorView.setSystemUiVisibility(vis | option);
    +    }
     }
    
    From 0a1be7ec672053012b2bdae6259037765ff0af14 Mon Sep 17 00:00:00 2001
    From: taochen <935612713@qq.com>
    Date: Mon, 18 Jul 2022 17:02:24 +0800
    Subject: [PATCH 109/122] =?UTF-8?q?[M]=20=E4=BF=AE=E6=94=B9BarUtils?=
     =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=88=97=E8=A1=A8=E5=8F=8A=E6=8F=8F=E8=BF=B0?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     lib/utilcode/README-CN.md | 1 +
     lib/utilcode/README.md    | 1 +
     2 files changed, 2 insertions(+)
    
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index 0e4e93f3a0..f7523783f9 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -141,6 +141,7 @@ getNavBarColor                       : 获取导航栏颜色
     isSupportNavBar                      : 判断是否支持导航栏
     setNavBarLightMode                   : 设置导航栏是否为浅色模式
     isNavBarLightMode                    : 判断导航栏是否为浅色模式
    +transparentNavBar                    : 透明导航栏
     ```
     
     * ### 亮度相关 -> [BrightnessUtils.java][brightness.java] -> [Demo][brightness.demo]
    diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
    index cdabfba45a..9d2025ebb0 100644
    --- a/lib/utilcode/README.md
    +++ b/lib/utilcode/README.md
    @@ -140,6 +140,7 @@ getNavBarColor
     isSupportNavBar
     setNavBarLightMode
     isNavBarLightMode
    +transparentNavBar
     ```
     
     * ### About Brightness -> [BrightnessUtils.java][brightness.java] -> [Demo][brightness.demo]
    
    From cf983059a82e0306ea1bdaa773f9fec0ed03ad22 Mon Sep 17 00:00:00 2001
    From: taochen <935612713@qq.com>
    Date: Tue, 19 Jul 2022 12:00:46 +0800
    Subject: [PATCH 110/122] =?UTF-8?q?[F]=20TargetSdkVersion=2030=20AppUtils.?=
     =?UTF-8?q?isAppInstalled=E8=BF=94=E5=9B=9E=E9=94=99=E8=AF=AF?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     lib/utilcode/src/main/AndroidManifest.xml | 9 +++++++++
     1 file changed, 9 insertions(+)
    
    diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml
    index fc5b75e0e3..4d2b38e471 100644
    --- a/lib/utilcode/src/main/AndroidManifest.xml
    +++ b/lib/utilcode/src/main/AndroidManifest.xml
    @@ -1,6 +1,15 @@
     
     
    +    
    +        
    +            
    +        
    +        
    +            
    +        
    +    
    +
         
     
             
    Date: Tue, 19 Jul 2022 17:31:46 +0800
    Subject: [PATCH 111/122] =?UTF-8?q?[M]=20AppUtils=E5=A2=9E=E5=8A=A0getAppM?=
     =?UTF-8?q?inSdkVersion,=20getAppTargetSdkVersion=E6=94=AF=E6=8C=81?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     .../utilcode/pkg/feature/app/AppActivity.kt   | 108 ++++++++--------
     lib/utilcode/README-CN.md                     |   2 +
     lib/utilcode/README.md                        |   2 +
     .../com/blankj/utilcode/util/AppUtils.java    | 115 ++++++++++++++++--
     .../debug/tool/appInfo/AppInfoItem.java       |  15 ++-
     5 files changed, 173 insertions(+), 69 deletions(-)
    
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    index 175fa1bc3b..21eb351146 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    @@ -54,7 +54,10 @@ class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener {
     
         override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
    -                CommonItemSwitch("registerAppStatusChangedListener", { isRegisterAppStatusChangedListener }, {
    +            CommonItemSwitch(
    +                "registerAppStatusChangedListener",
    +                { isRegisterAppStatusChangedListener },
    +                {
                         isRegisterAppStatusChangedListener = it
                         if (it) {
                             AppUtils.registerAppStatusChangedListener(this)
    @@ -62,55 +65,63 @@ class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener {
                             AppUtils.unregisterAppStatusChangedListener(this)
                         }
                     }),
    -                CommonItemTitle("isAppRoot", AppUtils.isAppRoot().toString()),
    -                CommonItemTitle("isAppDebug", AppUtils.isAppDebug().toString()),
    -                CommonItemTitle("isAppSystem", AppUtils.isAppSystem().toString()),
    -                CommonItemTitle("isAppForeground", AppUtils.isAppForeground(AppUtils.getAppPackageName()).toString()),
    -                CommonItemTitle("isAppRunning", AppUtils.isAppRunning(AppUtils.getAppPackageName()).toString()),
    -                CommonItemImage("getAppIcon") {
    -                    it.setImageDrawable(AppUtils.getAppIcon())
    -                },
    -                CommonItemTitle("getAppPackageName", AppUtils.getAppPackageName()),
    -                CommonItemTitle("getAppName", AppUtils.getAppName()),
    -                CommonItemTitle("getAppPath", AppUtils.getAppPath()),
    -                CommonItemTitle("getAppVersionName", AppUtils.getAppVersionName()),
    -                CommonItemTitle("getAppVersionCode", AppUtils.getAppVersionCode().toString()),
    -                CommonItemTitle("getAppSignaturesSHA1", AppUtils.getAppSignaturesSHA1().toString()),
    -                CommonItemTitle("getAppSignaturesSHA256", AppUtils.getAppSignaturesSHA256().toString()),
    -                CommonItemTitle("getAppSignaturesMD5", AppUtils.getAppSignaturesMD5().toString()),
    -                CommonItemTitle("getAppUid", AppUtils.getAppUid().toString()),
    -                CommonItemTitle("getApkInfo", AppUtils.getApkInfo(AppUtils.getAppPath()).toString()),
    -
    -                CommonItemClick(R.string.app_install) {
    -                    if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    -                        ToastUtils.showShort(R.string.app_install_tips)
    +            CommonItemTitle("isAppRoot", AppUtils.isAppRoot().toString()),
    +            CommonItemTitle("isAppDebug", AppUtils.isAppDebug().toString()),
    +            CommonItemTitle("isAppSystem", AppUtils.isAppSystem().toString()),
    +            CommonItemTitle(
    +                "isAppForeground",
    +                AppUtils.isAppForeground(AppUtils.getAppPackageName()).toString()
    +            ),
    +            CommonItemTitle(
    +                "isAppRunning",
    +                AppUtils.isAppRunning(AppUtils.getAppPackageName()).toString()
    +            ),
    +            CommonItemImage("getAppIcon") {
    +                it.setImageDrawable(AppUtils.getAppIcon())
    +            },
    +            CommonItemTitle("getAppPackageName", AppUtils.getAppPackageName()),
    +            CommonItemTitle("getAppName", AppUtils.getAppName()),
    +            CommonItemTitle("getAppPath", AppUtils.getAppPath()),
    +            CommonItemTitle("getAppVersionName", AppUtils.getAppVersionName()),
    +            CommonItemTitle("getAppVersionCode", AppUtils.getAppVersionCode().toString()),
    +            CommonItemTitle("getAppMinSdkVersion", AppUtils.getAppMinSdkVersion().toString()),
    +            CommonItemTitle("getAppTargetSdkVersion", AppUtils.getAppTargetSdkVersion().toString()),
    +            CommonItemTitle("getAppSignaturesSHA1", AppUtils.getAppSignaturesSHA1().toString()),
    +            CommonItemTitle("getAppSignaturesSHA256", AppUtils.getAppSignaturesSHA256().toString()),
    +            CommonItemTitle("getAppSignaturesMD5", AppUtils.getAppSignaturesMD5().toString()),
    +            CommonItemTitle("getAppUid", AppUtils.getAppUid().toString()),
    +            CommonItemTitle("getApkInfo", AppUtils.getApkInfo(AppUtils.getAppPath()).toString()),
    +
    +            CommonItemClick(R.string.app_install) {
    +                if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    +                    ToastUtils.showShort(R.string.app_install_tips)
    +                } else {
    +                    if (!FileUtils.isFileExists(Config.TEST_APK_PATH)) {
    +                        ReleaseInstallApkTask(listener).execute()
                         } else {
    -                        if (!FileUtils.isFileExists(Config.TEST_APK_PATH)) {
    -                            ReleaseInstallApkTask(listener).execute()
    -                        } else {
    -                            listener.onReleased()
    -                        }
    +                        listener.onReleased()
                         }
    -                },
    -                CommonItemClick(R.string.app_uninstall) {
    -                    if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    -                        AppUtils.uninstallApp(Config.TEST_PKG)
    -                    } else {
    -                        ToastUtils.showShort(R.string.app_uninstall_tips)
    -                    }
    -                },
    -                CommonItemClick(R.string.app_launch) {
    -                    AppUtils.launchApp(this.packageName)
    -                },
    -                CommonItemClick(R.string.app_relaunch) {
    -                    AppUtils.relaunchApp()
    -                },
    -                CommonItemClick(R.string.app_launch_details_settings, true) {
    -                    AppUtils.launchAppDetailsSettings()
    -                },
    -                CommonItemClick(R.string.app_exit) {
    -                    AppUtils.exitApp()
                     }
    +            },
    +            CommonItemClick(R.string.app_uninstall) {
    +                if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    +                    AppUtils.uninstallApp(Config.TEST_PKG)
    +                } else {
    +                    ToastUtils.showShort(R.string.app_uninstall_tips)
    +                }
    +            },
    +            CommonItemClick(R.string.app_launch) {
    +                AppUtils.launchApp(this.packageName)
    +            },
    +            CommonItemClick(R.string.app_relaunch) {
    +                AppUtils.relaunchApp()
    +            },
    +            CommonItemClick(R.string.app_launch_details_settings, true) {
    +                AppUtils.launchAppDetailsSettings()
    +            },
    +            CommonItemClick(R.string.app_exit) {
    +                AppUtils.exitApp()
    +            }
             )
         }
     
    @@ -130,7 +141,8 @@ class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener {
         }
     }
     
    -class ReleaseInstallApkTask(private val mListener: OnReleasedListener) : ThreadUtils.SimpleTask() {
    +class ReleaseInstallApkTask(private val mListener: OnReleasedListener) :
    +    ThreadUtils.SimpleTask() {
     
         override fun doInBackground() {
             ResourceUtils.copyFileFromAssets("test_install", Config.TEST_APK_PATH)
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index f7523783f9..641e96ff1d 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -72,6 +72,8 @@ getAppName                        : 获取 App 名称
     getAppPath                        : 获取 App 路径
     getAppVersionName                 : 获取 App 版本号
     getAppVersionCode                 : 获取 App 版本码
    +getAppMinSdkVersion               : 获取 App 支持最低系统版本号
    +getAppTargetSdkVersion            : 获取 App 目标系统版本号
     getAppSignatures                  : 获取 App 签名
     getAppSignaturesSHA1              : 获取应用签名的的 SHA1 值
     getAppSignaturesSHA256            : 获取应用签名的的 SHA256 值
    diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
    index 9d2025ebb0..b88bcbcfbd 100644
    --- a/lib/utilcode/README.md
    +++ b/lib/utilcode/README.md
    @@ -72,6 +72,8 @@ getAppName
     getAppPath
     getAppVersionName
     getAppVersionCode
    +getAppMinSdkVersion
    +getAppTargetSdkVersion
     getAppSignatures
     getAppSignaturesSHA1
     getAppSignaturesSHA256
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    index 8f03e1cf1f..3a07653fb0 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    @@ -14,13 +14,13 @@
     import android.os.Build;
     import android.util.Log;
     
    +import androidx.annotation.NonNull;
    +import androidx.annotation.Nullable;
    +
     import java.io.File;
     import java.util.ArrayList;
     import java.util.List;
     
    -import androidx.annotation.NonNull;
    -import androidx.annotation.Nullable;
    -
     /**
      * 
      *     author: Blankj
    @@ -541,6 +541,65 @@ public static int getAppVersionCode(final String packageName) {
             }
         }
     
    +    /**
    +     * Return the application's minimum sdk version code.
    +     *
    +     * @return the application's minimum sdk version code
    +     */
    +    public static int getAppMinSdkVersion() {
    +        return getAppMinSdkVersion(Utils.getApp().getPackageName());
    +    }
    +
    +    /**
    +     * Return the application's minimum sdk version code.
    +     *
    +     * @param packageName The name of the package.
    +     * @return the application's minimum sdk version code
    +     */
    +    public static int getAppMinSdkVersion(final String packageName) {
    +        if (UtilsBridge.isSpace(packageName)) return -1;
    +        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N) return -1;
    +        try {
    +            PackageManager pm = Utils.getApp().getPackageManager();
    +            PackageInfo pi = pm.getPackageInfo(packageName, 0);
    +            if (null == pi) return -1;
    +            ApplicationInfo ai = pi.applicationInfo;
    +            return null == ai ? -1 : ai.minSdkVersion;
    +        } catch (PackageManager.NameNotFoundException e) {
    +            e.printStackTrace();
    +            return -1;
    +        }
    +    }
    +
    +    /**
    +     * Return the application's target sdk version code.
    +     *
    +     * @return the application's target sdk version code
    +     */
    +    public static int getAppTargetSdkVersion() {
    +        return getAppTargetSdkVersion(Utils.getApp().getPackageName());
    +    }
    +
    +    /**
    +     * Return the application's target sdk version code.
    +     *
    +     * @param packageName The name of the package.
    +     * @return the application's target sdk version code
    +     */
    +    public static int getAppTargetSdkVersion(final String packageName) {
    +        if (UtilsBridge.isSpace(packageName)) return -1;
    +        try {
    +            PackageManager pm = Utils.getApp().getPackageManager();
    +            PackageInfo pi = pm.getPackageInfo(packageName, 0);
    +            if (null == pi) return -1;
    +            ApplicationInfo ai = pi.applicationInfo;
    +            return null == ai ? -1 : ai.targetSdkVersion;
    +        } catch (PackageManager.NameNotFoundException e) {
    +            e.printStackTrace();
    +            return -1;
    +        }
    +    }
    +
         /**
          * Return the application's signature.
          *
    @@ -721,6 +780,8 @@ private static List getAppSignaturesHash(final String packageName, final
          * 
  • path of package
  • *
  • version name
  • *
  • version code
  • + *
  • minimum sdk version code
  • + *
  • target sdk version code
  • *
  • is system
  • * * @@ -740,6 +801,8 @@ public static AppInfo getAppInfo() { *
  • path of package
  • *
  • version name
  • *
  • version code
  • + *
  • minimum sdk version code
  • + *
  • target sdk version code
  • *
  • is system
  • * * @@ -829,13 +892,18 @@ private static AppInfo getBean(final PackageManager pm, final PackageInfo pi) { String packageName = pi.packageName; ApplicationInfo ai = pi.applicationInfo; if (ai == null) { - return new AppInfo(packageName, "", null, "", versionName, versionCode, false); + return new AppInfo(packageName, "", null, "", versionName, versionCode, -1, -1, false); } String name = ai.loadLabel(pm).toString(); Drawable icon = ai.loadIcon(pm); String packagePath = ai.sourceDir; + int minSdkVersion = -1; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + minSdkVersion = ai.minSdkVersion; + } + int targetSdkVersion = ai.targetSdkVersion; boolean isSystem = (ApplicationInfo.FLAG_SYSTEM & ai.flags) != 0; - return new AppInfo(packageName, name, icon, packagePath, versionName, versionCode, isSystem); + return new AppInfo(packageName, name, icon, packagePath, versionName, versionCode, minSdkVersion, targetSdkVersion, isSystem); } /** @@ -843,13 +911,15 @@ private static AppInfo getBean(final PackageManager pm, final PackageInfo pi) { */ public static class AppInfo { - private String packageName; - private String name; + private String packageName; + private String name; private Drawable icon; - private String packagePath; - private String versionName; - private int versionCode; - private boolean isSystem; + private String packagePath; + private String versionName; + private int versionCode; + private int minSdkVersion; + private int targetSdkVersion; + private boolean isSystem; public Drawable getIcon() { return icon; @@ -907,14 +977,31 @@ public void setVersionName(final String versionName) { this.versionName = versionName; } - public AppInfo(String packageName, String name, Drawable icon, String packagePath, - String versionName, int versionCode, boolean isSystem) { + public int getMinSdkVersion() { + return minSdkVersion; + } + + public void setMinSdkVersion(int minSdkVersion) { + this.minSdkVersion = minSdkVersion; + } + + public int getTargetSdkVersion() { + return targetSdkVersion; + } + + public void setTargetSdkVersion(int targetSdkVersion) { + this.targetSdkVersion = targetSdkVersion; + } + + public AppInfo(String packageName, String name, Drawable icon, String packagePath, String versionName, int versionCode, int minSdkVersion, int targetSdkVersion, boolean isSystem) { this.setName(name); this.setIcon(icon); this.setPackageName(packageName); this.setPackagePath(packagePath); this.setVersionName(versionName); this.setVersionCode(versionCode); + this.setMinSdkVersion(minSdkVersion); + this.setTargetSdkVersion(targetSdkVersion); this.setSystem(isSystem); } @@ -928,6 +1015,8 @@ public String toString() { "\n app path: " + getPackagePath() + "\n app v name: " + getVersionName() + "\n app v code: " + getVersionCode() + + "\n app v min: " + getMinSdkVersion() + + "\n app v target: " + getTargetSdkVersion() + "\n is system: " + isSystem() + "\n}"; } diff --git a/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java b/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java index 76351e4b10..54895ee71f 100644 --- a/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java +++ b/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java @@ -5,10 +5,12 @@ import android.view.View.OnClickListener; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; + import com.blankj.utilcode.util.AppUtils; import com.blankj.utilcode.util.ClickUtils; import com.blankj.utilcode.util.StringUtils; -import com.blankj.utildebug.DebugUtils; import com.blankj.utildebug.R; import com.blankj.utildebug.base.rv.BaseItem; import com.blankj.utildebug.base.rv.ItemViewHolder; @@ -16,9 +18,6 @@ import java.util.ArrayList; import java.util.List; -import androidx.annotation.NonNull; -import androidx.annotation.StringRes; - /** *
      *     author: blankj
    @@ -29,8 +28,8 @@
      */
     public class AppInfoItem extends BaseItem {
     
    -    private String          mTitle;
    -    private String          mContent;
    +    private String mTitle;
    +    private String mContent;
         private OnClickListener mListener;
     
         private TextView titleTv;
    @@ -71,9 +70,9 @@ public static List getAppInfoItems() {
             appInfoItems.add(new AppInfoItem(R.string.du_app_info_version_name, AppUtils.getAppVersionName()));
             appInfoItems.add(new AppInfoItem(R.string.du_app_info_version_code, String.valueOf(AppUtils.getAppVersionCode())));
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    -            appInfoItems.add(new AppInfoItem(R.string.du_app_info_min_sdk_version, String.valueOf(DebugUtils.getApp().getApplicationInfo().minSdkVersion)));
    +            appInfoItems.add(new AppInfoItem(R.string.du_app_info_min_sdk_version, String.valueOf(AppUtils.getAppMinSdkVersion())));
             }
    -        appInfoItems.add(new AppInfoItem(R.string.du_app_info_target_sdk_version, String.valueOf(DebugUtils.getApp().getApplicationInfo().targetSdkVersion)));
    +        appInfoItems.add(new AppInfoItem(R.string.du_app_info_target_sdk_version, String.valueOf(AppUtils.getAppTargetSdkVersion())));
             appInfoItems.add(new AppInfoItem(R.string.du_app_info_open_app_info_page, "", new OnClickListener() {
                 @Override
                 public void onClick(View v) {
    
    From 718f281a3da9d4e4e6c3298faf4da9e4563e7d50 Mon Sep 17 00:00:00 2001
    From: taochen <935612713@qq.com>
    Date: Mon, 18 Jul 2022 16:12:33 +0800
    Subject: [PATCH 112/122] =?UTF-8?q?[M]=20BarUtils=E6=B7=BB=E5=8A=A0transpa?=
     =?UTF-8?q?rentNavBar=E5=AE=9E=E7=8E=B0?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     .../pkg/feature/bar/nav/BarNavActivity.kt     | 42 +++++++++++++------
     .../com/blankj/utilcode/util/BarUtils.java    | 32 +++++++++++---
     2 files changed, 57 insertions(+), 17 deletions(-)
    
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    index 1b3032974f..48a738ecd7 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt
    @@ -12,7 +12,6 @@ import com.blankj.utilcode.pkg.R
     import com.blankj.utilcode.util.BarUtils
     import com.blankj.utilcode.util.CollectionUtils
     import com.blankj.utilcode.util.ColorUtils
    -import com.blankj.utilcode.util.Utils
     
     /**
      * ```
    @@ -41,24 +40,43 @@ class BarNavActivity : CommonActivity() {
                 add(CommonItemTitle("isSupportNavBar", BarUtils.isSupportNavBar().toString()))
                 if (BarUtils.isSupportNavBar()) {
                     add(CommonItemSwitch(
    -                        R.string.bar_nav_visibility,
    -                        { BarUtils.isNavBarVisible(this@BarNavActivity) },
    -                        { BarUtils.setNavBarVisibility(this@BarNavActivity, it) }
    +                    R.string.bar_nav_visibility,
    +                    { BarUtils.isNavBarVisible(this@BarNavActivity) },
    +                    { BarUtils.setNavBarVisibility(this@BarNavActivity, it) }
                     ))
     
                     add(CommonItemSwitch(
    -                        R.string.bar_nav_light_mode,
    -                        { BarUtils.isNavBarLightMode(this@BarNavActivity) },
    -                        { BarUtils.setNavBarLightMode(this@BarNavActivity, it) }
    +                    R.string.bar_nav_light_mode,
    +                    { BarUtils.isNavBarLightMode(this@BarNavActivity) },
    +                    { BarUtils.setNavBarLightMode(this@BarNavActivity, it) }
                     ))
     
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    -                    add(CommonItemClick("getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}").setOnItemClickListener() { _, item, _ ->
    -                        BarUtils.setNavBarColor(this@BarNavActivity, ColorUtils.getRandomColor())
    -                        itemsView.updateItems(bindItems())
    -                        item.title = "getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}"
    -                    })
    +                    add(
    +                        CommonItemClick(
    +                            "getNavBarColor: ${
    +                                ColorUtils.int2ArgbString(
    +                                    BarUtils.getNavBarColor(
    +                                        this@BarNavActivity
    +                                    )
    +                                )
    +                            }"
    +                        ).setOnItemClickListener() { _, item, _ ->
    +                            BarUtils.setNavBarColor(
    +                                this@BarNavActivity,
    +                                ColorUtils.getRandomColor()
    +                            )
    +                            itemsView.updateItems(bindItems())
    +                            item.title = "getNavBarColor: ${
    +                                ColorUtils.int2ArgbString(
    +                                    BarUtils.getNavBarColor(this@BarNavActivity)
    +                                )
    +                            }"
    +                        })
                     }
    +                add(CommonItemClick("transparentNavBar").setOnItemClickListener() { _, item, _ ->
    +                    BarUtils.transparentNavBar(this@BarNavActivity)
    +                })
                 }
             }
         }
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    index af9dbc4fcd..ece4f7faba 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    @@ -1,5 +1,7 @@
     package com.blankj.utilcode.util;
     
    +import static android.Manifest.permission.EXPAND_STATUS_BAR;
    +
     import android.annotation.SuppressLint;
     import android.app.Activity;
     import android.content.Context;
    @@ -19,15 +21,13 @@
     import android.view.Window;
     import android.view.WindowManager;
     
    -import java.lang.reflect.Method;
    -
     import androidx.annotation.ColorInt;
     import androidx.annotation.NonNull;
     import androidx.annotation.RequiresApi;
     import androidx.annotation.RequiresPermission;
     import androidx.drawerlayout.widget.DrawerLayout;
     
    -import static android.Manifest.permission.EXPAND_STATUS_BAR;
    +import java.lang.reflect.Method;
     
     /**
      * 
    @@ -44,8 +44,8 @@ public final class BarUtils {
         ///////////////////////////////////////////////////////////////////////////
     
         private static final String TAG_STATUS_BAR = "TAG_STATUS_BAR";
    -    private static final String TAG_OFFSET     = "TAG_OFFSET";
    -    private static final int    KEY_OFFSET     = -123;
    +    private static final String TAG_OFFSET = "TAG_OFFSET";
    +    private static final int KEY_OFFSET = -123;
     
         private BarUtils() {
             throw new UnsupportedOperationException("u can't instantiate me...");
    @@ -715,4 +715,26 @@ public static boolean isNavBarLightMode(@NonNull final Window window) {
             }
             return false;
         }
    +
    +    public static void transparentNavBar(@NonNull final Activity activity) {
    +        transparentNavBar(activity.getWindow());
    +    }
    +
    +    public static void transparentNavBar(@NonNull final Window window) {
    +        if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) return;
    +        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    +            window.setNavigationBarContrastEnforced(false);
    +        }
    +        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    +            window.setNavigationBarColor(Color.TRANSPARENT);
    +        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    +            if ((window.getAttributes().flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) == 0) {
    +                window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    +            }
    +        }
    +        View decorView = window.getDecorView();
    +        int vis = decorView.getSystemUiVisibility();
    +        int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
    +        decorView.setSystemUiVisibility(vis | option);
    +    }
     }
    
    From afaea3eb6b29d24c18cfbcb4a103310fd380b16e Mon Sep 17 00:00:00 2001
    From: Justson 
    Date: Wed, 8 Jun 2022 10:55:22 +0800
    Subject: [PATCH 113/122] Update README-CN.md
    
    ---
     lib/utilcode/README-CN.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index 0e4e93f3a0..260cabac24 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -6,7 +6,7 @@ Gradle:
     implementation 'com.blankj:utilcodex:1.31.0'
     
     // Not in maintenance
    -implementation 'com.blankj:utilcode:1.30.6'
    +implementation 'com.blankj:utilcode:1.30.7'
     ```
     
     
    
    From 555cca99df44edc2025db0a3cbe9dc1b4b65db31 Mon Sep 17 00:00:00 2001
    From: sth0409 <97033765@qq.com>
    Date: Wed, 25 May 2022 11:18:02 +0800
    Subject: [PATCH 114/122] fix bug
    
    ---
     lib/utilcode/src/main/res/xml/util_code_provider_paths.xml | 7 ++++++-
     1 file changed, 6 insertions(+), 1 deletion(-)
    
    diff --git a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml
    index ed731a2299..b88716480c 100644
    --- a/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml
    +++ b/lib/utilcode/src/main/res/xml/util_code_provider_paths.xml
    @@ -23,4 +23,9 @@
         
    -
    \ No newline at end of file
    +      
    +    
    +
    
    From 862088e4b85a0621f184f6ecea71367d05f9ba72 Mon Sep 17 00:00:00 2001
    From: Absinthe 
    Date: Sat, 11 Dec 2021 11:59:28 +0800
    Subject: [PATCH 115/122] Explicitly specify `android:exported` to make
     compatible with Android 12.
    
    ---
     lib/utilcode/src/main/AndroidManifest.xml | 2 ++
     1 file changed, 2 insertions(+)
    
    diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml
    index fc5b75e0e3..d45dd57787 100644
    --- a/lib/utilcode/src/main/AndroidManifest.xml
    +++ b/lib/utilcode/src/main/AndroidManifest.xml
    @@ -5,12 +5,14 @@
     
             
     
             
    Date: Mon, 18 Jul 2022 17:02:24 +0800
    Subject: [PATCH 116/122] =?UTF-8?q?[M]=20=E4=BF=AE=E6=94=B9BarUtils?=
     =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=88=97=E8=A1=A8=E5=8F=8A=E6=8F=8F=E8=BF=B0?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     lib/utilcode/README-CN.md | 1 +
     lib/utilcode/README.md    | 1 +
     2 files changed, 2 insertions(+)
    
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index 260cabac24..a6ab4b3d09 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -141,6 +141,7 @@ getNavBarColor                       : 获取导航栏颜色
     isSupportNavBar                      : 判断是否支持导航栏
     setNavBarLightMode                   : 设置导航栏是否为浅色模式
     isNavBarLightMode                    : 判断导航栏是否为浅色模式
    +transparentNavBar                    : 透明导航栏
     ```
     
     * ### 亮度相关 -> [BrightnessUtils.java][brightness.java] -> [Demo][brightness.demo]
    diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
    index cdabfba45a..9d2025ebb0 100644
    --- a/lib/utilcode/README.md
    +++ b/lib/utilcode/README.md
    @@ -140,6 +140,7 @@ getNavBarColor
     isSupportNavBar
     setNavBarLightMode
     isNavBarLightMode
    +transparentNavBar
     ```
     
     * ### About Brightness -> [BrightnessUtils.java][brightness.java] -> [Demo][brightness.demo]
    
    From 62bf1646bf43427de4f30ff0653a3dfe6da90634 Mon Sep 17 00:00:00 2001
    From: taochen <935612713@qq.com>
    Date: Tue, 19 Jul 2022 12:00:46 +0800
    Subject: [PATCH 117/122] =?UTF-8?q?[F]=20TargetSdkVersion=2030=20AppUtils.?=
     =?UTF-8?q?isAppInstalled=E8=BF=94=E5=9B=9E=E9=94=99=E8=AF=AF?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     lib/utilcode/src/main/AndroidManifest.xml | 9 +++++++++
     1 file changed, 9 insertions(+)
    
    diff --git a/lib/utilcode/src/main/AndroidManifest.xml b/lib/utilcode/src/main/AndroidManifest.xml
    index d45dd57787..ab497595d4 100644
    --- a/lib/utilcode/src/main/AndroidManifest.xml
    +++ b/lib/utilcode/src/main/AndroidManifest.xml
    @@ -1,6 +1,15 @@
     
     
    +    
    +        
    +            
    +        
    +        
    +            
    +        
    +    
    +
         
     
             
    Date: Tue, 19 Jul 2022 17:31:46 +0800
    Subject: [PATCH 118/122] =?UTF-8?q?[M]=20AppUtils=E5=A2=9E=E5=8A=A0getAppM?=
     =?UTF-8?q?inSdkVersion,=20getAppTargetSdkVersion=E6=94=AF=E6=8C=81?=
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    ---
     .../utilcode/pkg/feature/app/AppActivity.kt   | 108 ++++++++--------
     lib/utilcode/README-CN.md                     |   2 +
     lib/utilcode/README.md                        |   2 +
     .../com/blankj/utilcode/util/AppUtils.java    | 115 ++++++++++++++++--
     .../debug/tool/appInfo/AppInfoItem.java       |  15 ++-
     5 files changed, 173 insertions(+), 69 deletions(-)
    
    diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    index 175fa1bc3b..21eb351146 100644
    --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/app/AppActivity.kt
    @@ -54,7 +54,10 @@ class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener {
     
         override fun bindItems(): MutableList> {
             return CollectionUtils.newArrayList(
    -                CommonItemSwitch("registerAppStatusChangedListener", { isRegisterAppStatusChangedListener }, {
    +            CommonItemSwitch(
    +                "registerAppStatusChangedListener",
    +                { isRegisterAppStatusChangedListener },
    +                {
                         isRegisterAppStatusChangedListener = it
                         if (it) {
                             AppUtils.registerAppStatusChangedListener(this)
    @@ -62,55 +65,63 @@ class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener {
                             AppUtils.unregisterAppStatusChangedListener(this)
                         }
                     }),
    -                CommonItemTitle("isAppRoot", AppUtils.isAppRoot().toString()),
    -                CommonItemTitle("isAppDebug", AppUtils.isAppDebug().toString()),
    -                CommonItemTitle("isAppSystem", AppUtils.isAppSystem().toString()),
    -                CommonItemTitle("isAppForeground", AppUtils.isAppForeground(AppUtils.getAppPackageName()).toString()),
    -                CommonItemTitle("isAppRunning", AppUtils.isAppRunning(AppUtils.getAppPackageName()).toString()),
    -                CommonItemImage("getAppIcon") {
    -                    it.setImageDrawable(AppUtils.getAppIcon())
    -                },
    -                CommonItemTitle("getAppPackageName", AppUtils.getAppPackageName()),
    -                CommonItemTitle("getAppName", AppUtils.getAppName()),
    -                CommonItemTitle("getAppPath", AppUtils.getAppPath()),
    -                CommonItemTitle("getAppVersionName", AppUtils.getAppVersionName()),
    -                CommonItemTitle("getAppVersionCode", AppUtils.getAppVersionCode().toString()),
    -                CommonItemTitle("getAppSignaturesSHA1", AppUtils.getAppSignaturesSHA1().toString()),
    -                CommonItemTitle("getAppSignaturesSHA256", AppUtils.getAppSignaturesSHA256().toString()),
    -                CommonItemTitle("getAppSignaturesMD5", AppUtils.getAppSignaturesMD5().toString()),
    -                CommonItemTitle("getAppUid", AppUtils.getAppUid().toString()),
    -                CommonItemTitle("getApkInfo", AppUtils.getApkInfo(AppUtils.getAppPath()).toString()),
    -
    -                CommonItemClick(R.string.app_install) {
    -                    if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    -                        ToastUtils.showShort(R.string.app_install_tips)
    +            CommonItemTitle("isAppRoot", AppUtils.isAppRoot().toString()),
    +            CommonItemTitle("isAppDebug", AppUtils.isAppDebug().toString()),
    +            CommonItemTitle("isAppSystem", AppUtils.isAppSystem().toString()),
    +            CommonItemTitle(
    +                "isAppForeground",
    +                AppUtils.isAppForeground(AppUtils.getAppPackageName()).toString()
    +            ),
    +            CommonItemTitle(
    +                "isAppRunning",
    +                AppUtils.isAppRunning(AppUtils.getAppPackageName()).toString()
    +            ),
    +            CommonItemImage("getAppIcon") {
    +                it.setImageDrawable(AppUtils.getAppIcon())
    +            },
    +            CommonItemTitle("getAppPackageName", AppUtils.getAppPackageName()),
    +            CommonItemTitle("getAppName", AppUtils.getAppName()),
    +            CommonItemTitle("getAppPath", AppUtils.getAppPath()),
    +            CommonItemTitle("getAppVersionName", AppUtils.getAppVersionName()),
    +            CommonItemTitle("getAppVersionCode", AppUtils.getAppVersionCode().toString()),
    +            CommonItemTitle("getAppMinSdkVersion", AppUtils.getAppMinSdkVersion().toString()),
    +            CommonItemTitle("getAppTargetSdkVersion", AppUtils.getAppTargetSdkVersion().toString()),
    +            CommonItemTitle("getAppSignaturesSHA1", AppUtils.getAppSignaturesSHA1().toString()),
    +            CommonItemTitle("getAppSignaturesSHA256", AppUtils.getAppSignaturesSHA256().toString()),
    +            CommonItemTitle("getAppSignaturesMD5", AppUtils.getAppSignaturesMD5().toString()),
    +            CommonItemTitle("getAppUid", AppUtils.getAppUid().toString()),
    +            CommonItemTitle("getApkInfo", AppUtils.getApkInfo(AppUtils.getAppPath()).toString()),
    +
    +            CommonItemClick(R.string.app_install) {
    +                if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    +                    ToastUtils.showShort(R.string.app_install_tips)
    +                } else {
    +                    if (!FileUtils.isFileExists(Config.TEST_APK_PATH)) {
    +                        ReleaseInstallApkTask(listener).execute()
                         } else {
    -                        if (!FileUtils.isFileExists(Config.TEST_APK_PATH)) {
    -                            ReleaseInstallApkTask(listener).execute()
    -                        } else {
    -                            listener.onReleased()
    -                        }
    +                        listener.onReleased()
                         }
    -                },
    -                CommonItemClick(R.string.app_uninstall) {
    -                    if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    -                        AppUtils.uninstallApp(Config.TEST_PKG)
    -                    } else {
    -                        ToastUtils.showShort(R.string.app_uninstall_tips)
    -                    }
    -                },
    -                CommonItemClick(R.string.app_launch) {
    -                    AppUtils.launchApp(this.packageName)
    -                },
    -                CommonItemClick(R.string.app_relaunch) {
    -                    AppUtils.relaunchApp()
    -                },
    -                CommonItemClick(R.string.app_launch_details_settings, true) {
    -                    AppUtils.launchAppDetailsSettings()
    -                },
    -                CommonItemClick(R.string.app_exit) {
    -                    AppUtils.exitApp()
                     }
    +            },
    +            CommonItemClick(R.string.app_uninstall) {
    +                if (AppUtils.isAppInstalled(Config.TEST_PKG)) {
    +                    AppUtils.uninstallApp(Config.TEST_PKG)
    +                } else {
    +                    ToastUtils.showShort(R.string.app_uninstall_tips)
    +                }
    +            },
    +            CommonItemClick(R.string.app_launch) {
    +                AppUtils.launchApp(this.packageName)
    +            },
    +            CommonItemClick(R.string.app_relaunch) {
    +                AppUtils.relaunchApp()
    +            },
    +            CommonItemClick(R.string.app_launch_details_settings, true) {
    +                AppUtils.launchAppDetailsSettings()
    +            },
    +            CommonItemClick(R.string.app_exit) {
    +                AppUtils.exitApp()
    +            }
             )
         }
     
    @@ -130,7 +141,8 @@ class AppActivity : CommonActivity(), Utils.OnAppStatusChangedListener {
         }
     }
     
    -class ReleaseInstallApkTask(private val mListener: OnReleasedListener) : ThreadUtils.SimpleTask() {
    +class ReleaseInstallApkTask(private val mListener: OnReleasedListener) :
    +    ThreadUtils.SimpleTask() {
     
         override fun doInBackground() {
             ResourceUtils.copyFileFromAssets("test_install", Config.TEST_APK_PATH)
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index a6ab4b3d09..d8b9591fe7 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -72,6 +72,8 @@ getAppName                        : 获取 App 名称
     getAppPath                        : 获取 App 路径
     getAppVersionName                 : 获取 App 版本号
     getAppVersionCode                 : 获取 App 版本码
    +getAppMinSdkVersion               : 获取 App 支持最低系统版本号
    +getAppTargetSdkVersion            : 获取 App 目标系统版本号
     getAppSignatures                  : 获取 App 签名
     getAppSignaturesSHA1              : 获取应用签名的的 SHA1 值
     getAppSignaturesSHA256            : 获取应用签名的的 SHA256 值
    diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
    index 9d2025ebb0..b88bcbcfbd 100644
    --- a/lib/utilcode/README.md
    +++ b/lib/utilcode/README.md
    @@ -72,6 +72,8 @@ getAppName
     getAppPath
     getAppVersionName
     getAppVersionCode
    +getAppMinSdkVersion
    +getAppTargetSdkVersion
     getAppSignatures
     getAppSignaturesSHA1
     getAppSignaturesSHA256
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    index 8f03e1cf1f..3a07653fb0 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java
    @@ -14,13 +14,13 @@
     import android.os.Build;
     import android.util.Log;
     
    +import androidx.annotation.NonNull;
    +import androidx.annotation.Nullable;
    +
     import java.io.File;
     import java.util.ArrayList;
     import java.util.List;
     
    -import androidx.annotation.NonNull;
    -import androidx.annotation.Nullable;
    -
     /**
      * 
      *     author: Blankj
    @@ -541,6 +541,65 @@ public static int getAppVersionCode(final String packageName) {
             }
         }
     
    +    /**
    +     * Return the application's minimum sdk version code.
    +     *
    +     * @return the application's minimum sdk version code
    +     */
    +    public static int getAppMinSdkVersion() {
    +        return getAppMinSdkVersion(Utils.getApp().getPackageName());
    +    }
    +
    +    /**
    +     * Return the application's minimum sdk version code.
    +     *
    +     * @param packageName The name of the package.
    +     * @return the application's minimum sdk version code
    +     */
    +    public static int getAppMinSdkVersion(final String packageName) {
    +        if (UtilsBridge.isSpace(packageName)) return -1;
    +        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N) return -1;
    +        try {
    +            PackageManager pm = Utils.getApp().getPackageManager();
    +            PackageInfo pi = pm.getPackageInfo(packageName, 0);
    +            if (null == pi) return -1;
    +            ApplicationInfo ai = pi.applicationInfo;
    +            return null == ai ? -1 : ai.minSdkVersion;
    +        } catch (PackageManager.NameNotFoundException e) {
    +            e.printStackTrace();
    +            return -1;
    +        }
    +    }
    +
    +    /**
    +     * Return the application's target sdk version code.
    +     *
    +     * @return the application's target sdk version code
    +     */
    +    public static int getAppTargetSdkVersion() {
    +        return getAppTargetSdkVersion(Utils.getApp().getPackageName());
    +    }
    +
    +    /**
    +     * Return the application's target sdk version code.
    +     *
    +     * @param packageName The name of the package.
    +     * @return the application's target sdk version code
    +     */
    +    public static int getAppTargetSdkVersion(final String packageName) {
    +        if (UtilsBridge.isSpace(packageName)) return -1;
    +        try {
    +            PackageManager pm = Utils.getApp().getPackageManager();
    +            PackageInfo pi = pm.getPackageInfo(packageName, 0);
    +            if (null == pi) return -1;
    +            ApplicationInfo ai = pi.applicationInfo;
    +            return null == ai ? -1 : ai.targetSdkVersion;
    +        } catch (PackageManager.NameNotFoundException e) {
    +            e.printStackTrace();
    +            return -1;
    +        }
    +    }
    +
         /**
          * Return the application's signature.
          *
    @@ -721,6 +780,8 @@ private static List getAppSignaturesHash(final String packageName, final
          * 
  • path of package
  • *
  • version name
  • *
  • version code
  • + *
  • minimum sdk version code
  • + *
  • target sdk version code
  • *
  • is system
  • * * @@ -740,6 +801,8 @@ public static AppInfo getAppInfo() { *
  • path of package
  • *
  • version name
  • *
  • version code
  • + *
  • minimum sdk version code
  • + *
  • target sdk version code
  • *
  • is system
  • * * @@ -829,13 +892,18 @@ private static AppInfo getBean(final PackageManager pm, final PackageInfo pi) { String packageName = pi.packageName; ApplicationInfo ai = pi.applicationInfo; if (ai == null) { - return new AppInfo(packageName, "", null, "", versionName, versionCode, false); + return new AppInfo(packageName, "", null, "", versionName, versionCode, -1, -1, false); } String name = ai.loadLabel(pm).toString(); Drawable icon = ai.loadIcon(pm); String packagePath = ai.sourceDir; + int minSdkVersion = -1; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + minSdkVersion = ai.minSdkVersion; + } + int targetSdkVersion = ai.targetSdkVersion; boolean isSystem = (ApplicationInfo.FLAG_SYSTEM & ai.flags) != 0; - return new AppInfo(packageName, name, icon, packagePath, versionName, versionCode, isSystem); + return new AppInfo(packageName, name, icon, packagePath, versionName, versionCode, minSdkVersion, targetSdkVersion, isSystem); } /** @@ -843,13 +911,15 @@ private static AppInfo getBean(final PackageManager pm, final PackageInfo pi) { */ public static class AppInfo { - private String packageName; - private String name; + private String packageName; + private String name; private Drawable icon; - private String packagePath; - private String versionName; - private int versionCode; - private boolean isSystem; + private String packagePath; + private String versionName; + private int versionCode; + private int minSdkVersion; + private int targetSdkVersion; + private boolean isSystem; public Drawable getIcon() { return icon; @@ -907,14 +977,31 @@ public void setVersionName(final String versionName) { this.versionName = versionName; } - public AppInfo(String packageName, String name, Drawable icon, String packagePath, - String versionName, int versionCode, boolean isSystem) { + public int getMinSdkVersion() { + return minSdkVersion; + } + + public void setMinSdkVersion(int minSdkVersion) { + this.minSdkVersion = minSdkVersion; + } + + public int getTargetSdkVersion() { + return targetSdkVersion; + } + + public void setTargetSdkVersion(int targetSdkVersion) { + this.targetSdkVersion = targetSdkVersion; + } + + public AppInfo(String packageName, String name, Drawable icon, String packagePath, String versionName, int versionCode, int minSdkVersion, int targetSdkVersion, boolean isSystem) { this.setName(name); this.setIcon(icon); this.setPackageName(packageName); this.setPackagePath(packagePath); this.setVersionName(versionName); this.setVersionCode(versionCode); + this.setMinSdkVersion(minSdkVersion); + this.setTargetSdkVersion(targetSdkVersion); this.setSystem(isSystem); } @@ -928,6 +1015,8 @@ public String toString() { "\n app path: " + getPackagePath() + "\n app v name: " + getVersionName() + "\n app v code: " + getVersionCode() + + "\n app v min: " + getMinSdkVersion() + + "\n app v target: " + getTargetSdkVersion() + "\n is system: " + isSystem() + "\n}"; } diff --git a/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java b/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java index 76351e4b10..54895ee71f 100644 --- a/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java +++ b/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool/appInfo/AppInfoItem.java @@ -5,10 +5,12 @@ import android.view.View.OnClickListener; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; + import com.blankj.utilcode.util.AppUtils; import com.blankj.utilcode.util.ClickUtils; import com.blankj.utilcode.util.StringUtils; -import com.blankj.utildebug.DebugUtils; import com.blankj.utildebug.R; import com.blankj.utildebug.base.rv.BaseItem; import com.blankj.utildebug.base.rv.ItemViewHolder; @@ -16,9 +18,6 @@ import java.util.ArrayList; import java.util.List; -import androidx.annotation.NonNull; -import androidx.annotation.StringRes; - /** *
      *     author: blankj
    @@ -29,8 +28,8 @@
      */
     public class AppInfoItem extends BaseItem {
     
    -    private String          mTitle;
    -    private String          mContent;
    +    private String mTitle;
    +    private String mContent;
         private OnClickListener mListener;
     
         private TextView titleTv;
    @@ -71,9 +70,9 @@ public static List getAppInfoItems() {
             appInfoItems.add(new AppInfoItem(R.string.du_app_info_version_name, AppUtils.getAppVersionName()));
             appInfoItems.add(new AppInfoItem(R.string.du_app_info_version_code, String.valueOf(AppUtils.getAppVersionCode())));
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    -            appInfoItems.add(new AppInfoItem(R.string.du_app_info_min_sdk_version, String.valueOf(DebugUtils.getApp().getApplicationInfo().minSdkVersion)));
    +            appInfoItems.add(new AppInfoItem(R.string.du_app_info_min_sdk_version, String.valueOf(AppUtils.getAppMinSdkVersion())));
             }
    -        appInfoItems.add(new AppInfoItem(R.string.du_app_info_target_sdk_version, String.valueOf(DebugUtils.getApp().getApplicationInfo().targetSdkVersion)));
    +        appInfoItems.add(new AppInfoItem(R.string.du_app_info_target_sdk_version, String.valueOf(AppUtils.getAppTargetSdkVersion())));
             appInfoItems.add(new AppInfoItem(R.string.du_app_info_open_app_info_page, "", new OnClickListener() {
                 @Override
                 public void onClick(View v) {
    
    From 5f739314d9eadeb5cad7f0e6876d2606480fc1f5 Mon Sep 17 00:00:00 2001
    From: Blankj 
    Date: Sat, 15 Oct 2022 00:45:11 +0800
    Subject: [PATCH 119/122] fix: some bugs
    
    ---
     CHANGELOG.md                                  |  1 +
     buildSrc/src/main/groovy/Config.groovy        |  6 +--
     lib/utilcode/README-CN.md                     | 11 +++--
     lib/utilcode/README.md                        |  3 +-
     .../blankj/utilcode/util/ActivityUtils.java   |  9 ++--
     .../com/blankj/utilcode/util/BarUtils.java    |  4 +-
     .../com/blankj/utilcode/util/DeviceUtils.java | 46 +++++++++++++++++--
     module_config.json                            |  2 +-
     8 files changed, 63 insertions(+), 19 deletions(-)
    
    diff --git a/CHANGELOG.md b/CHANGELOG.md
    index c4bcc19c85..73e8145bf1 100644
    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -1,3 +1,4 @@
    +* `22/10/15` [add] Fix some issue. Publish v1.31.1
     * `21/12/06` [add] Publish v1.31.0
     * `21/05/13` [add] Support publish mavenCentral.
     * `21/02/22` [add] Fix ToastUtils rtl bug. Publish v1.30.6.
    diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy
    index 268ec666ce..9a8d69d659 100644
    --- a/buildSrc/src/main/groovy/Config.groovy
    +++ b/buildSrc/src/main/groovy/Config.groovy
    @@ -6,8 +6,8 @@ class Config {
         static compileSdkVersion = 29
         static minSdkVersion = 14
         static targetSdkVersion = 29
    -    static versionCode = 1_030_007
    -    static versionName = '1.31.0'// E.g. 1.9.72 => 1,009,072
    +    static versionCode = 1_031_001
    +    static versionName = '1.31.1'// E.g. 1.9.72 => 1,009,072
     
         // lib version
         static gradlePluginVersion = '4.1.0'
    @@ -34,7 +34,7 @@ class Config {
                 lib_base                   : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/base"),
                 lib_common                 : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/common"),
                 lib_subutil                : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/subutil"),
    -            lib_utilcode               : new ModuleConfig(isApply: true , useLocal: false, localPath: "./lib/utilcode", remotePath: "com.blankj:utilcodex:$Config.versionName"),
    +            lib_utilcode               : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utilcode", remotePath: "com.blankj:utilcodex:$Config.versionName"),
                 lib_utildebug              : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug"),
                 lib_utildebug_no_op        : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug-no-op"),
                 /*Don't delete this line*/
    diff --git a/lib/utilcode/README-CN.md b/lib/utilcode/README-CN.md
    index d8b9591fe7..6610b3be99 100644
    --- a/lib/utilcode/README-CN.md
    +++ b/lib/utilcode/README-CN.md
    @@ -3,7 +3,7 @@
     Gradle:
     ```groovy
     // if u use AndroidX, use the following
    -implementation 'com.blankj:utilcodex:1.31.0'
    +implementation 'com.blankj:utilcodex:1.31.1'
     
     // Not in maintenance
     implementation 'com.blankj:utilcode:1.30.7'
    @@ -1210,10 +1210,11 @@ removeListener: 移除消息监听器
     
     * ### URI 相关 -> [UriUtils.java][uri.java]
     ```
    -res2Uri  : res 转 uri
    -file2Uri : file 转 uri
    -uri2File : uri 转 file
    -uri2Bytes: uri 转 bytes
    +res2Uri            : res 转 uri
    +file2Uri           : file 转 uri
    +uri2File           : uri 转 file
    +uri2FileNoCacheCopy: uri 转 file 不拷贝缓存
    +uri2Bytes          : uri 转 bytes
     ```
     
     * ### UtilsTransActivity -> [UtilsTransActivity.java][trans.java]
    diff --git a/lib/utilcode/README.md b/lib/utilcode/README.md
    index b88bcbcfbd..570f58fc46 100644
    --- a/lib/utilcode/README.md
    +++ b/lib/utilcode/README.md
    @@ -3,7 +3,7 @@
     Gradle:
     ```groovy
     // if u use AndroidX, use the following
    -implementation 'com.blankj:utilcodex:1.31.0'
    +implementation 'com.blankj:utilcodex:1.31.1'
     
     // Not in maintenance
     implementation 'com.blankj:utilcode:1.30.6'
    @@ -1212,6 +1212,7 @@ removeListener
     res2Uri
     file2Uri
     uri2File
    +uri2FileNoCacheCopy
     uri2Bytes
     ```
     
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
    index 10858f75f4..056668652c 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java
    @@ -2013,10 +2013,11 @@ private static boolean startActivity(final Intent intent,
         }
     
         private static boolean isIntentAvailable(final Intent intent) {
    -        return Utils.getApp()
    -                .getPackageManager()
    -                .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
    -                .size() > 0;
    +//        return Utils.getApp()
    +//                .getPackageManager()
    +//                .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
    +//                .size() > 0;
    +        return true;
         }
     
         private static boolean startActivityForResult(final Activity activity,
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    index ece4f7faba..e8cacc5f0c 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java
    @@ -57,7 +57,7 @@ private BarUtils() {
          * @return the status bar's height
          */
         public static int getStatusBarHeight() {
    -        Resources resources = Utils.getApp().getResources();
    +        Resources resources = Resources.getSystem();
             int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
             return resources.getDimensionPixelSize(resourceId);
         }
    @@ -483,7 +483,7 @@ private static void invokePanels(final String methodName) {
          * @return the navigation bar's height
          */
         public static int getNavBarHeight() {
    -        Resources res = Utils.getApp().getResources();
    +        Resources res = Resources.getSystem();
             int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android");
             if (resourceId != 0) {
                 return res.getDimensionPixelSize(resourceId);
    diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
    index e6feb5fdaa..9cd01108e1 100644
    --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
    +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/DeviceUtils.java
    @@ -13,16 +13,19 @@
     import android.telephony.TelephonyManager;
     import android.text.TextUtils;
     
    -import androidx.annotation.RequiresApi;
    -import androidx.annotation.RequiresPermission;
    -
    +import java.io.BufferedReader;
     import java.io.File;
    +import java.io.IOException;
    +import java.io.InputStreamReader;
     import java.net.InetAddress;
     import java.net.NetworkInterface;
     import java.net.SocketException;
     import java.util.Enumeration;
     import java.util.UUID;
     
    +import androidx.annotation.RequiresApi;
    +import androidx.annotation.RequiresPermission;
    +
     import static android.Manifest.permission.ACCESS_WIFI_STATE;
     import static android.Manifest.permission.CHANGE_WIFI_STATE;
     import static android.Manifest.permission.INTERNET;
    @@ -382,6 +385,7 @@ public static boolean isEmulator() {
             intent.setAction(Intent.ACTION_DIAL);
             boolean checkDial = intent.resolveActivity(Utils.getApp().getPackageManager()) == null;
             if (checkDial) return true;
    +        if (isEmulatorByCpu()) return true;
     
     //        boolean checkDebuggerConnected = Debug.isDebuggerConnected();
     //        if (checkDebuggerConnected) return true;
    @@ -389,6 +393,42 @@ public static boolean isEmulator() {
             return false;
         }
     
    +    /**
    +     * Returns whether is emulator by check cpu info.
    +     * by function of {@link #readCpuInfo}, obtain the device cpu information.
    +     * then compare whether it is intel or amd (because intel and amd are generally not mobile phone cpu), to determine whether it is a real mobile phone
    +     *
    +     * @return {@code true}: yes
    {@code false}: no + */ + private static boolean isEmulatorByCpu() { + String cpuInfo = readCpuInfo(); + return cpuInfo.contains("intel") || cpuInfo.contains("amd"); + } + + /** + * Return Cpu information + * + * @return Cpu info + */ + private static String readCpuInfo() { + String result = ""; + try { + String[] args = {"/system/bin/cat", "/proc/cpuinfo"}; + ProcessBuilder cmd = new ProcessBuilder(args); + Process process = cmd.start(); + StringBuilder sb = new StringBuilder(); + String readLine; + BufferedReader responseReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf-8")); + while ((readLine = responseReader.readLine()) != null) { + sb.append(readLine); + } + responseReader.close(); + result = sb.toString().toLowerCase(); + } catch (IOException ignored) { + } + return result; + } + /** * Whether user has enabled development settings. * diff --git a/module_config.json b/module_config.json index 18f416382a..87233122b9 100644 --- a/module_config.json +++ b/module_config.json @@ -23,7 +23,7 @@ {"name": "lib_base", "isApply": true, "useLocal": true, "localPath": "./lib/base"}, {"name": "lib_common", "isApply": true, "useLocal": true, "localPath": "./lib/common"}, {"name": "lib_subutil", "isApply": true, "useLocal": true, "localPath": "./lib/subutil"}, - {"name": "lib_utilcode", "isApply": true, "useLocal": false, "localPath": "./lib/utilcode", "remotePath": "com.blankj:utilcodex:$Config.versionName"}, + {"name": "lib_utilcode", "isApply": true, "useLocal": true, "localPath": "./lib/utilcode", "remotePath": "com.blankj:utilcodex:$Config.versionName"}, {"name": "lib_utildebug", "isApply": true, "useLocal": true, "localPath": "./lib/utildebug"}, {"name": "lib_utildebug_no_op", "isApply": true, "useLocal": true, "localPath": "./lib/utildebug-no-op"} ] From 99be3102e1b5dce8bf051721008811eed3dae0a0 Mon Sep 17 00:00:00 2001 From: taochen <935612713@qq.com> Date: Fri, 21 Oct 2022 15:42:20 +0800 Subject: [PATCH 120/122] =?UTF-8?q?[F]=20=E9=83=A8=E5=88=86=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E5=B8=82=E5=9C=BA=E4=BB=A5=E6=89=80=E8=B0=93ActivityU?= =?UTF-8?q?tils=E9=9A=90=E7=A7=81=E5=90=88=E8=A7=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E6=8B=92=E7=BB=9D=E5=BA=94=E7=94=A8=E4=B8=8A=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blankj/utilcode/util/ActivityUtils.java | 57 +++++++++---------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java index 056668652c..d49ce6ff06 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java @@ -1997,29 +1997,22 @@ private static void startActivity(final Context context, private static boolean startActivity(final Intent intent, final Context context, final Bundle options) { - if (!isIntentAvailable(intent)) { - Log.e("ActivityUtils", "intent is unavailable"); - return false; - } if (!(context instanceof Activity)) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } - if (options != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - context.startActivity(intent, options); - } else { - context.startActivity(intent); + try { + if (options != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + context.startActivity(intent, options); + } else { + context.startActivity(intent); + } + } catch (Exception e) { + Log.e("ActivityUtils", "An exception occurred in startActivity, error message: " + e.getLocalizedMessage()); + return false; } return true; } - private static boolean isIntentAvailable(final Intent intent) { -// return Utils.getApp() -// .getPackageManager() -// .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY) -// .size() > 0; - return true; - } - private static boolean startActivityForResult(final Activity activity, final Bundle extras, final String pkg, @@ -2036,15 +2029,16 @@ private static boolean startActivityForResult(final Intent intent, final Activity activity, final int requestCode, @Nullable final Bundle options) { - if (!isIntentAvailable(intent)) { - Log.e("ActivityUtils", "intent is unavailable"); + try { + if (options != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + activity.startActivityForResult(intent, requestCode, options); + } else { + activity.startActivityForResult(intent, requestCode); + } + } catch (Exception e) { + Log.e("ActivityUtils", "An exception occurred in startActivityForResult, error message: " + e.getLocalizedMessage()); return false; } - if (options != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - activity.startActivityForResult(intent, requestCode, options); - } else { - activity.startActivityForResult(intent, requestCode); - } return true; } @@ -2079,18 +2073,19 @@ private static boolean startActivityForResult(final Intent intent, final Fragment fragment, final int requestCode, @Nullable final Bundle options) { - if (!isIntentAvailable(intent)) { - Log.e("ActivityUtils", "intent is unavailable"); - return false; - } if (fragment.getActivity() == null) { Log.e("ActivityUtils", "Fragment " + fragment + " not attached to Activity"); return false; } - if (options != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - fragment.startActivityForResult(intent, requestCode, options); - } else { - fragment.startActivityForResult(intent, requestCode); + try { + if (options != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + fragment.startActivityForResult(intent, requestCode, options); + } else { + fragment.startActivityForResult(intent, requestCode); + } + } catch (Exception e) { + Log.e("ActivityUtils", "An exception occurred in fragment.startActivityForResult, error message: " + e.getLocalizedMessage()); + return false; } return true; } From 19349b9998224f04385c37f643fc96e69faf33bd Mon Sep 17 00:00:00 2001 From: simple <383559698@qq.com> Date: Wed, 24 Apr 2024 19:22:35 +0800 Subject: [PATCH 121/122] update VibrateUtils --- buildSrc/src/main/groovy/Config.groovy | 2 +- .../pkg/feature/vibrate/VibrateActivity.kt | 22 +++++- .../pkg/src/main/res/values/strings.xml | 1 + .../blankj/utilcode/util/VibrateUtils.java | 79 +++++++++++++++++++ 4 files changed, 101 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/groovy/Config.groovy b/buildSrc/src/main/groovy/Config.groovy index a69b8907c7..9a8d69d659 100644 --- a/buildSrc/src/main/groovy/Config.groovy +++ b/buildSrc/src/main/groovy/Config.groovy @@ -34,7 +34,7 @@ class Config { lib_base : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/base"), lib_common : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/common"), lib_subutil : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/subutil"), - lib_utilcode : new ModuleConfig(isApply: true , useLocal: false, localPath: "./lib/utilcode", remotePath: "com.blankj:utilcodex:$Config.versionName"), + lib_utilcode : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utilcode", remotePath: "com.blankj:utilcodex:$Config.versionName"), lib_utildebug : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug"), lib_utildebug_no_op : new ModuleConfig(isApply: true , useLocal: true , localPath: "./lib/utildebug-no-op"), /*Don't delete this line*/ diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt index d2cd9bc147..ee88dab0fa 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt @@ -32,11 +32,22 @@ class VibrateActivity : CommonActivity() { override fun bindItems(): MutableList> { return CollectionUtils.newArrayList( - CommonItemClick(R.string.vibrate_1000ms) { VibrateUtils.vibrate(1000) }, + CommonItemClick(R.string.vibrate_1000ms) { + VibrateUtils.vibrate(1000) + }, CommonItemClick(R.string.vibrate_custom) { VibrateUtils.vibrate(longArrayOf(0, 1000, 1000, 2000, 2000, 1000), 1) }, - CommonItemClick(R.string.vibrate_cancel) { VibrateUtils.cancel() } + CommonItemClick(R.string.vibrate_background) { + backHome() + mContentView.postDelayed({ + VibrateUtils.vibrateCompat(longArrayOf(0, 1000, 1000, 2000, 2000, 1000), 1) +// VibrateUtils.vibrateCompat(1000) + }, 1000) + }, + CommonItemClick(R.string.vibrate_cancel) { + VibrateUtils.cancel() + } ) } @@ -44,4 +55,11 @@ class VibrateActivity : CommonActivity() { super.onDestroy() VibrateUtils.cancel() } + + private fun backHome() { + val intent = Intent(Intent.ACTION_MAIN).apply { + addCategory(Intent.CATEGORY_HOME) + } + startActivity(intent) + } } diff --git a/feature/utilcode/pkg/src/main/res/values/strings.xml b/feature/utilcode/pkg/src/main/res/values/strings.xml index ccec698647..551f9adbaf 100644 --- a/feature/utilcode/pkg/src/main/res/values/strings.xml +++ b/feature/utilcode/pkg/src/main/res/values/strings.xml @@ -366,5 +366,6 @@ Vibrate 1000ms Vibrate Custom + Vibrate Background Cancel diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java index 622d657817..8d2ab055e4 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java @@ -1,7 +1,11 @@ package com.blankj.utilcode.util; import android.content.Context; +import android.media.AudioAttributes; +import android.os.Build; import android.os.Vibrator; + +import androidx.annotation.RequiresApi; import androidx.annotation.RequiresPermission; import static android.Manifest.permission.VIBRATE; @@ -35,6 +39,39 @@ public static void vibrate(final long milliseconds) { vibrator.vibrate(milliseconds); } + /** + * Vibrate. + *

    Must hold {@code }

    + * + * @param milliseconds The number of milliseconds to vibrate. + * @param attributes {@link AudioAttributes} corresponding to the vibration. For example, + * specify {@link AudioAttributes#USAGE_ALARM} for alarm vibrations or + * {@link AudioAttributes#USAGE_NOTIFICATION_RINGTONE} for + * vibrations associated with incoming calls. + */ + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + @RequiresPermission(VIBRATE) + public static void vibrate(final long milliseconds, AudioAttributes attributes) { + Vibrator vibrator = getVibrator(); + if (vibrator == null) return; + vibrator.vibrate(milliseconds, attributes); + } + + /** + * VibrateCompat + *

    Must hold {@code }

    + * + * @param milliseconds he number of milliseconds to vibrate. + */ + @RequiresPermission(VIBRATE) + public static void vibrateCompat(final long milliseconds) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + vibrate(milliseconds, getAudioAttributes()); + } else { + vibrate(milliseconds); + } + } + /** * Vibrate. *

    Must hold {@code }

    @@ -49,6 +86,41 @@ public static void vibrate(final long[] pattern, final int repeat) { vibrator.vibrate(pattern, repeat); } + /** + * Vibrate. + *

    Must hold {@code }

    + * + * @param pattern An array of longs of times for which to turn the vibrator on or off. + * @param repeat The index into pattern at which to repeat, or -1 if you don't want to repeat. + * @param attributes {@link AudioAttributes} corresponding to the vibration. For example, + * specify {@link AudioAttributes#USAGE_ALARM} for alarm vibrations or + * {@link AudioAttributes#USAGE_NOTIFICATION_RINGTONE} for + * vibrations associated with incoming calls. + */ + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + @RequiresPermission(VIBRATE) + public static void vibrate(final long[] pattern, final int repeat, AudioAttributes attributes) { + Vibrator vibrator = getVibrator(); + if (vibrator == null) return; + vibrator.vibrate(pattern, repeat, attributes); + } + + /** + * VibrateCompat + *

    Must hold {@code }

    + * + * @param pattern An array of longs of times for which to turn the vibrator on or off. + * @param repeat The index into pattern at which to repeat, or -1 if you don't want to repeat. + */ + @RequiresPermission(VIBRATE) + public static void vibrateCompat(final long[] pattern, final int repeat) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + vibrate(pattern, repeat, getAudioAttributes()); + } else { + vibrate(pattern, repeat); + } + } + /** * Cancel vibrate. *

    Must hold {@code }

    @@ -66,4 +138,11 @@ private static Vibrator getVibrator() { } return vibrator; } + + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + private static AudioAttributes getAudioAttributes() { + return new AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_ALARM) + .build(); + } } From c7ebceb6675670080389472445d0bcb3c71f8bc9 Mon Sep 17 00:00:00 2001 From: simple <383559698@qq.com> Date: Thu, 25 Apr 2024 10:36:38 +0800 Subject: [PATCH 122/122] add VibrateUtils comment --- .../blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt | 1 + .../src/main/java/com/blankj/utilcode/util/VibrateUtils.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt index ee88dab0fa..5dc337bc5b 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/vibrate/VibrateActivity.kt @@ -41,6 +41,7 @@ class VibrateActivity : CommonActivity() { CommonItemClick(R.string.vibrate_background) { backHome() mContentView.postDelayed({ +// VibrateUtils.vibrate(1000) -- can not vibrate in background VibrateUtils.vibrateCompat(longArrayOf(0, 1000, 1000, 2000, 2000, 1000), 1) // VibrateUtils.vibrateCompat(1000) }, 1000) diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java index 8d2ab055e4..164810381a 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/VibrateUtils.java @@ -58,7 +58,7 @@ public static void vibrate(final long milliseconds, AudioAttributes attributes) } /** - * VibrateCompat + * VibrateCompat - Can vibrate in background *

    Must hold {@code }

    * * @param milliseconds he number of milliseconds to vibrate. @@ -106,7 +106,7 @@ public static void vibrate(final long[] pattern, final int repeat, AudioAttribut } /** - * VibrateCompat + * VibrateCompat - Can vibrate in background *

    Must hold {@code }

    * * @param pattern An array of longs of times for which to turn the vibrator on or off.

    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