diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8059920565ddd66683a95da81eb8f645d061f77c..22d3624b178e1f62632cdb5c234a9bd71b7ab3c9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+* `19/01/29` [fix] LogUtils format json when json not start with '{'. Publish v1.23.3.
+* `19/01/28` [fix] KeyboardUtils#fixSoftInputLeaks don't work on the device of HuaWei.
+* `19/01/26` [fix] NetworkUtils#getNetworkType.
* `19/01/25` [add] CloneUtils, PermissionUtils support request permission of WRITE_SETTINGS and DRAW_OVERLAYS. Publish v1.23.2.
* `19/01/24` [add] BrightnessUtils and FlashlightUtils.
* `19/01/23` [add] Modify the demo of utilcode use kotlin. Publish v1.23.1.
diff --git a/README-CN.md b/README-CN.md
index 97ab28c0b6e446712fa82b6301d8f98c390cac65..1054fb665e093e8fe086466f29b114e3e51b3568 100644
--- a/README-CN.md
+++ b/README-CN.md
@@ -41,7 +41,7 @@
[logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
-[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.2-brightgreen.svg
+[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.3-brightgreen.svg
[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 1a516c8b4ec26501bb0fa71dce60fec90cb1e18d..a9831c052c936500cc326dfe4498e51ae50aa3b6 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ If this project helps you a lot and you want to support the project's developmen
[logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
-[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.2-brightgreen.svg
+[aucSvg]: https://img.shields.io/badge/AndroidUtilCode-v1.23.3-brightgreen.svg
[auc]: https://github.com/Blankj/AndroidUtilCode
[apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg
diff --git a/config.gradle b/config.gradle
index be1aa3ae44d41fbd199b95a37e43a0a508dda493..34980b47590136637a7772199102b3a5971f0686 100644
--- a/config.gradle
+++ b/config.gradle
@@ -5,8 +5,8 @@ ext {
compileSdkVersion = 27
minSdkVersion = 14
targetSdkVersion = 27
- versionCode = 1_023_002
- versionName = '1.23.2'// E.g. 1.9.72 => 1,009,072
+ versionCode = 1_023_003
+ versionName = '1.23.3'// E.g. 1.9.72 => 1,009,072
bus = [
isDebug: false,
@@ -17,7 +17,7 @@ ext {
// lib version
kotlin_version = '1.3.0'
support_version = '27.1.1'
- leakcanary_version = '1.5.4'
+ leakcanary_version = '1.6.3'
dep = [
plugin : [
@@ -38,8 +38,9 @@ ext {
constraint : "com.android.support.constraint:constraint-layout: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",
+ 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",
adapt_screen : "com.blankj:adapt-screen:0.0.3",
diff --git a/config_app.gradle b/config_app.gradle
index d2e0ce27338f40ae8e191e8a3081c696163c606b..b85c8b5f8583af6e5e774579d94db545de90dc8b 100644
--- a/config_app.gradle
+++ b/config_app.gradle
@@ -40,6 +40,7 @@ android {
dependencies {
// LeakCanary
debugImplementation dep.leakcanary.android
+ debugImplementation dep.leakcanary.support_fragment
releaseImplementation dep.leakcanary.android_no_op
}
diff --git a/lib/base/build.gradle b/lib/base/build.gradle
index 1d1e325c490afbfc7423a44645584edc47f0ce92..66eb4f3c461e2567ddf7b58d0e84af339ff2f120 100644
--- a/lib/base/build.gradle
+++ b/lib/base/build.gradle
@@ -15,5 +15,5 @@ dependencies {
api dep.free_proguard
api 'com.r0adkll:slidableactivity:2.0.5'
compileOnly dep.leakcanary.android_no_op
-// api 'com.blankj:utilcode:1.23.2'
+// api 'com.blankj:utilcode:1.23.3'
}
\ No newline at end of file
diff --git a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt
index 79aad4dd1ef23ca491d15222ec96d3f1c42a7118..47e420e9bb2279ccc3423a8c778d1916f1f2f68f 100755
--- a/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt
+++ b/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationActivity.kt
@@ -51,7 +51,7 @@ class LocationActivity : BaseBackActivity() {
override fun getLocation(lastLatitude: String, lastLongitude: String, latitude: String,
longitude: String, country: String, locality: String, street: String) {
runOnUiThread {
- locationAboutTv.text = SpanUtils()
+ SpanUtils.with(locationAboutTv)
.appendLine("lastLatitude: $lastLatitude")
.appendLine("lastLongitude: $lastLongitude")
.appendLine("latitude: $latitude")
@@ -77,7 +77,7 @@ class LocationActivity : BaseBackActivity() {
override fun initView(savedInstanceState: Bundle?, contentView: View) {
setTitle(R.string.demo_location)
- locationAboutTv.text = SpanUtils()
+ SpanUtils.with(locationAboutTv)
.appendLine("lastLatitude: unknown")
.appendLine("lastLongitude: unknown")
.appendLine("latitude: unknown")
diff --git a/utilcode/README-CN.md b/utilcode/README-CN.md
index 7aae304a6cc3d67341452dff0f00fa1041d8ccc5..00db75076cea8dc2c78f0c91a8379a82ef6a762c 100644
--- a/utilcode/README-CN.md
+++ b/utilcode/README-CN.md
@@ -2,7 +2,7 @@
Gradle:
```groovy
-implementation 'com.blankj:utilcode:1.23.2'
+implementation 'com.blankj:utilcode:1.23.3'
```
diff --git a/utilcode/README-STATIC-BUS.md b/utilcode/README-STATIC-BUS.md
index 1934cc8c36c059886a2a69af7b11f535310e0ddd..d0605ef25b699df4a0c26f81e893a97438d2df9a 100644
--- a/utilcode/README-STATIC-BUS.md
+++ b/utilcode/README-STATIC-BUS.md
@@ -27,7 +27,7 @@ apply plugin: "com.blankj.bus"
给 base 模块添加 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode) 依赖:
```groovy
-api "com.blankj:utilcode:1.23.2"
+api "com.blankj:utilcode:1.23.3"
```
比如 module0 中存在的 `Module0Activity.java`,我们通常都是在它内部写一个 `start` 函数来启动它,现在我们给它添加 `@BusUtils.Subscribe` 注解,并给注解的 `name` 赋唯一值,要注意,函数务必要 `public static` 哦:
diff --git a/utilcode/README.md b/utilcode/README.md
index fae15db9a4250e5a458a37fa411695e6ddd3f8d8..c9a5635f530ccb7a34480370ea24788b61ca995d 100644
--- a/utilcode/README.md
+++ b/utilcode/README.md
@@ -2,7 +2,7 @@
Gradle:
```groovy
-implementation 'com.blankj:utilcode:1.23.2'
+implementation 'com.blankj:utilcode:1.23.3'
```
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 fe57b63dcce2572dc7b3e2fde2b8422ab9d5b49b..502f74e70aab7b2cbfb200c73333edf4a7d71c63 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
@@ -736,7 +736,7 @@ public final class AppUtils {
*
*
* @param packageName The name of the package.
- * @return 当前应用的 AppInfo
+ * @return the application's information
*/
public static AppInfo getAppInfo(final String packageName) {
try {
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 343404752a095ea174294bf6a99ce80c0971b1a7..68b7e3e9158ba2db6dbc3fbe7289bce68e945e1f 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
@@ -127,7 +127,6 @@ public final class BarUtils {
if (decorView != null) {
int vis = decorView.getSystemUiVisibility();
if (isLightMode) {
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
} else {
vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
@@ -137,6 +136,33 @@ public final class BarUtils {
}
}
+ /**
+ * Is the status bar light mode.
+ *
+ * @param activity The activity.
+ * @return {@code true}: yes
{@code false}: no
+ */
+ public static boolean isStatusBarLightMode(@NonNull final Activity activity) {
+ return isStatusBarLightMode(activity.getWindow());
+ }
+
+ /**
+ * Is the status bar light mode.
+ *
+ * @param window The window.
+ * @return {@code true}: yes
{@code false}: no
+ */
+ public static boolean isStatusBarLightMode(@NonNull final Window window) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ View decorView = window.getDecorView();
+ if (decorView != null) {
+ int vis = decorView.getSystemUiVisibility();
+ return (vis & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) != 0;
+ }
+ }
+ return false;
+ }
+
/**
* Add the top margin size equals status bar's height for view.
*
@@ -437,9 +463,10 @@ public final class BarUtils {
* @param activity The activity.
* @param isVisible True to set navigation bar visible, false otherwise.
*/
- @RequiresApi(api = Build.VERSION_CODES.KITKAT)
public static void setNavBarVisibility(@NonNull final Activity activity, boolean isVisible) {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
setNavBarVisibility(activity.getWindow(), isVisible);
+
}
/**
@@ -448,8 +475,8 @@ public final class BarUtils {
* @param window The window.
* @param isVisible True to set navigation bar visible, false otherwise.
*/
- @RequiresApi(Build.VERSION_CODES.KITKAT)
public static void setNavBarVisibility(@NonNull final Window window, boolean isVisible) {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
final ViewGroup decorView = (ViewGroup) window.getDecorView();
for (int i = 0, count = decorView.getChildCount(); i < count; i++) {
final View child = decorView.getChildAt(i);
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java
index 257f6d22a871bff549305032fa48022dab348d5f..6cb8ddbe45d9171cca0db0e5796f89c7bdd4ac18 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/ConvertUtils.java
@@ -1,6 +1,7 @@
package com.blankj.utilcode.util;
import android.annotation.SuppressLint;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
@@ -578,7 +579,7 @@ public final class ConvertUtils {
* @return value of px
*/
public static int dp2px(final float dpValue) {
- final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
+ final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
@@ -589,7 +590,7 @@ public final class ConvertUtils {
* @return value of dp
*/
public static int px2dp(final float pxValue) {
- final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
+ final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
@@ -600,7 +601,7 @@ public final class ConvertUtils {
* @return value of px
*/
public static int sp2px(final float spValue) {
- final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
+ final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
@@ -611,7 +612,7 @@ public final class ConvertUtils {
* @return value of sp
*/
public static int px2sp(final float pxValue) {
- final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
+ final float fontScale = Resources.getSystem().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java
index 1a6236b9075d1ce0f7794df2ce14212b4e4b231a..55ac8803d18bd3672aede66c6cccd84811eac6f3 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java
@@ -211,10 +211,15 @@ public final class JsonUtils {
public static String formatJson(final String json, final int indentSpaces) {
try {
- if (json.startsWith("{")) {
- return new JSONObject(json).toString(indentSpaces);
- } else if (json.startsWith("[")) {
- return new JSONArray(json).toString(indentSpaces);
+ for (int i = 0, len = json.length(); i < len; i++) {
+ char c = json.charAt(i);
+ if (c == '{') {
+ return new JSONObject(json).toString(indentSpaces);
+ } else if (c == '[') {
+ return new JSONArray(json).toString(indentSpaces);
+ } else if (!Character.isWhitespace(c)) {
+ return json;
+ }
}
} catch (JSONException e) {
e.printStackTrace();
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 52a61eda768842b11d02f370adca6d093df8330e..03f81e7f225911bffac9b81b223959b5ff5c5a4b 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
@@ -259,17 +259,17 @@ public final class KeyboardUtils {
* Fix the leaks of soft input.
*
Call the function in {@link Activity#onDestroy()}.
*
- * @param context The context.
+ * @param activity The activity.
*/
- public static void fixSoftInputLeaks(final Context context) {
- if (context == null) return;
+ public static void fixSoftInputLeaks(final Activity activity) {
+ if (activity == null) return;
InputMethodManager imm =
(InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
- String[] strArr = new String[]{"mCurRootView", "mServedView", "mNextServedView", "mLastSrvView"};
- for (int i = 0; i < 4; i++) {
+ if (imm == null) return;
+ String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"};
+ for (String leakView : leakViews) {
try {
- //noinspection ConstantConditions
- Field declaredField = imm.getClass().getDeclaredField(strArr[i]);
+ Field declaredField = InputMethodManager.class.getDeclaredField(leakView);
if (declaredField == null) continue;
if (!declaredField.isAccessible()) {
declaredField.setAccessible(true);
@@ -277,10 +277,8 @@ public final class KeyboardUtils {
Object obj = declaredField.get(imm);
if (!(obj instanceof View)) continue;
View view = (View) obj;
- if (view.getContext() == context) {
+ if (view.getRootView() == activity.getWindow().getDecorView().getRootView()) {
declaredField.set(imm, null);
- } else {
- return;
}
} catch (Throwable th) {
th.printStackTrace();
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 6e801ba2652781a66e75e5bc7ee88c011d8ded7b..66c4cb280b1c51ddf3168dae063cf168d562b8ab 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
@@ -626,7 +626,7 @@ public final class LogUtils {
private String mFilePrefix = "util";// The file prefix of log.
private boolean mLogSwitch = true; // The switch of log.
private boolean mLog2ConsoleSwitch = true; // The logcat's switch of log.
- private String mGlobalTag = null; // The global tag 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.
@@ -744,22 +744,83 @@ public final class LogUtils {
return this;
}
+ public String getDefaultDir() {
+ return mDefaultDir;
+ }
+
+ public String getDir() {
+ return mDir == null ? mDefaultDir : mDir;
+ }
+
+ public String getFilePrefix() {
+ return mFilePrefix;
+ }
+
+ public boolean isLogSwitch() {
+ return mLogSwitch;
+ }
+
+ public boolean isLog2ConsoleSwitch() {
+ return mLog2ConsoleSwitch;
+ }
+
+ public String getGlobalTag() {
+ if (isSpace(mGlobalTag)) return "null";
+ return mGlobalTag;
+ }
+
+ public boolean isLogHeadSwitch() {
+ return mLogHeadSwitch;
+ }
+
+ public boolean isLog2FileSwitch() {
+ return mLog2FileSwitch;
+ }
+
+ public boolean isLogBorderSwitch() {
+ return mLogBorderSwitch;
+ }
+
+ public boolean isSingleTagSwitch() {
+ return mSingleTagSwitch;
+ }
+
+ public char getConsoleFilter() {
+ return T[mConsoleFilter - V];
+ }
+
+ public char getFileFilter() {
+ return T[mFileFilter - V];
+ }
+
+ public int getStackDeep() {
+ return mStackDeep;
+ }
+
+ public int getStackOffset() {
+ return mStackOffset;
+ }
+
+ public int getSaveDays() {
+ return mSaveDays;
+ }
+
@Override
public String toString() {
- return "switch: " + mLogSwitch
- + LINE_SEP + "console: " + mLog2ConsoleSwitch
- + LINE_SEP + "tag: " + (mTagIsSpace ? "null" : mGlobalTag)
- + LINE_SEP + "head: " + mLogHeadSwitch
- + LINE_SEP + "file: " + mLog2FileSwitch
- + LINE_SEP + "dir: " + (mDir == null ? mDefaultDir : mDir)
- + LINE_SEP + "filePrefix: " + mFilePrefix
- + LINE_SEP + "border: " + mLogBorderSwitch
- + LINE_SEP + "singleTag: " + mSingleTagSwitch
- + LINE_SEP + "consoleFilter: " + T[mConsoleFilter - V]
- + LINE_SEP + "fileFilter: " + T[mFileFilter - V]
- + LINE_SEP + "stackDeep: " + mStackDeep
- + LINE_SEP + "stackOffset: " + mStackOffset
- + LINE_SEP + "saveDays: " + mSaveDays
+ return "switch: " + isLogSwitch()
+ + LINE_SEP + "console: " + isLog2ConsoleSwitch()
+ + LINE_SEP + "tag: " + getGlobalTag()
+ + LINE_SEP + "head: " + isLogHeadSwitch()
+ + LINE_SEP + "file: " + isLog2FileSwitch()
+ + LINE_SEP + "dir: " + getDir()
+ + LINE_SEP + "filePrefix: " + getFilePrefix()
+ + LINE_SEP + "border: " + isLogBorderSwitch()
+ + LINE_SEP + "singleTag: " + 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;
}
}
@@ -969,10 +1030,15 @@ public final class LogUtils {
private static String formatJson(String json) {
try {
- if (json.startsWith("{")) {
- json = new JSONObject(json).toString(2);
- } else if (json.startsWith("[")) {
- json = new JSONArray(json).toString(2);
+ for (int i = 0, len = json.length(); i < len; i++) {
+ char c = json.charAt(i);
+ if (c == '{') {
+ return new JSONObject(json).toString(2);
+ } else if (c == '[') {
+ return new JSONArray(json).toString(2);
+ } else if (!Character.isWhitespace(c)) {
+ return json;
+ }
}
} catch (JSONException e) {
e.printStackTrace();
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 23eb3b3f00021021dd6411ca91add8b6deff0e60..f281d777c27dc39cff94dbf0de686bdfa2d78ef8 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
@@ -134,13 +134,13 @@ public final class NetworkUtils {
return tm.isDataEnabled();
}
@SuppressLint("PrivateApi")
- Method getMobileDataEnabledMethod = tm.getClass().getDeclaredMethod("getDataEnabled");
+ Method getMobileDataEnabledMethod =
+ tm.getClass().getDeclaredMethod("getDataEnabled");
if (null != getMobileDataEnabledMethod) {
return (boolean) getMobileDataEnabledMethod.invoke(tm);
}
-
} catch (Exception e) {
- e.printStackTrace();
+ Log.e("NetworkUtils", "getMobileDataEnabled: ", e);
}
return false;
}
@@ -151,21 +151,28 @@ public final class NetworkUtils {
* {@code }
*
* @param enabled True to enabled, false otherwise.
+ * @return {@code true}: success
{@code false}: fail
*/
@RequiresPermission(MODIFY_PHONE_STATE)
- public static void setMobileDataEnabled(final boolean enabled) {
+ public static boolean setMobileDataEnabled(final boolean enabled) {
try {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
- if (tm == null) return;
- Method setMobileDataEnabledMethod =
+ if (tm == null) return false;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ tm.setDataEnabled(enabled);
+ return false;
+ }
+ Method setDataEnabledMethod =
tm.getClass().getDeclaredMethod("setDataEnabled", boolean.class);
- if (null != setMobileDataEnabledMethod) {
- setMobileDataEnabledMethod.invoke(tm, enabled);
+ if (null != setDataEnabledMethod) {
+ setDataEnabledMethod.invoke(tm, enabled);
+ return true;
}
} catch (Exception e) {
- e.printStackTrace();
+ Log.e("NetworkUtils", "setMobileDataEnabled: ", e);
}
+ return false;
}
/**
@@ -281,24 +288,22 @@ public final class NetworkUtils {
*/
@RequiresPermission(ACCESS_NETWORK_STATE)
public static NetworkType getNetworkType() {
- NetworkType netType = NetworkType.NETWORK_NO;
+ if (isEthernet()) {
+ return NetworkType.NETWORK_ETHERNET;
+ }
NetworkInfo info = getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
- if (isEthernet()) {
- netType = NetworkType.NETWORK_ETHERNET;
- } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {
- netType = NetworkType.NETWORK_WIFI;
+ if (info.getType() == ConnectivityManager.TYPE_WIFI) {
+ return NetworkType.NETWORK_WIFI;
} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
switch (info.getSubtype()) {
-
case TelephonyManager.NETWORK_TYPE_GSM:
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
- netType = NetworkType.NETWORK_2G;
- break;
+ return NetworkType.NETWORK_2G;
case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
@@ -310,30 +315,23 @@ public final class NetworkUtils {
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
- netType = NetworkType.NETWORK_3G;
- break;
+ return NetworkType.NETWORK_3G;
case TelephonyManager.NETWORK_TYPE_IWLAN:
case TelephonyManager.NETWORK_TYPE_LTE:
- netType = NetworkType.NETWORK_4G;
- break;
- default:
+ return NetworkType.NETWORK_4G;
+ default:
String subtypeName = info.getSubtypeName();
if (subtypeName.equalsIgnoreCase("TD-SCDMA")
|| subtypeName.equalsIgnoreCase("WCDMA")
|| subtypeName.equalsIgnoreCase("CDMA2000")) {
- netType = NetworkType.NETWORK_3G;
- } else {
- netType = NetworkType.NETWORK_UNKNOWN;
+ return NetworkType.NETWORK_3G;
}
- break;
}
- } else {
- netType = NetworkType.NETWORK_UNKNOWN;
}
}
- return netType;
+ return NetworkType.NETWORK_UNKNOWN;
}
/**
@@ -344,18 +342,15 @@ public final class NetworkUtils {
* @return {@code true}: yes
{@code false}: no
*/
@RequiresPermission(ACCESS_NETWORK_STATE)
- public static boolean isEthernet() {
- final ConnectivityManager connectivityManager = (ConnectivityManager) Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE);
- final NetworkInfo ethernet = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
- if (ethernet != null) {
- NetworkInfo.State state = ethernet.getState();
- if (null != state) {
- if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {
- return true;
- }
- }
- }
- return false;
+ private static boolean isEthernet() {
+ final ConnectivityManager cm =
+ (ConnectivityManager) Utils.getApp().getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (cm == null) return false;
+ final NetworkInfo info = cm.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
+ if (info == null) return false;
+ NetworkInfo.State state = info.getState();
+ if (null == state) return false;
+ return state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING;
}
@RequiresPermission(ACCESS_NETWORK_STATE)
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 319aeee2a4c1ade6f6409cee4a072cc94d181d04..99068781a40b53b97ca39a65ccb70a9565b75ef9 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
@@ -284,7 +284,7 @@ public final class PhoneUtils {
str += "SimSerialNumber = " + tm.getSimSerialNumber() + "\n";
str += "SimState = " + tm.getSimState() + "\n";
str += "SubscriberId(IMSI) = " + tm.getSubscriberId() + "\n";
- str += "VoiceMailNumber = " + tm.getVoiceMailNumber() + "\n";
+ str += "VoiceMailNumber = " + tm.getVoiceMailNumber();
return str;
}
diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java
index 4a496ca9bde8119ef63266b4e5825a546d5515e9..5ef9047e4d23ec160ffa63c99be906e46d6cfec2 100644
--- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java
+++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/SizeUtils.java
@@ -75,7 +75,7 @@ public final class SizeUtils {
* metrics depending on its unit.
*/
public static float applyDimension(final float value, final int unit) {
- DisplayMetrics metrics = Utils.getApp().getResources().getDisplayMetrics();
+ DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
switch (unit) {
case TypedValue.COMPLEX_UNIT_PX:
return value;
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 f5277eb9e9cba442caacb312dd01ed2b7fce24e0..a72c91f6d5a3ee3375b34b9145623b38a92bef05 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
@@ -335,15 +335,15 @@ public final class Utils {
return null;
}
- private static void fixSoftInputLeaks(final Context context) {
- if (context == null) return;
+ private static void fixSoftInputLeaks(final Activity activity) {
+ if (activity == null) return;
InputMethodManager imm =
(InputMethodManager) Utils.getApp().getSystemService(Context.INPUT_METHOD_SERVICE);
- String[] strArr = new String[]{"mCurRootView", "mServedView", "mNextServedView", "mLastSrvView"};
- for (int i = 0; i < 4; i++) {
+ if (imm == null) return;
+ String[] leakViews = new String[]{"mLastSrvView", "mCurRootView", "mServedView", "mNextServedView"};
+ for (String leakView : leakViews) {
try {
- //noinspection ConstantConditions
- Field declaredField = imm.getClass().getDeclaredField(strArr[i]);
+ Field declaredField = InputMethodManager.class.getDeclaredField(leakView);
if (declaredField == null) continue;
if (!declaredField.isAccessible()) {
declaredField.setAccessible(true);
@@ -351,10 +351,8 @@ public final class Utils {
Object obj = declaredField.get(imm);
if (!(obj instanceof View)) continue;
View view = (View) obj;
- if (view.getContext() == context) {
+ if (view.getRootView() == activity.getWindow().getDecorView().getRootView()) {
declaredField.set(imm, null);
- } else {
- return;
}
} catch (Throwable th) {
th.printStackTrace();
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java
index 1677925160fddf69bbf3df83ba52e6aa4ed3d84c..fd23058816ff1256213a897f9159938eb6374904 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/CloneUtilsTest.java
@@ -35,7 +35,9 @@ public class CloneUtilsTest {
@Override
public String toString() {
- return "{\"code\":" + code + ",\"message\":" + message + ",\"data\":" + data + "}";
+ return "{\"code\":" + primitive2String(code) +
+ ",\"message\":" + primitive2String(message) +
+ ",\"data\":" + primitive2String(data) + "}";
}
}
@@ -51,7 +53,15 @@ public class CloneUtilsTest {
@Override
public String toString() {
- return "{\"name\":" + name + ",\"gender\":" + gender + ",\"address\":" + address + "}";
+ return "{\"name\":" + primitive2String(name) +
+ ",\"gender\":" + primitive2String(gender) +
+ ",\"address\":" + primitive2String(address) + "}";
}
}
+
+ private static String primitive2String(final Object obj) {
+ if (obj == null) return "null";
+ if (obj instanceof CharSequence) return "\"" + obj.toString() + "\"";
+ return obj.toString();
+ }
}
\ No newline at end of file
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java
index 7abc42fcb793863790d6e53b7718b128f62fdf3c..e24cf4df0a993dcfd1bba6acdee72d8628bcc7e2 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java
@@ -16,7 +16,7 @@ import java.util.Map;
*/
public class LogUtilsTest extends BaseTest {
- private static final String JSON = "{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css\" },{ \"name\":\"JSON format\" , \"site\":\"http://tools.w3cschool.cn/code/JSON\" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe\" }]}";
+ private static final String JSON = "\r\n{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css\" },{ \"name\":\"JSON format\" , \"site\":\"http://tools.w3cschool.cn/code/JSON\" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe\" }]}";
private static final String XML = "Jack HerringtonPHP HacksO'ReillyJack HerringtonPodcasting HacksO'Reilly";
private static final int[] ONE_D_ARRAY = new int[]{1, 2, 3};
private static final int[][] TWO_D_ARRAY = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
@@ -166,10 +166,6 @@ public class LogUtilsTest extends BaseTest {
LogUtils.d((Object) TWO_D_ARRAY);
LogUtils.d(LIST);
LogUtils.d(MAP);
- Object o = GsonUtils.fromJson(GsonUtils.toJson(LIST), GsonUtils.getListType(String.class));
- System.out.println(o);
-
-
}
static class Person {
@@ -193,5 +189,18 @@ public class LogUtilsTest extends BaseTest {
private static boolean equals(final Object o1, final Object o2) {
return o1 == o2 || (o1 != null && o1.equals(o2));
}
+
+ @Override
+ public String toString() {
+ return "{\"name\":" + primitive2String(name) +
+ ",\"gender\":" + primitive2String(gender) +
+ ",\"address\":" + primitive2String(address) + "}";
+ }
+ }
+
+ private static String primitive2String(final Object obj) {
+ if (obj == null) return "null";
+ if (obj instanceof CharSequence) return "\"" + obj.toString() + "\"";
+ return obj.toString();
}
}
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 895eb1b99403e7c4d4011e697d8fb93a3d80a7ca..6e29a7bfa5f8349cca1a4fce59f5364fbeabb109 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
@@ -54,7 +54,6 @@ class ActivityActivity : BaseBackActivity() {
override fun initView(savedInstanceState: Bundle?, contentView: View) {
-
setTitle(R.string.demo_activity)
activityClzBtn.setOnClickListener(this)
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 5e04389cb0f1e76c48172b4eb901790f006329f3..4d9725e42c0aeac7abc10e3b6f396facc1a703b6 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
@@ -34,6 +34,7 @@ class SubActivityActivity : BaseBackActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View) {
+ setTitle(R.string.demo_activity)
contentView.setBackgroundColor(ColorUtils.getRandomColor(false))
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt
index 3e831f58a7b8e0036c3a9396f5960eaf558badcc..d66c637c59282b0ec5b87bd678b43eb04ddb6e4d 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/adaptScreen/AdaptScreenActivity.kt
@@ -24,12 +24,20 @@ class AdaptScreenActivity : BaseBackActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View) {
- adaptScreenAdaptWidthBtn.setOnClickListener { WidthActivity.start(this) }
- adaptScreenAdaptHeightBtn.setOnClickListener { HeightActivity.start(this) }
- adaptScreenCloseAdaptBtn.setOnClickListener { CloseAdaptActivity.start(this) }
+ setTitle(R.string.demo_adapt_screen)
+
+ adaptScreenAdaptWidthBtn.setOnClickListener(this)
+ adaptScreenAdaptHeightBtn.setOnClickListener(this)
+ adaptScreenCloseAdaptBtn.setOnClickListener(this)
}
override fun doBusiness() {}
- override fun onWidgetClick(view: View) {}
+ override fun onWidgetClick(view: View) {
+ when (view.id) {
+ R.id.adaptScreenAdaptWidthBtn -> WidthActivity.start(this)
+ R.id.adaptScreenAdaptHeightBtn -> HeightActivity.start(this)
+ R.id.adaptScreenCloseAdaptBtn -> CloseAdaptActivity.start(this)
+ }
+ }
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt
index 8f9b170e0011a70de859f78600e819b1366a9e08..d5515ea86bc0d7b2e07c1eece2d9ad75227663d1 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarNavActivity.kt
@@ -9,6 +9,7 @@ import android.view.View
import com.blankj.lib.base.BaseBackActivity
import com.blankj.utilcode.pkg.R
import com.blankj.utilcode.util.BarUtils
+import com.blankj.utilcode.util.ColorUtils
import com.blankj.utilcode.util.SpanUtils
import kotlinx.android.synthetic.main.activity_bar_nav.*
@@ -38,13 +39,18 @@ class BarNavActivity : BaseBackActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View) {
- (contentView.parent as View).setBackgroundColor(Color.GRAY)
setTitle(R.string.demo_bar)
- barNavShowBtn.setOnClickListener(this)
- barNavHideBtn.setOnClickListener(this)
- barNavSetColorBtn.setOnClickListener(this)
- updateAboutNav()
+ contentView.setBackgroundColor(Color.GRAY)
+ if (!BarUtils.isSupportNavBar()) {
+ barNavVisibilityCb.visibility = View.GONE
+ barNavSetColorBtn.visibility = View.GONE
+ } else {
+ barNavVisibilityCb.setOnCheckedChangeListener { buttonView, isChecked ->
+ BarUtils.setNavBarVisibility(this, isChecked)
+ }
+ barNavSetColorBtn.setOnClickListener(this)
+ }
}
override fun doBusiness() {
@@ -53,14 +59,8 @@ class BarNavActivity : BaseBackActivity() {
override fun onWidgetClick(view: View) {
when (view.id) {
- R.id.barNavShowBtn -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- BarUtils.setNavBarVisibility(this, true)
- }
- R.id.barNavHideBtn -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- BarUtils.setNavBarVisibility(this, false)
- }
R.id.barNavSetColorBtn -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- BarUtils.setNavBarColor(this, (Math.random() * 0xFFFFFFFF).toInt())
+ BarUtils.setNavBarColor(this, ColorUtils.getRandomColor())
}
}
updateAboutNav()
@@ -69,10 +69,9 @@ class BarNavActivity : BaseBackActivity() {
private fun updateAboutNav() {
SpanUtils.with(barNavAboutTv)
.appendLine("navHeight: " + BarUtils.getNavBarHeight())
- .appendLine("isNavBarVisible: " + BarUtils.isNavBarVisible(this))
.apply {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- appendLine("getNavBarColor: #" + Integer.toHexString(BarUtils.getNavBarColor(mActivity)))
+ appendLine("getNavBarColor: " + ColorUtils.int2ArgbString(BarUtils.getNavBarColor(mActivity)))
}
}
.append("isSupportNavBar: " + BarUtils.isSupportNavBar())
@@ -81,6 +80,7 @@ class BarNavActivity : BaseBackActivity() {
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
+ barNavVisibilityCb.isChecked = BarUtils.isNavBarVisible(this)
updateAboutNav()
}
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt
index 0bc90b22e54b5a4152ea97d3ff935fe930871848..4af36861e1a9344567a86113086d8494f97bb899 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/BarStatusActivity.kt
@@ -38,31 +38,35 @@ class BarStatusActivity : BaseBackActivity() {
override fun initView(savedInstanceState: Bundle?, contentView: View) {
setTitle(R.string.demo_bar)
- barStatusShowBtn.setOnClickListener(this)
- barStatusHideBtn.setOnClickListener(this)
- barStatusLightModeBtn.setOnClickListener(this)
- barStatusDarkModeBtn.setOnClickListener(this)
- updateAboutStatus()
+ barStatusVisibilityCb.isChecked = BarUtils.isStatusBarVisible(this)
+ barStatusVisibilityCb.setOnCheckedChangeListener { buttonView, isChecked ->
+ BarUtils.setStatusBarVisibility(this, isChecked)
+ }
+
+ barStatusLightModeCb.isChecked = BarUtils.isStatusBarLightMode(this)
+ barStatusLightModeCb.setOnCheckedChangeListener { buttonView, isChecked ->
+ BarUtils.setStatusBarLightMode(this, isChecked)
+ }
}
override fun doBusiness() {
}
+ override fun onResume() {
+ super.onResume()
+ updateAboutStatus()
+ }
+
override fun onWidgetClick(view: View) {
when (view.id) {
- R.id.barStatusShowBtn -> BarUtils.setStatusBarVisibility(this, true)
- R.id.barStatusHideBtn -> BarUtils.setStatusBarVisibility(this, false)
- R.id.barStatusLightModeBtn -> BarUtils.setStatusBarLightMode(this, true)
- R.id.barStatusDarkModeBtn -> BarUtils.setStatusBarLightMode(this, false)
}
updateAboutStatus()
}
private fun updateAboutStatus() {
- barStatusAboutTv.text = SpanUtils()
- .appendLine("statusHeight: " + BarUtils.getStatusBarHeight())
- .append("isStatusVisible: " + BarUtils.isStatusBarVisible(this))
+ SpanUtils.with(barStatusAboutTv)
+ .append("getStatusBarHeight: " + BarUtils.getStatusBarHeight())
.create()
}
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt
index d8e93eb005511bb32436a8377f00589f0f7d9960..4ebe23b48c5c76867a585e75bbecae04b7d02d95 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/brightness/BrightnessActivity.kt
@@ -25,8 +25,21 @@ class BrightnessActivity : BaseBackActivity() {
companion object {
fun start(context: Context) {
- val starter = Intent(context, BrightnessActivity::class.java)
- context.startActivity(starter)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ PermissionUtils.requestWriteSettings(object : PermissionUtils.SimpleCallback {
+ override fun onGranted() {
+ val starter = Intent(context, BrightnessActivity::class.java)
+ context.startActivity(starter)
+ }
+
+ override fun onDenied() {
+ start(context)
+ }
+ })
+ } else {
+ val starter = Intent(context, BrightnessActivity::class.java)
+ context.startActivity(starter)
+ }
}
}
@@ -69,6 +82,7 @@ class BrightnessActivity : BaseBackActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View) {
+ setTitle(R.string.demo_brightness)
brightnessChangeSb.progress = BrightnessUtils.getBrightness()
brightnessChangeSb.setOnSeekBarChangeListener(brightnessChangeListener)
@@ -79,19 +93,7 @@ class BrightnessActivity : BaseBackActivity() {
updateWindowBrightness()
brightnessSetAutoCb.setOnCheckedChangeListener { buttonView, isChecked ->
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- PermissionUtils.requestWriteSettings(object : PermissionUtils.SimpleCallback {
- override fun onGranted() {
- BrightnessUtils.setAutoBrightnessEnabled(isChecked)
- }
-
- override fun onDenied() {
-
- }
- })
- } else {
- BrightnessUtils.setAutoBrightnessEnabled(isChecked)
- }
+ BrightnessUtils.setAutoBrightnessEnabled(isChecked)
}
}
@@ -105,13 +107,13 @@ class BrightnessActivity : BaseBackActivity() {
private fun updateBrightness() {
SpanUtils.with(brightnessAboutTv)
- .append(BrightnessUtils.getBrightness().toString())
+ .append("getBrightness: " + BrightnessUtils.getBrightness())
.create()
}
private fun updateWindowBrightness() {
SpanUtils.with(brightnessWindowAboutTv)
- .append(BrightnessUtils.getWindowBrightness(window).toString())
+ .append("getWindowBrightness: " + BrightnessUtils.getWindowBrightness(window))
.create()
}
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt
index 737fec0d7420a88d08c58ec2172151c2425f5eb4..07c82c93e5f064841574742edc0e5f6ad7b134b7 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/flashlight/FlashlightActivity.kt
@@ -50,9 +50,11 @@ class FlashlightActivity : BaseBackActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View) {
- flashlightEnableCb.setOnCheckedChangeListener { buttonView, isChecked ->
+ setTitle(R.string.demo_flashlight)
+
+ flashlightStatusCb.isChecked = FlashlightUtils.isFlashlightOn()
+ flashlightStatusCb.setOnCheckedChangeListener { buttonView, isChecked ->
FlashlightUtils.setFlashlightStatus(isChecked)
- updateAboutFlashlight()
}
}
@@ -66,8 +68,7 @@ class FlashlightActivity : BaseBackActivity() {
private fun updateAboutFlashlight() {
SpanUtils.with(flashlightAboutTv)
- .appendLine("isFlashlightEnable: " + FlashlightUtils.isFlashlightEnable())
- .appendLine("isFlashlightOn: " + FlashlightUtils.isFlashlightOn())
+ .append("isFlashlightEnable: " + FlashlightUtils.isFlashlightEnable())
.create()
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt
index 4e002342bd12fc1c1b91d164b2ed7ce5d29d3d7f..5d28a97995a2f1435d4fb67facaaab484dff5b88 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/keyboard/KeyboardActivity.kt
@@ -67,34 +67,32 @@ class KeyboardActivity : BaseBackActivity() {
}
}
- // @Override
- // public boolean dispatchTouchEvent(MotionEvent ev) {
- // if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- // View v = getCurrentFocus();
- // if (isShouldHideKeyboard(v, ev)) {
- // InputMethodManager imm =
- // (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- // if (imm == null) return super.dispatchTouchEvent(ev);
- // imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
- // }
- // }
- // return super.dispatchTouchEvent(ev);
- // }
- //
- // // 根据 EditText 所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘
- // private boolean isShouldHideKeyboard(View v, MotionEvent event) {
- // if (v != null && (v instanceof EditText)) {
- // int[] l = {0, 0};
- // v.getLocationInWindow(l);
- // int left = l[0],
- // top = l[1],
- // bottom = top + v.getHeight(),
- // right = left + v.getWidth();
- // return !(event.getX() > left && event.getX() < right
- // && event.getY() > top && event.getY() < bottom);
- // }
- // return false;
- // }
+// override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
+// if (ev.action == MotionEvent.ACTION_DOWN) {
+// val v = currentFocus
+// if (isShouldHideKeyboard(v, ev)) {
+// val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+// ?: return super.dispatchTouchEvent(ev)
+// imm.hideSoftInputFromWindow(v.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
+// }
+// }
+// return super.dispatchTouchEvent(ev)
+// }
+//
+// // 根据 EditText 所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘
+// private fun isShouldHideKeyboard(v: View?, event: MotionEvent): Boolean {
+// if (v != null && v is EditText) {
+// val l = intArrayOf(0, 0)
+// v.getLocationInWindow(l)
+// val left = l[0]
+// val top = l[1]
+// val bottom = top + v.height
+// val right = left + v.width
+// return !(event.x > left && event.x < right
+// && event.y > top && event.y < bottom)
+// }
+// return false
+// }
override fun onDestroy() {
KeyboardUtils.unregisterSoftInputChangedListener(this)
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
index 9b311f9f2863e27a7790cd64edec80ae246afe11..a4b01cf30092c31a56cf5f4169cc876aca3c2454 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/log/LogActivity.kt
@@ -6,12 +6,14 @@ import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
+import android.widget.CompoundButton
import com.blankj.lib.base.BaseApplication
import com.blankj.lib.base.BaseBackActivity
import com.blankj.utilcode.pkg.R
import com.blankj.utilcode.util.AppUtils
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.PathUtils
+import com.blankj.utilcode.util.StringUtils
import kotlinx.android.synthetic.main.activity_log.*
import java.util.*
@@ -24,21 +26,11 @@ import java.util.*
* desc : demo about LogUtils
* ```
*/
-class LogActivity : BaseBackActivity() {
+class LogActivity : BaseBackActivity(),
+ CompoundButton.OnCheckedChangeListener {
companion object {
private const val TAG = "CMJ"
- private const val UPDATE_LOG = 0x01
- private const val UPDATE_CONSOLE = 0x01 shl 1
- private const val UPDATE_TAG = 0x01 shl 2
- private const val UPDATE_HEAD = 0x01 shl 3
- private const val UPDATE_FILE = 0x01 shl 4
- private const val UPDATE_DIR = 0x01 shl 5
- private const val UPDATE_BORDER = 0x01 shl 6
- private const val UPDATE_SINGLE = 0x01 shl 7
- private const val UPDATE_CONSOLE_FILTER = 0x01 shl 8
- private const val UPDATE_FILE_FILTER = 0x01 shl 9
-
private const val JSON = "{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css\" },{ \"name\":\"JSON format\" , \"site\":\"http://tools.w3cschool.cn/code/JSON\" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe\" }]}"
private const val XML = "Jack HerringtonPHP HacksO'ReillyJack HerringtonPodcasting HacksO'Reilly"
private val ONE_D_ARRAY = intArrayOf(1, 2, 3)
@@ -107,17 +99,6 @@ class LogActivity : BaseBackActivity() {
private val mConfig = LogUtils.getConfig()
- private var dir: String = ""
- private var globalTag = ""
- private var log = true
- private var console = true
- private var head = true
- private var file = false
- private var border = true
- private var single = true
- private var consoleFilter = LogUtils.V
- private var fileFilter = LogUtils.V
-
private val mRunnable = Runnable {
LogUtils.v("verbose")
LogUtils.d("debug")
@@ -138,16 +119,40 @@ class LogActivity : BaseBackActivity() {
override fun initView(savedInstanceState: Bundle?, contentView: View) {
setTitle(R.string.demo_log)
- logToggleLogBtn.setOnClickListener(this)
- logToggleConsoleBtn.setOnClickListener(this)
- logToggleTagBtn.setOnClickListener(this)
- logToggleHeadBtn.setOnClickListener(this)
- logToggleBorderBtn.setOnClickListener(this)
- logToggleSingleBtn.setOnClickListener(this)
- logToggleFileBtn.setOnClickListener(this)
- logToggleDirBtn.setOnClickListener(this)
- logToggleConsoleFilterBtn.setOnClickListener(this)
- logToggleFileFilterBtn.setOnClickListener(this)
+ logSwitchCb.isChecked = mConfig.isLogSwitch
+ logSwitchCb.setOnCheckedChangeListener(this)
+
+ log2ConsoleSwitchCb.isChecked = mConfig.isLog2ConsoleSwitch
+ log2ConsoleSwitchCb.setOnCheckedChangeListener(this)
+
+ logGlobalTagCb.isChecked = !StringUtils.isSpace(mConfig.globalTag)
+ logGlobalTagCb.setOnCheckedChangeListener(this)
+ logGlobalTagCb.text = String.format("Global Tag: %s", mConfig.globalTag)
+
+ logHeadSwitchCb.isChecked = mConfig.isLogHeadSwitch
+ logHeadSwitchCb.setOnCheckedChangeListener(this)
+
+ log2FileSwitchCb.isChecked = mConfig.isLog2FileSwitch
+ log2FileSwitchCb.setOnCheckedChangeListener(this)
+
+ logDirCb.isChecked = mConfig.dir != mConfig.defaultDir
+ logDirCb.setOnCheckedChangeListener(this)
+ logDirCb.text = String.format("Dir: %s", mConfig.dir)
+
+ logBorderSwitchCb.isChecked = mConfig.isLogBorderSwitch
+ logBorderSwitchCb.setOnCheckedChangeListener(this)
+
+ logBorderSwitchCb.isChecked = mConfig.isSingleTagSwitch
+ logSingleTagSwitchCb.setOnCheckedChangeListener(this)
+
+ logConsoleFilterCb.isChecked = mConfig.consoleFilter != 'V'
+ logConsoleFilterCb.setOnCheckedChangeListener(this)
+ logConsoleFilterCb.text = String.format("ConsoleFilter: %s", mConfig.consoleFilter)
+
+ logFileFilterCb.isChecked = mConfig.fileFilter != 'V'
+ logFileFilterCb.setOnCheckedChangeListener(this)
+ logFileFilterCb.text = String.format("FileFilter: %s", mConfig.fileFilter)
+
logNoTagBtn.setOnClickListener(this)
logWithTagBtn.setOnClickListener(this)
logInNewThreadBtn.setOnClickListener(this)
@@ -163,7 +168,7 @@ class LogActivity : BaseBackActivity() {
logIntentBtn.setOnClickListener(this)
logArrayListBtn.setOnClickListener(this)
logMapBtn.setOnClickListener(this)
- updateConfig(0)
+ updateAboutLog()
}
override fun doBusiness() {
@@ -172,16 +177,6 @@ class LogActivity : BaseBackActivity() {
override fun onWidgetClick(view: View) {
when (view.id) {
- R.id.logToggleLogBtn -> updateConfig(UPDATE_LOG)
- R.id.logToggleConsoleBtn -> updateConfig(UPDATE_CONSOLE)
- R.id.logToggleTagBtn -> updateConfig(UPDATE_TAG)
- R.id.logToggleHeadBtn -> updateConfig(UPDATE_HEAD)
- R.id.logToggleFileBtn -> updateConfig(UPDATE_FILE)
- R.id.logToggleDirBtn -> updateConfig(UPDATE_DIR)
- R.id.logToggleBorderBtn -> updateConfig(UPDATE_BORDER)
- R.id.logToggleSingleBtn -> updateConfig(UPDATE_SINGLE)
- R.id.logToggleConsoleFilterBtn -> updateConfig(UPDATE_CONSOLE_FILTER)
- R.id.logToggleFileFilterBtn -> updateConfig(UPDATE_FILE_FILTER)
R.id.logNoTagBtn -> {
LogUtils.v("verbose")
LogUtils.d("debug")
@@ -189,7 +184,6 @@ class LogActivity : BaseBackActivity() {
LogUtils.w("warn")
LogUtils.e("error")
LogUtils.a("assert")
-
}
R.id.logWithTagBtn -> {
LogUtils.vTag("customTag", "verbose")
@@ -198,12 +192,10 @@ class LogActivity : BaseBackActivity() {
LogUtils.wTag("customTag", "warn")
LogUtils.eTag("customTag", "error")
LogUtils.aTag("customTag", "assert")
-
}
R.id.logInNewThreadBtn -> {
val thread = Thread(mRunnable)
thread.start()
-
}
R.id.logNullBtn -> {
LogUtils.v(null)
@@ -212,7 +204,6 @@ class LogActivity : BaseBackActivity() {
LogUtils.w(null)
LogUtils.e(null)
LogUtils.a(null)
-
}
R.id.logManyParamsBtn -> {
LogUtils.v("verbose0", "verbose1")
@@ -227,7 +218,6 @@ class LogActivity : BaseBackActivity() {
LogUtils.eTag("customTag", "error0", "error1")
LogUtils.a("assert0", "assert1")
LogUtils.aTag("customTag", "assert0", "assert1")
-
}
R.id.logLongBtn -> LogUtils.d(LONG_STR)
R.id.logFileBtn -> for (i in 0..99) {
@@ -237,17 +227,14 @@ class LogActivity : BaseBackActivity() {
R.id.logJsonBtn -> {
LogUtils.json(JSON)
LogUtils.json(LogUtils.I, JSON)
-
}
R.id.logXmlBtn -> {
LogUtils.xml(XML)
LogUtils.xml(LogUtils.I, XML)
-
}
R.id.logArrayBtn -> {
LogUtils.e(ONE_D_ARRAY)
LogUtils.e(TWO_D_ARRAY)
-
}
R.id.logThrowableBtn -> LogUtils.e(THROWABLE)
R.id.logBundleBtn -> LogUtils.e(BUNDLE)
@@ -257,41 +244,44 @@ class LogActivity : BaseBackActivity() {
}
}
- private fun updateConfig(args: Int) {
- when (args) {
- UPDATE_LOG -> log = !log
- UPDATE_CONSOLE -> console = !console
- UPDATE_TAG -> globalTag = if (globalTag == TAG) "" else TAG
- UPDATE_HEAD -> head = !head
- UPDATE_FILE -> file = !file
- UPDATE_DIR -> dir =
- if (getDir().contains("test")) {
- ""
- } else {
- PathUtils.getInternalAppFilesPath() + System.getProperty("file.separator") + "test"
- }
- UPDATE_BORDER -> border = !border
- UPDATE_SINGLE -> single = !single
- UPDATE_CONSOLE_FILTER -> consoleFilter = if (consoleFilter == LogUtils.V) LogUtils.W else LogUtils.V
- UPDATE_FILE_FILTER -> fileFilter = if (fileFilter == LogUtils.V) LogUtils.I else LogUtils.V
+ override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
+ when (buttonView?.id) {
+ R.id.logSwitchCb -> mConfig.setLogSwitch(isChecked)
+ R.id.log2ConsoleSwitchCb -> mConfig.setConsoleSwitch(isChecked)
+ R.id.logGlobalTagCb -> {
+ if (isChecked) {
+ mConfig.setGlobalTag(TAG)
+ } else {
+ mConfig.setGlobalTag("")
+ }
+ logGlobalTagCb.text = String.format("Global Tag: %s", mConfig.globalTag)
+ }
+ R.id.logHeadSwitchCb -> mConfig.setLogHeadSwitch(isChecked)
+ R.id.log2FileSwitchCb -> mConfig.setLog2FileSwitch(isChecked)
+ R.id.logDirCb -> {
+ if (isChecked) {
+ mConfig.setDir("")
+ } else {
+ mConfig.setDir(PathUtils.getInternalAppFilesPath() + System.getProperty("file.separator") + "test")
+ }
+ logDirCb.text = String.format("Dir: %s", mConfig.dir)
+ }
+ R.id.logBorderSwitchCb -> mConfig.setBorderSwitch(isChecked)
+ R.id.logSingleTagSwitchCb -> mConfig.setSingleTagSwitch(isChecked)
+ R.id.logConsoleFilterCb -> {
+ mConfig.setConsoleFilter(if (isChecked) LogUtils.W else LogUtils.V)
+ logConsoleFilterCb.text = String.format("ConsoleFilter: %s", mConfig.consoleFilter)
+ }
+ R.id.logFileFilterCb -> {
+ mConfig.setFileFilter(if (isChecked) LogUtils.W else LogUtils.V)
+ logFileFilterCb.text = String.format("FileFilter: %s", mConfig.fileFilter)
+ }
}
- mConfig.setLogSwitch(log)
- .setConsoleSwitch(console)
- .setGlobalTag(globalTag)
- .setLogHeadSwitch(head)
- .setLog2FileSwitch(file)
- .setDir(dir)
- .setBorderSwitch(border)
- .setSingleTagSwitch(single)
- .setConsoleFilter(consoleFilter)
- .setFileFilter(fileFilter)
- logAboutTv.text = mConfig.toString()
+ updateAboutLog();
}
- private fun getDir(): String {
- return mConfig.toString()
- .split(System.getProperty("line.separator"))[5]
- .substring(5)
+ private fun updateAboutLog() {
+ logAboutTv.text = mConfig.toString()
}
override fun onDestroy() {
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
index 716aa57fb4118bc9efdd2e7ef86830e0bf155706..5d2f6dfb19a3c5bad15e8ebe50693348241da828 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/network/NetworkActivity.kt
@@ -7,6 +7,7 @@ import android.text.SpannableStringBuilder
import android.view.View
import com.blankj.lib.base.BaseBackActivity
import com.blankj.utilcode.pkg.R
+import com.blankj.utilcode.util.AppUtils
import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.SpanUtils
import com.blankj.utilcode.util.ThreadUtils
@@ -56,7 +57,28 @@ class NetworkActivity : BaseBackActivity() {
setTitle(R.string.demo_network)
networkOpenWirelessSettingsBtn.setOnClickListener(this)
- networkSetWifiEnabledBtn.setOnClickListener(this)
+
+ networkMobileDataEnabledCb.setOnClickListener(this)
+
+ if (AppUtils.isAppSystem()) {
+ networkMobileDataEnabledCb.setOnCheckedChangeListener { buttonView, isChecked ->
+ NetworkUtils.setMobileDataEnabled(isChecked)
+ updateAboutNetwork()
+ }
+ } else {
+ networkMobileDataEnabledCb.isEnabled = false
+ }
+
+ networkWifiEnabledCb.setOnCheckedChangeListener { buttonView, isChecked ->
+ NetworkUtils.setWifiEnabled(isChecked)
+ updateAboutNetwork()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ networkMobileDataEnabledCb.isChecked = NetworkUtils.getMobileDataEnabled()
+ networkWifiEnabledCb.isChecked = NetworkUtils.getWifiEnabled()
updateAboutNetwork()
}
@@ -67,8 +89,6 @@ class NetworkActivity : BaseBackActivity() {
override fun onWidgetClick(view: View) {
when (view.id) {
R.id.networkOpenWirelessSettingsBtn -> NetworkUtils.openWirelessSettings()
- R.id.btn_set_data_enabled -> NetworkUtils.setMobileDataEnabled(!NetworkUtils.getMobileDataEnabled())
- R.id.networkSetWifiEnabledBtn -> NetworkUtils.setWifiEnabled(!NetworkUtils.getWifiEnabled())
}
updateAboutNetwork()
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt
index c15c1edbbdf001570044fa1d0ef7519994b37923..13a5e5dfec654e46b991bf4021c266cda0a75d43 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/phone/PhoneActivity.kt
@@ -56,7 +56,7 @@ class PhoneActivity : BaseBackActivity() {
.appendLine("isSimCardReady: " + PhoneUtils.isSimCardReady())
.appendLine("getSimOperatorName: " + PhoneUtils.getSimOperatorName())
.appendLine("getSimOperatorByMnc: " + PhoneUtils.getSimOperatorByMnc())
- .appendLine("getPhoneStatus: " + PhoneUtils.getPhoneStatus())
+ .append("getPhoneStatus: " + PhoneUtils.getPhoneStatus())
.create()
phoneDialBtn.setOnClickListener(this)
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt
index 3be2c25d4727641822403a8780608b5a331fd16d..af5cb7c6278963594b8de907ad3e6615dfe4f81e 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/resource/ResourceActivity.kt
@@ -16,7 +16,7 @@ import kotlinx.android.synthetic.main.activity_resource.*
* author: Blankj
* blog : http://blankj.com
* time : 2018/05/07
- * desc :
+ * desc : demo about ResourceUtils
* ```
*/
class ResourceActivity : BaseBackActivity() {
@@ -37,8 +37,10 @@ class ResourceActivity : BaseBackActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View) {
- resourceTestAssetsBtn.setOnClickListener(this)
- resourceTestRawBtn.setOnClickListener(this)
+ setTitle(R.string.demo_resource)
+
+ resourceCopyFileFromAssets.setOnClickListener(this)
+ resourceCopyFileFromRaw.setOnClickListener(this)
SpanUtils.with(resourceAboutTv)
.appendLine("readAssets2String: " + ResourceUtils.readAssets2String("test/test.txt"))
@@ -53,8 +55,8 @@ class ResourceActivity : BaseBackActivity() {
override fun onWidgetClick(view: View) {
when (view.id) {
- R.id.resourceTestAssetsBtn -> ResourceUtils.copyFileFromAssets("test", Config.CACHE_PATH + "/assets/test")
- R.id.resourceTestRawBtn -> ResourceUtils.copyFileFromRaw(R.raw.test, Config.CACHE_PATH + "/raw/test.txt")
+ R.id.resourceCopyFileFromAssets -> ResourceUtils.copyFileFromAssets("test", Config.CACHE_PATH + "/assets/test")
+ R.id.resourceCopyFileFromRaw -> ResourceUtils.copyFileFromRaw(R.raw.test, Config.CACHE_PATH + "/raw/test.txt")
}
}
}
diff --git a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt
index 3fb3783e1ce51ae21280c8a37bbd7ede74569b22..03103b36fd82ecf31ad490bc9a5df3e379c25adf 100644
--- a/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt
+++ b/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/spStatic/SPStaticActivity.kt
@@ -48,6 +48,8 @@ class SPStaticActivity : BaseBackActivity() {
}
override fun initView(savedInstanceState: Bundle?, contentView: View) {
+ setTitle(R.string.demo_spStatic)
+
spStaticPutStringBtn.setOnClickListener(this)
spStaticPutIntBtn.setOnClickListener(this)
spStaticPutLongBtn.setOnClickListener(this)
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 c4b098f556f47c1fddecf2a44175a41be987818c..4e524feb3dcbcae40b91ef644e567c66915bca19 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
@@ -229,12 +229,12 @@ class SpanActivity : BaseBackActivity() {
}
- override fun onDestroy() {
- if (valueAnimator.isRunning) {
- valueAnimator.cancel()
- }
- super.onDestroy()
- }
+// override fun onDestroy() {
+// if (valueAnimator.isRunning) {
+// valueAnimator.cancel()
+// }
+// super.onDestroy()
+// }
}
class BlurMaskFilterSpan(private var mRadius: Float) : CharacterStyle(), UpdateAppearance {
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 02c24958c8d93fb88b7ef299bdbbd343baeb09d2..314ba33d59d5ad6e00776c2c52944584e1be37c9 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
@@ -23,7 +23,7 @@ object CustomToast {
private val HANDLER = Handler(Looper.getMainLooper())
fun showShort(text: CharSequence) {
- show(text, Toast.LENGTH_SHORT)
+ showReal(text, Toast.LENGTH_SHORT)
}
fun showShort(@StringRes resId: Int) {
@@ -39,7 +39,7 @@ object CustomToast {
}
fun showLong(text: CharSequence) {
- show(text, Toast.LENGTH_LONG)
+ showReal(text, Toast.LENGTH_LONG)
}
fun showLong(@StringRes resId: Int) {
@@ -63,10 +63,10 @@ object CustomToast {
}
private fun show(format: String, duration: Int, vararg args: Any) {
- show(String.format(format, *args), duration)
+ showReal(String.format(format, *args), duration)
}
- private fun show(text: CharSequence, duration: Int) {
+ private fun showReal(text: CharSequence, duration: Int) {
HANDLER.post {
val toastView: TextView
if (duration == Toast.LENGTH_SHORT) {
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 dfba33e505a176ed0e4bb1102463c4ad67f9933b..c93dfa7399e6d3f1950890e7720ceff5ee447837 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
@@ -79,7 +79,7 @@ object DialogHelper {
dialogView.findViewById(R.id.toastDialogShowShortToastBtn)
.setOnClickListener { ToastUtils.showShort("Short") }
val dialog = AlertDialog.Builder(topActivity).setView(dialogView).create()
- dialog.setCanceledOnTouchOutside(false)
+// dialog.setCanceledOnTouchOutside(false)
dialog.show()
}
}
diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml b/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml
index 5b954d7025cababa5a2b930df8bdb9960dad50ff..a51692d9bdd5dc43fa1b081dbee10ac6c5c57d84 100644
--- a/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_bar_nav.xml
@@ -13,19 +13,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
-
-
-
+ android:text="@string/bar_nav_visibility" />
-
-
-
+ android:text="@string/bar_status_visibility" />
-
-
-
diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_status_drawer.xml b/utilcode/pkg/src/main/res/layout/activity_bar_status_drawer.xml
index cf6582c468df353f7254c6616526af876014d33e..07118e2dff28eae352b60e66d1f0422ad973e8fc 100644
--- a/utilcode/pkg/src/main/res/layout/activity_bar_status_drawer.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_bar_status_drawer.xml
@@ -22,7 +22,6 @@
style="@style/CbStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
android:layout_margin="4dp"
android:text="@string/bar_status_title_alpha" />
@@ -31,7 +30,6 @@
style="@style/CbStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
android:layout_margin="4dp"
android:text="@string/bar_status_is_front" />
diff --git a/utilcode/pkg/src/main/res/layout/activity_bar_status_swipe_back.xml b/utilcode/pkg/src/main/res/layout/activity_bar_status_swipe_back.xml
index 28dd1535690f93f2923f370a9fe4faf74d056813..652aec932f577deb6100124f9167dd58edb31343 100644
--- a/utilcode/pkg/src/main/res/layout/activity_bar_status_swipe_back.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_bar_status_swipe_back.xml
@@ -13,7 +13,6 @@
style="@style/CbStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
android:layout_margin="4dp"
android:text="@string/bar_status_title_alpha" />
diff --git a/utilcode/pkg/src/main/res/layout/activity_brightness.xml b/utilcode/pkg/src/main/res/layout/activity_brightness.xml
index d1653fae221f4e739fdc061e1468fe9ce772ee12..3d03effc1e423d02622d48bef0b0b63523cfdea0 100644
--- a/utilcode/pkg/src/main/res/layout/activity_brightness.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_brightness.xml
@@ -37,8 +37,7 @@
style="@style/CbStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
android:layout_margin="4dp"
- android:text="@string/brightness_set_auto_brightness" />
+ android:text="@string/brightness_auto_brightness" />
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_flashlight.xml b/utilcode/pkg/src/main/res/layout/activity_flashlight.xml
index 10929f593459a1af93f0d124b65faafd24ab31e7..167c37b45a3f8eca6bb56ba0e92558ec6fca0fb4 100644
--- a/utilcode/pkg/src/main/res/layout/activity_flashlight.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_flashlight.xml
@@ -14,11 +14,10 @@
android:layout_height="wrap_content" />
diff --git a/utilcode/pkg/src/main/res/layout/activity_log.xml b/utilcode/pkg/src/main/res/layout/activity_log.xml
index 0eba1229270c9e97bf3c8096ba87793236b19889..39505aea5de442186a24731e7689c3e98c3b8b87 100644
--- a/utilcode/pkg/src/main/res/layout/activity_log.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_log.xml
@@ -13,75 +13,71 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
-
+ android:text="@string/log_switch" />
-
+ android:text="@string/log_console_console" />
-
+
-
+ android:text="@string/log_head_switch" />
-
+ android:text="@string/log_file_switch" />
-
+
-
+ android:text="@string/log_border_switch" />
-
+ android:text="@string/log_single_tag_switch" />
-
+
-
+
-
+ android:text="@string/network_data_enabled" />
-
+ android:text="@string/network_wifi_enabled" />
\ No newline at end of file
diff --git a/utilcode/pkg/src/main/res/layout/activity_resource.xml b/utilcode/pkg/src/main/res/layout/activity_resource.xml
index 8fed804497d0fbcd75b1fb9086a5a6e50542a12f..7906f85cf75ff53d318bb02f9b46b3f948838f7f 100644
--- a/utilcode/pkg/src/main/res/layout/activity_resource.xml
+++ b/utilcode/pkg/src/main/res/layout/activity_resource.xml
@@ -14,17 +14,17 @@
android:layout_height="wrap_content" />
+ android:text="@string/resource_copy_file_from_assets_2_cache" />
+ android:text="@string/resource_copy_file_from_raw_2_cache" />
diff --git a/utilcode/pkg/src/main/res/values/strings.xml b/utilcode/pkg/src/main/res/values/strings.xml
index 111a19ceec04f55bfa417f7c77b8d4f42b279fd9..5cbbb180579b63e16139ea321f23412865f3f01e 100644
--- a/utilcode/pkg/src/main/res/values/strings.xml
+++ b/utilcode/pkg/src/main/res/values/strings.xml
@@ -4,19 +4,19 @@
AdaptScreenUtils Demo
AppUtils Demo
BarUtils Demo
- Brightness Demo
+ BrightnessUtils Demo
BlurUtils Demo
CleanUtils Demo
CrashUtils Demo
DeviceUtils Demo
- Flashlight Demo
+ FlashlightUtils Demo
FragmentUtils Demo
ImageUtils Demo
KeyboardUtils Demo
LogUtils Demo
- MetaData Demo
+ MetaDataUtils Demo
NetworkUtils Demo
- Path Demo
+ PathUtils Demo
PermissionUtils Demo
PhoneUtils Demo
ProcessUtils Demo
@@ -24,8 +24,8 @@
ResourceUtils Demo
ScreenUtils Demo
SDCardUtils Demo
- Snackbar Demo
- SPStatic Demo
+ SnackbarUtils Demo
+ SPStaticUtils Demo
SpanUtils Demo
ToastUtils Demo
VibrateUtils Demo
@@ -84,10 +84,8 @@
About Notification Bar
About Status
- Show Status
- Hide Status
- Light Mode Status
- Dark Mode Status
+ Status Visibility
+ Light Mode
Set Color
Set Alpha
Set Image View
@@ -107,13 +105,11 @@
Show Notification And Hide After 2s
About Nav
- Show Nav
- Hide Nav
- Immersive Nav
+ Nav Visibility
Set Nav Color Random
- Set Auto Brightness
+ Auto Brightness
Clean Internal Cache
@@ -177,8 +173,8 @@
Open Wireless Settings
- Set Data Enabled
- Set Wifi Enabled
+ Mobile Data Enabled
+ Wifi Enabled
Hide Soft Input
@@ -188,16 +184,12 @@
Close Dialog
- Toggle Log
- Toggle Console
- Toggle Tag
- Toggle Head
- Toggle Border
- Toggle Single
- Toggle Console Filter
- Toggle File Filter
- Toggle File
- Toggle Dir
+ Log Switch
+ Console Switch
+ Head Switch
+ File Switch
+ Border Switch
+ Single Tag Switch
Log With No Tag
Log With Tag
Log In New Thread
@@ -233,8 +225,8 @@
Kill All Background Processes
- Test Assets
- Test Raw
+ Copy File From Assets to Cache
+ Copy File From Raw to Cache
Set Fullscreen