diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json index fa0107c4..789e780d 100644 --- a/.changelog/lang_zh-Hans.json +++ b/.changelog/lang_zh-Hans.json @@ -17,6 +17,7 @@ "README.md 中部分语言日期格式不正确的问题" ], "improvement": [ + "关于应用与开发者页面增加水平布局适配", "打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_", "版本更新信息支持多语言显示 (与当前显示语言同步)", "使用异步加载方式一定程度提升文件管理器列表滑动流畅性" diff --git a/app/src/main/java/org/autojs/autojs/App.kt b/app/src/main/java/org/autojs/autojs/App.kt index 68830ff4..e91eacf9 100644 --- a/app/src/main/java/org/autojs/autojs/App.kt +++ b/app/src/main/java/org/autojs/autojs/App.kt @@ -64,7 +64,7 @@ class App : MultiDexApplication() { setUpLeakCanary() AutoJs.initInstance(this) - GlobalKeyObserver.initIfNeeded() + GlobalKeyObserver.initIfNeeded(applicationContext) setupDrawableImageLoader() TimedTaskScheduler.init(this) initDynamicBroadcastReceivers() diff --git a/app/src/main/java/org/autojs/autojs/network/UpdateChecker.java b/app/src/main/java/org/autojs/autojs/network/UpdateChecker.java index 6318b65f..31aab773 100644 --- a/app/src/main/java/org/autojs/autojs/network/UpdateChecker.java +++ b/app/src/main/java/org/autojs/autojs/network/UpdateChecker.java @@ -63,6 +63,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -114,11 +115,15 @@ public class UpdateChecker { mPendingDialog.show(); } + AtomicReference errorBlob = new AtomicReference<>(); + AtomicReference errorRaw = new AtomicReference<>(); + Observable obsBlobSafe = getStreamingApi() .streamingUrl(URL_VERSION_PROPS_BLOB) .subscribeOn(Schedulers.io()) .onErrorResumeNext(e -> { Log.d(TAG, "Error from obsBlobSafe while parsing version.properties"); + errorBlob.set(e.getMessage()); e.printStackTrace(); return Observable.empty(); }); @@ -128,13 +133,14 @@ public class UpdateChecker { .subscribeOn(Schedulers.io()) .onErrorResumeNext(e -> { Log.d(TAG, "Error from obsRawSafe while parsing version.properties"); + errorRaw.set(e.getMessage()); e.printStackTrace(); return Observable.empty(); }); Observable.amb(Arrays.asList(obsBlobSafe, obsRawSafe)) .observeOn(AndroidSchedulers.mainThread()) - .switchIfEmpty(Observable.error(new Exception("To trigger onError"))) + .switchIfEmpty(Observable.error(new ObservableEmptyException())) .subscribe(new SimpleObserver<>() { @Override public void onNext(@NotNull ResponseBody responseBody) { @@ -188,9 +194,32 @@ public class UpdateChecker { } if (mPromptMode == PromptMode.DIALOG) { - new Dialog.Builder.Prompt(mContext, R.string.error_check_for_update, e.getMessage()) - .positiveText(R.string.text_cancel) - .build().show(); + if (!(e instanceof ObservableEmptyException)) { + new Dialog.Builder.Prompt(mContext, R.string.error_check_for_update, e.getMessage()) + .positiveText(R.string.dialog_button_dismiss) + .build().show(); + return; + } + if (errorBlob.get() != null || errorRaw.get() != null) { + StringBuilder message = new StringBuilder(); + if (errorBlob.get() != null) { + message.append("Error message of blob:\n\n").append(errorBlob.get()); + } + if (errorRaw.get() != null) { + if (message.length() > 0) { + message.append("\n\n"); + } + message.append("Error message of raw:\n\n").append(errorRaw.get()); + } + new Dialog.Builder.Prompt(mContext, R.string.error_check_for_update, message.toString()) + .positiveText(R.string.dialog_button_dismiss) + .build().show(); + } else { + new Dialog.Builder.Prompt(mContext, R.string.error_check_for_update, + R.string.error_failed_to_retrieve_version_properties_file_to_parse_version_information) + .positiveText(R.string.dialog_button_dismiss) + .build().show(); + } } } }); @@ -887,4 +916,8 @@ public class UpdateChecker { } + private static class ObservableEmptyException extends RuntimeException { + /* Empty body. */ + } + } \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt b/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt index a019e805..7e24b9fd 100644 --- a/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/settings/AboutActivity.kt @@ -22,7 +22,6 @@ import org.autojs.autojs6.BuildConfig import org.autojs.autojs6.R import org.autojs.autojs6.databinding.ActivityAboutBinding import org.autojs.autojs6.databinding.ActivityAboutFunctionButtonsBinding -import org.autojs.autojs6.databinding.ActivityAboutItemsBinding /** * Created by Stardust on Feb 2, 2017. @@ -31,7 +30,6 @@ import org.autojs.autojs6.databinding.ActivityAboutItemsBinding open class AboutActivity : BaseActivity() { private lateinit var activityBinding: ActivityAboutBinding - private lateinit var itemsBinding: ActivityAboutItemsBinding private lateinit var functionsButtonsBinding: ActivityAboutFunctionButtonsBinding override fun onCreate(savedInstanceState: Bundle?) { @@ -40,7 +38,6 @@ open class AboutActivity : BaseActivity() { setContentView(it.root) it.version.text = BuildConfig.VERSION_NAME it.since.text = BuildConfig.VERSION_DATE - itemsBinding = it.activityAboutItems functionsButtonsBinding = it.activityAboutFunctionButtons } setToolbarAsBack(R.string.text_about) @@ -48,14 +45,14 @@ open class AboutActivity : BaseActivity() { } private fun setupBindingListeners() { - itemsBinding.avatarOriginalDeveloper.setOnClickListener { toastForUnderDevelopment() } - itemsBinding.avatarDeveloper.setOnClickListener { toastForUnderDevelopment() } + activityBinding.avatarOriginalDeveloper.setOnClickListener { toastForUnderDevelopment() } + activityBinding.avatarDeveloper.setOnClickListener { toastForUnderDevelopment() } - itemsBinding.avatarOriginalDeveloperUserContents.setOnClickListener { toastForUnderDevelopment() } - itemsBinding.avatarDeveloperUserContents.setOnClickListener { toastForUnderDevelopment() } + activityBinding.avatarOriginalDeveloperUserContents.setOnClickListener { toastForUnderDevelopment() } + activityBinding.avatarDeveloperUserContents.setOnClickListener { toastForUnderDevelopment() } - itemsBinding.icon1stDeveloperIdentifier.setOnClickListener { toastForFirstDeveloperIdentifier() } - itemsBinding.icon2ndDeveloperIdentifier.setOnClickListener { toastForSecondDeveloperIdentifier() } + activityBinding.icon1stDeveloperIdentifier.setOnClickListener { toastForFirstDeveloperIdentifier() } + activityBinding.icon2ndDeveloperIdentifier.setOnClickListener { toastForSecondDeveloperIdentifier() } activityBinding.iconAboutAppSvgView.setOnClickListener { showDeviceInfo() } activityBinding.iconAboutAppSvgView.setOnLongClickListener { true.also { launchDeveloperOptions() } } diff --git a/app/src/main/res/drawable/ic_about_license.png b/app/src/main/res/drawable/ic_about_license.png index 38744e4b..3b649ab3 100644 Binary files a/app/src/main/res/drawable/ic_about_license.png and b/app/src/main/res/drawable/ic_about_license.png differ diff --git a/app/src/main/res/drawable/ic_about_version_histories.png b/app/src/main/res/drawable/ic_about_version_histories.png new file mode 100644 index 00000000..b073ceb9 Binary files /dev/null and b/app/src/main/res/drawable/ic_about_version_histories.png differ diff --git a/app/src/main/res/layout-land/activity_about.xml b/app/src/main/res/layout-land/activity_about.xml new file mode 100644 index 00000000..82002763 --- /dev/null +++ b/app/src/main/res/layout-land/activity_about.xml @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index c2dd8853..cdd1bc21 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -1,53 +1,54 @@ - + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:fitsSystemWindows="true" + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:theme="@style/AppTheme.AppBarOverlay" + android:fitsSystemWindows="true"> + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorPrimary" + android:theme="@style/ToolBarStyle" + app:popupTheme="@style/AppTheme.PopupOverlay" + app:title="@string/text_about" /> + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="16dp" + android:orientation="vertical"> + android:id="@+id/icon_container" + android:layout_width="match_parent" + android:layout_height="210dp" + android:gravity="center" + android:orientation="vertical" + android:background="@android:color/transparent" + android:foreground="?selectableItemBackgroundBorderless"> + android:layout_width="wrap_content" + android:layout_height="wrap_content"> - + app:animatedSvgTraceTimePerGlyph="500" /> - + + + android:layout_height="0dp" + android:layout_weight="1" + android:gravity="center" + android:textColor="@color/about_app_version_info" + android:textSize="16sp" + android:text="@string/text_sample_string" /> - - + android:id="@+id/since" + android:layout_width="wrap_content" + android:layout_height="0dp" + android:layout_weight="1" + android:gravity="center" + android:textColor="@color/about_app_version_info" + android:textSize="13sp" + android:text="@string/text_sample_string" /> - - + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="16dp" + android:orientation="vertical"> + + + + + + + + + android:clickable="true" + android:focusable="true"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:id="@+id/activity_about_function_buttons" + layout="@layout/activity_about_function_buttons" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:layout_marginTop="20dp" + tools:text="@string/text_copyright_sample" + android:textColor="@color/prefTextColorPrimary" + android:textSize="14sp" /> diff --git a/app/src/main/res/layout/activity_about_function_buttons.xml b/app/src/main/res/layout/activity_about_function_buttons.xml index 30148994..75b6a1ff 100644 --- a/app/src/main/res/layout/activity_about_function_buttons.xml +++ b/app/src/main/res/layout/activity_about_function_buttons.xml @@ -1,113 +1,144 @@ - + + + - - + android:gravity="top|center" + android:layout_marginHorizontal="3dp" + android:focusable="true" + android:clickable="true"> + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_gravity="center" + android:layout_marginTop="4dp" + android:src="@drawable/ic_about_license" + android:contentDescription="@string/text_about_functions_licenses" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginVertical="6dp" + android:text="@string/text_about_functions_licenses" + android:maxLines="2" + android:gravity="center" + android:textSize="13sp" + android:textColor="@color/about_app_function_buttons" /> + android:id="@+id/about_functions_button_update" + android:layout_width="80dp" + android:layout_height="match_parent" + android:orientation="vertical" + android:background="?selectableItemBackground" + android:gravity="top|center" + android:layout_marginHorizontal="3dp" + android:focusable="true" + android:clickable="true"> + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_gravity="center" + android:layout_marginTop="4dp" + android:src="@drawable/ic_about_update" + android:contentDescription="@string/text_about_functions_update" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginVertical="6dp" + android:maxLines="2" + android:gravity="center" + android:text="@string/text_about_functions_update" + android:textSize="13sp" + android:textColor="@color/about_app_function_buttons" /> + android:id="@+id/about_functions_button_version_histories" + android:layout_width="80dp" + android:layout_height="match_parent" + android:orientation="vertical" + android:background="?selectableItemBackground" + android:gravity="top|center" + android:layout_marginHorizontal="3dp" + android:focusable="true" + android:clickable="true"> + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_gravity="center" + android:layout_marginTop="4dp" + android:src="@drawable/ic_about_version_histories" + android:contentDescription="@string/text_about_functions_version_histories" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginVertical="6dp" + android:maxLines="2" + android:gravity="center" + android:text="@string/text_about_functions_version_histories" + android:textSize="13sp" + android:textColor="@color/about_app_function_buttons" /> + + + + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_about_items.xml b/app/src/main/res/layout/activity_about_items.xml deleted file mode 100644 index 765cee00..00000000 --- a/app/src/main/res/layout/activity_about_items.xml +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index cf07b7b7..b94aa26a 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -1003,5 +1003,7 @@ تحسين التبعيات تعديلات على إصدارات بعض التبعيات أو المكتبات المحلية + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 88943a03..754b12d4 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -998,5 +998,7 @@ Improvement Dependency Some dependency or local library version adjustments + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index d7098a43..5f499493 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1001,5 +1001,7 @@ Mejora Dependencia Ajustes en algunas dependencias o versiones de bibliotecas locales + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 182813b7..b06a5da5 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1001,5 +1001,7 @@ Amélioration Dépendance Certaines dépendances ou versions de bibliothèques locales ont été ajustées + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b040b727..68fe9954 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1002,5 +1002,7 @@ 改善 依存関係 一部の依存関係またはローカルライブラリのバージョン調整 + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index d2c5e8c9..365babb2 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1003,5 +1003,7 @@ 개선 의존성 일부 의존성 또는 로컬 라이브러리 버전 조정 + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index e2a9ac3c..c5c08eb9 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1001,5 +1001,7 @@ Улучшение Зависимость Изменения версий некоторых зависимостей или локальных библиотек + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 656c254b..6d535baf 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -999,5 +999,7 @@ 優化 依賴 部分依賴或本地庫版本調整 + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 29cf6410..29565437 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -999,5 +999,7 @@ 最佳化 依賴 部分依賴或本地庫版本調整 + Version histories + Failed to retrieve version.properties to parse version information diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index fb2ceb03..a8fdb8ec 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -999,5 +999,7 @@ 优化 依赖 部分依赖或本地库版本调整 + 版本历史 + 获取 version.properties 失败, 无法解析版本信息 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index bc84cdc0..8dbee01b 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,6 +1,7 @@ 50dp + 60dp 16dp 6dp 16dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c0a7894d..dbd27b2b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,9 +27,6 @@ @string/key_keep_screen_on_when_in_foreground_disabled @string/key_root_record_out_file_type_binary main.js - about_functions_button_feedback - about_functions_button_licenses - about_functions_button_update SuperMonster003 SuperMonster003 ... ... @@ -1229,5 +1226,7 @@ Improvement Dependency Some dependency or local library version adjustments + Version histories + Failed to retrieve version.properties to parse version information