From bd02228600f920b013e3279522ab74dea8c1e7e9 Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Sun, 13 Apr 2025 14:11:06 +0800 Subject: [PATCH] =?UTF-8?q?6.6.2=20-=20Alpha6=20-=20=E6=89=93=E5=8C=85?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=AE=BF=E9=97=AE=E6=89=80=E6=9C=89=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=92=8C=E5=8F=91=E9=80=81=E9=80=9A=E7=9F=A5=E7=AD=89=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E6=9D=83=E9=99=90=E5=BC=80=E5=85=B3=20(#354)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changelog/lang_zh-Hans.json | 3 +- .readme/README-ar.md | 2 +- .readme/README-en.md | 2 +- .readme/README-es.md | 2 +- .readme/README-fr.md | 2 +- .readme/README-ja.md | 2 +- .readme/README-ko.md | 2 +- .readme/README-ru.md | 2 +- .readme/README-zh-Hans.md | 5 +- .readme/README-zh-Hant-HK.md | 2 +- .readme/README-zh-Hant-TW.md | 2 +- README.md | 5 +- app/src/main/AndroidManifest.xml | 4 +- .../main/assets-app/doc/CHANGELOG-zh-Hans.md | 3 +- app/src/main/assets-app/doc/CHANGELOG.md | 3 +- .../java/org/autojs/autojs/AbstractAutoJs.kt | 15 +++-- app/src/main/java/org/autojs/autojs/AutoJs.kt | 3 +- .../autojs/autojs/apkbuilder/ApkBuilder.kt | 4 +- .../engine/LoopBasedJavaScriptEngine.java | 4 +- .../LoopedBasedJavaScriptExecution.java | 4 +- .../autojs/execution/ScriptExecuteActivity.kt | 4 +- .../autojs/autojs/inrt/SettingsActivity.kt | 16 ++++- .../org/autojs/autojs/inrt/SplashActivity.kt | 63 +++++++++-------- ...OverOtherAppsPermissionSwitchPreference.kt | 26 +++++++ ...anageAllFilesPermissionSwitchPreference.kt | 26 +++++++ ...NotificationsPermissionSwitchPreference.kt | 26 +++++++ ...sion.kt => PostNotificationsPermission.kt} | 13 ++-- .../autojs/autojs/runtime/api/Permissions.kt | 23 +++++++ .../autojs/runtime/api/WrappedShizuku.kt | 4 +- .../autojs/autojs/theme/ThemeColorManager.kt | 6 +- .../ThemeColorPermissionSwitchPreference.kt | 32 +++++++++ .../preference/ThemeColorSwitchPreference.kt | 6 +- .../org/autojs/autojs/ui/main/MainActivity.kt | 16 +---- .../autojs/ui/main/drawer/DrawerFragment.kt | 4 +- app/src/main/res/values-ar/strings.xml | 7 ++ app/src/main/res/values-en/strings.xml | 7 ++ app/src/main/res/values-es/strings.xml | 7 ++ app/src/main/res/values-fr/strings.xml | 7 ++ app/src/main/res/values-ja/strings.xml | 7 ++ app/src/main/res/values-ko/strings.xml | 7 ++ app/src/main/res/values-ru/strings.xml | 7 ++ app/src/main/res/values-zh-rHK/strings.xml | 7 ++ app/src/main/res/values-zh-rTW/strings.xml | 7 ++ app/src/main/res/values-zh/strings.xml | 7 ++ app/src/main/res/values/strings.xml | 10 +++ app/src/main/res/values/styles.xml | 6 +- app/src/main/res/xml/preference_inrt.xml | 67 ++++++++++++------- version.properties | 6 +- 48 files changed, 372 insertions(+), 123 deletions(-) create mode 100644 app/src/main/java/org/autojs/autojs/inrt/theme/preference/DisplayOverOtherAppsPermissionSwitchPreference.kt create mode 100644 app/src/main/java/org/autojs/autojs/inrt/theme/preference/ManageAllFilesPermissionSwitchPreference.kt create mode 100644 app/src/main/java/org/autojs/autojs/inrt/theme/preference/PostNotificationsPermissionSwitchPreference.kt rename app/src/main/java/org/autojs/autojs/permission/{PostNotificationPermission.kt => PostNotificationsPermission.kt} (67%) create mode 100644 app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorPermissionSwitchPreference.kt diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json index 6c48c97a..5c3902bd 100644 --- a/.changelog/lang_zh-Hans.json +++ b/.changelog/lang_zh-Hans.json @@ -1,7 +1,7 @@ { "$data": { "v6.6.2": { - "released_date": "2025/04/12", + "released_date": "2025/04/13", "feature": [ "ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法", "images.flip 方法, 用于图像翻转 _[`issue #349`](http://issues.autojs6.com/349)_", @@ -30,6 +30,7 @@ "精简打包应用模板 APK 文件大小", "打包页面支持 Pinyin 库选项", "打包应用主活动页面优化状态栏背景及文字颜色", + "打包应用设置页面增加访问所有文件和发送通知等特殊权限开关 _[`issue #354`](http://issues.autojs6.com/354)_", "控件的文字及图标根据主题色亮度值自动切换合适的颜色", "部分控件主题色与背景色对比度过低时的视觉体验", "应用内页面导航栏设置为透明或半透明以增强视觉体验", diff --git a/.readme/README-ar.md b/.readme/README-ar.md index 9086d4f0..92ceb90f 100644 --- a/.readme/README-ar.md +++ b/.readme/README-ar.md @@ -376,7 +376,7 @@ SDK Tools (أدوات SDK) (في النافذة اليمنى) يعتمد مشروع AutoJs6 على إصدار `JDK (مجموعة تطوير جافا)` بإصدار لا يقل عن `17`، ولكن يفضل الإصدار الذي لا يقل عن `19`. -اعتبارًا من 12 April 2025، الإصدار الأقصى المدعوم من JDK لمشروع AutoJs6 هو `24`. +اعتبارًا من 13 April 2025، الإصدار الأقصى المدعوم من JDK لمشروع AutoJs6 هو `24`. > ملاحظة: إذا كان نظام الكمبيوتر يحتوي على JDK والإصدار يفي بالمتطلبات المذكورة أعلاه، فيمكنك تخطي هذا القسم. diff --git a/.readme/README-en.md b/.readme/README-en.md index bea5f837..651238b4 100644 --- a/.readme/README-en.md +++ b/.readme/README-en.md @@ -376,7 +376,7 @@ Check `Show Package Details`, click NDK and CMake respectively to ensure the cor The `JDK (Java Development Kit)` version required for the AutoJs6 project should be at least `17`, but `19` or higher is recommended. -As of Apr 12 , 2025, AutoJs6 supports up to version `24` of the JDK. +As of Apr 13 , 2025, AutoJs6 supports up to version `24` of the JDK. > Note: If the JDK is already installed on the computer system and the version meets the above requirements, this section can be skipped. diff --git a/.readme/README-es.md b/.readme/README-es.md index 6cfe2adb..2dde3b96 100644 --- a/.readme/README-es.md +++ b/.readme/README-es.md @@ -376,7 +376,7 @@ Marca `Show Package Details (Mostrar detalles del paquete)`, haz clic en NDK y C La versión mínima requerida del `JDK (Kit de Desarrollo de Java)` para el proyecto AutoJs6 es `17`, pero se recomienda usar una versión no inferior a `19`. -Hasta el 12 de April de 2025, AutoJs6 soporta hasta la versión `24` de JDK. +Hasta el 13 de April de 2025, AutoJs6 soporta hasta la versión `24` de JDK. > Nota: Si el sistema ya tiene instalado JDK y cumple con los requisitos anteriores, puedes omitir esta sección. diff --git a/.readme/README-fr.md b/.readme/README-fr.md index 4932c23e..ca4930bc 100644 --- a/.readme/README-fr.md +++ b/.readme/README-fr.md @@ -376,7 +376,7 @@ Cochez `Show Package Details (afficher les détails du package)`, puis cliquez r La version de JDK (Kit de développement Java) requise pour le projet AutoJs6 doit être au moins `17`, mais il est recommandé d'avoir au moins `19`. -À partir du 12 April 2025, AutoJs6 prend en charge la version maximale de JDK `24`. +À partir du 13 April 2025, AutoJs6 prend en charge la version maximale de JDK `24`. > Note : Si le JDK est déjà installé sur le système informatique et que la version répond aux exigences ci-dessus, vous pouvez ignorer cette section. diff --git a/.readme/README-ja.md b/.readme/README-ja.md index d26d4d1f..19c0dd6f 100644 --- a/.readme/README-ja.md +++ b/.readme/README-ja.md @@ -376,7 +376,7 @@ SDK Tools (SDK ツール) (右側のウィンドウにあります) AutoJs6プロジェクトが依存する `JDK (Java開発キット)` のリリースバージョンは少なくとも `17` で, それ以下のバージョンは推奨されませんが, 最低でも `19` の使用を推奨します. -2025 年 4 月 12 日 現在, AutoJs6がサポートする最大のJDKバージョンは `24` です. +2025 年 4 月 13 日 現在, AutoJs6がサポートする最大のJDKバージョンは `24` です. > 注: コンピュータシステムに適切なバージョンのJDKがインストールされている場合, この節の内容をスキップできます. diff --git a/.readme/README-ko.md b/.readme/README-ko.md index e710f69c..304c153f 100644 --- a/.readme/README-ko.md +++ b/.readme/README-ko.md @@ -376,7 +376,7 @@ SDK Tools (SDK 도구) (오른쪽 창에 위치) AutoJs6 프로젝트는 `JDK (Java 개발 도구 키트)` 버전이 `17` 이상이어야 하지만, `19` 이상을 권장합니다. -2025 년 4 월 12 일 기준으로, AutoJs6이 지원하는 최대 JDK 버전은 `24`입니다. +2025 년 4 월 13 일 기준으로, AutoJs6이 지원하는 최대 JDK 버전은 `24`입니다. > 메모: 시스템에 JDK가 설치되어 있고, 버전이 위의 요구 사항을 충족하는 경우, 이 섹션을 건너뛸 수 있습니다. diff --git a/.readme/README-ru.md b/.readme/README-ru.md index 4c1e0386..223e9ba7 100644 --- a/.readme/README-ru.md +++ b/.readme/README-ru.md @@ -376,7 +376,7 @@ SDK Tools (SDK Инструменты) (находится в правом ок Для проекта AutoJs6 требуется версия `JDK (Java Development Kit)` не ниже `17`, но рекомендуется не ниже `19`. -По состоянию на 12 April 2025 г. AutoJs6 поддерживает JDK максимальной версии `24`. +По состоянию на 13 April 2025 г. AutoJs6 поддерживает JDK максимальной версии `24`. > Примечание: Если на компьютере уже установлен JDK и версия соответствует указанным требованиям, этот раздел можно пропустить. diff --git a/.readme/README-zh-Hans.md b/.readme/README-zh-Hans.md index 978d8186..2153b711 100644 --- a/.readme/README-zh-Hans.md +++ b/.readme/README-zh-Hans.md @@ -157,7 +157,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开 # v6.6.2 -###### 2025/04/12 +###### 2025/04/13 * `新增` ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法 * `新增` images.flip 方法, 用于图像翻转 _[`issue #349`](http://issues.autojs6.com/349)_ @@ -182,6 +182,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开 * `优化` 精简打包应用模板 APK 文件大小 * `优化` 打包页面支持 Pinyin 库选项 * `优化` 打包应用主活动页面优化状态栏背景及文字颜色 +* `优化` 打包应用设置页面增加访问所有文件和发送通知等特殊权限开关 _[`issue #354`](http://issues.autojs6.com/354)_ * `优化` 控件的文字及图标根据主题色亮度值自动切换合适的颜色 * `优化` 部分控件主题色与背景色对比度过低时的视觉体验 * `优化` 应用内页面导航栏设置为透明或半透明以增强视觉体验 @@ -382,7 +383,7 @@ SDK Tools (SDK 工具) (位于右侧窗口) AutoJs6 项目依赖的 `JDK (Java 开发工具包)` 发行版本不低于 `17`, 但建议不低于 `19`. -截至 2025 年 4 月 12 日, AutoJs6 可支持 JDK 最高版本为 `24`. +截至 2025 年 4 月 13 日, AutoJs6 可支持 JDK 最高版本为 `24`. > 注: 如果计算机系统已安装 JDK 且版本满足上述要求, 则可跳过此小节内容. diff --git a/.readme/README-zh-Hant-HK.md b/.readme/README-zh-Hant-HK.md index 8257d6fa..7e60d07a 100644 --- a/.readme/README-zh-Hant-HK.md +++ b/.readme/README-zh-Hant-HK.md @@ -376,7 +376,7 @@ SDK Tools (SDK 工具) (位於右側窗口) AutoJs6 項目依賴的 `JDK (Java 開發工具包)` 發行版本不低於 `17`, 但建議不低於 `19`. -截至 2025 年 4 月 12 日, AutoJs6 可支持 JDK 最高版本為 `24`. +截至 2025 年 4 月 13 日, AutoJs6 可支持 JDK 最高版本為 `24`. > 注: 如果計算機系統已安裝 JDK 且版本滿足上述要求, 則可跳過此小節內容. diff --git a/.readme/README-zh-Hant-TW.md b/.readme/README-zh-Hant-TW.md index 05befdfb..096536a5 100644 --- a/.readme/README-zh-Hant-TW.md +++ b/.readme/README-zh-Hant-TW.md @@ -376,7 +376,7 @@ SDK Tools (SDK 工具) (位於右側視窗) AutoJs6 專案依賴的 `JDK (Java 開發工具包)` 發行版本不低於 `17`, 但建議不低於 `19`. -截至 2025 年 4 月 12 日, AutoJs6 可支援 JDK 最高版本為 `24`. +截至 2025 年 4 月 13 日, AutoJs6 可支援 JDK 最高版本為 `24`. > 注: 如果計算機系統已安裝 JDK 且版本滿足上述要求, 則可跳過此小節內容. diff --git a/README.md b/README.md index 978d8186..2153b711 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开 # v6.6.2 -###### 2025/04/12 +###### 2025/04/13 * `新增` ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法 * `新增` images.flip 方法, 用于图像翻转 _[`issue #349`](http://issues.autojs6.com/349)_ @@ -182,6 +182,7 @@ AutoJs6 在 Auto.js 最终项目的基础上, 于 `2021/12/01` 进行二次开 * `优化` 精简打包应用模板 APK 文件大小 * `优化` 打包页面支持 Pinyin 库选项 * `优化` 打包应用主活动页面优化状态栏背景及文字颜色 +* `优化` 打包应用设置页面增加访问所有文件和发送通知等特殊权限开关 _[`issue #354`](http://issues.autojs6.com/354)_ * `优化` 控件的文字及图标根据主题色亮度值自动切换合适的颜色 * `优化` 部分控件主题色与背景色对比度过低时的视觉体验 * `优化` 应用内页面导航栏设置为透明或半透明以增强视觉体验 @@ -382,7 +383,7 @@ SDK Tools (SDK 工具) (位于右侧窗口) AutoJs6 项目依赖的 `JDK (Java 开发工具包)` 发行版本不低于 `17`, 但建议不低于 `19`. -截至 2025 年 4 月 12 日, AutoJs6 可支持 JDK 最高版本为 `24`. +截至 2025 年 4 月 13 日, AutoJs6 可支持 JDK 最高版本为 `24`. > 注: 如果计算机系统已安装 JDK 且版本满足上述要求, 则可跳过此小节内容. diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 83b058fd..c88e855f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -649,11 +649,11 @@ + android:theme="@style/AppTheme.NoActionBarInrt" /> + android:theme="@style/AppTheme.NoActionBarInrt" /> LoopBasedJavaScriptEngineWithDecryption(rt, applicationContext) else -> LoopBasedJavaScriptEngine(rt, applicationContext) }.also { it.runtime = rt } @@ -110,11 +109,11 @@ abstract class AbstractAutoJs protected constructor(val application: Application override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { ScreenMetrics.init(activity) appUtils.setCurrentActivity(activity) - registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener { _, key -> + registerOnSharedPreferenceChangeListener { _, key -> if (key == StringUtils.key(R.string.key_keep_screen_on_when_in_foreground)) { configKeepScreenOnWhenInForeground(activity) } - }) + } } override fun onActivityPaused(activity: Activity) = appUtils.setCurrentActivity(null) @@ -138,4 +137,12 @@ abstract class AbstractAutoJs protected constructor(val application: Application open fun createGlobalConsole() = GlobalConsole(uiHandler) + companion object { + + @JvmStatic + @Suppress("KotlinConstantConditions") + val isInrt get() = BuildConfig.isInrt + + } + } \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/AutoJs.kt b/app/src/main/java/org/autojs/autojs/AutoJs.kt index cae7d5b7..be83f005 100644 --- a/app/src/main/java/org/autojs/autojs/AutoJs.kt +++ b/app/src/main/java/org/autojs/autojs/AutoJs.kt @@ -23,7 +23,6 @@ import org.autojs.autojs.ui.floating.FullScreenFloatyWindow import org.autojs.autojs.ui.floating.layoutinspector.LayoutBoundsFloatyWindow import org.autojs.autojs.ui.floating.layoutinspector.LayoutHierarchyFloatyWindow import org.autojs.autojs.util.RhinoUtils.isBackgroundThread -import org.autojs.autojs6.BuildConfig import java.util.concurrent.Executors import org.autojs.autojs.inrt.autojs.AutoJs as AutoJsInrt @@ -146,7 +145,7 @@ open class AutoJs(appContext: Application) : AbstractAutoJs(appContext) { fun initInstance(application: Application) { Log.d(TAG, "AutoJs isInitialized: $isInitialized") if (!isInitialized) { - instance = when (BuildConfig.isInrt) { + instance = when (isInrt) { true -> AutoJsInrt(application) else -> AutoJs(application) } diff --git a/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt b/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt index 104be7a5..f2e6610f 100644 --- a/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt +++ b/app/src/main/java/org/autojs/autojs/apkbuilder/ApkBuilder.kt @@ -10,6 +10,7 @@ import android.util.Log import com.mcal.apksigner.ApkSigner import com.reandroid.arsc.chunk.TableBlock import org.apache.commons.io.FileUtils +import org.autojs.autojs.AbstractAutoJs.Companion.isInrt import org.autojs.autojs.apkbuilder.keystore.AESUtils import org.autojs.autojs.app.GlobalAppContext import org.autojs.autojs.engine.encryption.AdvancedEncryptionStandard @@ -22,7 +23,6 @@ import org.autojs.autojs.script.EncryptedScriptFileHeader.writeHeader import org.autojs.autojs.script.JavaScriptFileSource import org.autojs.autojs.util.FileUtils.TYPE.JAVASCRIPT import org.autojs.autojs.util.MD5Utils -import org.autojs.autojs6.BuildConfig import org.autojs.autojs6.R import pxb.android.StringItem import pxb.android.axml.AxmlWriter @@ -552,7 +552,7 @@ open class ApkBuilder(apkInputStream: InputStream?, private val outApkFile: File ); fun ensureLibFiles(moduleName: String = label) { - if (!BuildConfig.isInrt) return + if (!isInrt) return val nativeLibraryDir = File(globalContext.applicationInfo.nativeLibraryDir) val primaryNativeLibraries = nativeLibraryDir.list()?.toList() ?: emptyList() if (!primaryNativeLibraries.containsAll(libsToInclude)) { diff --git a/app/src/main/java/org/autojs/autojs/engine/LoopBasedJavaScriptEngine.java b/app/src/main/java/org/autojs/autojs/engine/LoopBasedJavaScriptEngine.java index 89b3e70f..33d5b425 100644 --- a/app/src/main/java/org/autojs/autojs/engine/LoopBasedJavaScriptEngine.java +++ b/app/src/main/java/org/autojs/autojs/engine/LoopBasedJavaScriptEngine.java @@ -5,11 +5,11 @@ import android.content.Context; import android.os.Handler; import android.os.Looper; import android.util.Log; +import org.autojs.autojs.AbstractAutoJs; import org.autojs.autojs.core.looper.LooperHelper; import org.autojs.autojs.runtime.ScriptRuntime; import org.autojs.autojs.script.JavaScriptSource; import org.autojs.autojs.script.ScriptSource; -import org.autojs.autojs6.BuildConfig; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.mozilla.javascript.ContinuationPending; @@ -74,7 +74,7 @@ public class LoopBasedJavaScriptEngine extends RhinoJavaScriptEngine { continue; } catch (Throwable t) { mLooping = false; - if (BuildConfig.isInrt && t.getMessage() != null) { + if (AbstractAutoJs.isInrt() && t.getMessage() != null) { ScriptRuntime.popException(t.getMessage()); } throw t; diff --git a/app/src/main/java/org/autojs/autojs/execution/LoopedBasedJavaScriptExecution.java b/app/src/main/java/org/autojs/autojs/execution/LoopedBasedJavaScriptExecution.java index b693283a..2d7ca696 100644 --- a/app/src/main/java/org/autojs/autojs/execution/LoopedBasedJavaScriptExecution.java +++ b/app/src/main/java/org/autojs/autojs/execution/LoopedBasedJavaScriptExecution.java @@ -1,5 +1,6 @@ package org.autojs.autojs.execution; +import org.autojs.autojs.AbstractAutoJs; import org.autojs.autojs.core.looper.Loopers; import org.autojs.autojs.engine.LoopBasedJavaScriptEngine; import org.autojs.autojs.engine.ScriptEngine; @@ -7,7 +8,6 @@ import org.autojs.autojs.engine.ScriptEngineManager; import org.autojs.autojs.inrt.autojs.LoopBasedJavaScriptEngineWithDecryption; import org.autojs.autojs.script.JavaScriptSource; import org.autojs.autojs.script.ScriptSource; -import org.autojs.autojs6.BuildConfig; /** * Created by Stardust on Oct 27, 2017. @@ -25,7 +25,7 @@ public class LoopedBasedJavaScriptExecution extends RunnableScriptExecution { sleep(delay); long interval = getConfig().getInterval(); - var javaScriptEngine = BuildConfig.isInrt + var javaScriptEngine = AbstractAutoJs.isInrt() ? (LoopBasedJavaScriptEngineWithDecryption) engine : (LoopBasedJavaScriptEngine) engine; javaScriptEngine.getRuntime().loopers.setMainLooperQuitHandler(new Loopers.LooperQuitHandler() { diff --git a/app/src/main/java/org/autojs/autojs/execution/ScriptExecuteActivity.kt b/app/src/main/java/org/autojs/autojs/execution/ScriptExecuteActivity.kt index ceac8bea..9fa02dbb 100644 --- a/app/src/main/java/org/autojs/autojs/execution/ScriptExecuteActivity.kt +++ b/app/src/main/java/org/autojs/autojs/execution/ScriptExecuteActivity.kt @@ -14,6 +14,7 @@ import android.view.MenuItem import android.view.MotionEvent import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity +import org.autojs.autojs.AbstractAutoJs.Companion.isInrt import org.autojs.autojs.annotation.ScriptInterface import org.autojs.autojs.core.eventloop.EventEmitter import org.autojs.autojs.core.eventloop.SimpleEvent @@ -28,7 +29,6 @@ import org.autojs.autojs.inrt.autojs.LoopBasedJavaScriptEngineWithDecryption import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.script.ScriptSource import org.autojs.autojs.util.ViewUtils -import org.autojs.autojs6.BuildConfig import org.autojs.autojs6.R import org.mozilla.javascript.ContinuationPending @@ -138,7 +138,7 @@ class ScriptExecuteActivity : AppCompatActivity() { mScriptEngine.setTag(ScriptEngine.TAG_SOURCE, mScriptSource) mExecutionListener!!.onStart(mScriptExecution) - if (BuildConfig.isInrt) { + if (isInrt) { (mScriptEngine as LoopBasedJavaScriptEngineWithDecryption).execute(mScriptSource, executeCallback) } else { (mScriptEngine as LoopBasedJavaScriptEngine).execute(mScriptSource, executeCallback) diff --git a/app/src/main/java/org/autojs/autojs/inrt/SettingsActivity.kt b/app/src/main/java/org/autojs/autojs/inrt/SettingsActivity.kt index 49b5ff7d..7bc4d9fc 100644 --- a/app/src/main/java/org/autojs/autojs/inrt/SettingsActivity.kt +++ b/app/src/main/java/org/autojs/autojs/inrt/SettingsActivity.kt @@ -2,6 +2,7 @@ package org.autojs.autojs.inrt import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import org.autojs.autojs.theme.preference.ThemeColorPermissionSwitchPreference import org.autojs.autojs6.R import org.autojs.autojs6.databinding.ActivitySettingsInrtBinding @@ -11,12 +12,14 @@ import org.autojs.autojs6.databinding.ActivitySettingsInrtBinding */ class SettingsActivity : AppCompatActivity() { + private val preferenceFragment by lazy { PreferenceFragment() } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding = ActivitySettingsInrtBinding.inflate(layoutInflater).also { setContentView(it.root) } supportFragmentManager .beginTransaction() - .replace(R.id.fragment_setting, PreferenceFragment()) + .replace(R.id.fragment_setting, preferenceFragment) .commit() binding.toolbar.apply { setTitle(R.string.text_settings) @@ -26,6 +29,17 @@ class SettingsActivity : AppCompatActivity() { supportActionBar?.setDisplayHomeAsUpEnabled(true) } + override fun onResume() { + super.onResume() + findPreference(R.string.key_all_files_access)?.sync() + findPreference(R.string.key_display_over_other_apps)?.sync() + findPreference(R.string.key_post_notifications_permission)?.sync() + } + + private fun findPreference(keyRes: Int): ThemeColorPermissionSwitchPreference? { + return preferenceFragment.findPreference(getString(keyRes)) + } + class PreferenceFragment : androidx.preference.PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.preference_inrt) diff --git a/app/src/main/java/org/autojs/autojs/inrt/SplashActivity.kt b/app/src/main/java/org/autojs/autojs/inrt/SplashActivity.kt index beb0eacc..485ac302 100644 --- a/app/src/main/java/org/autojs/autojs/inrt/SplashActivity.kt +++ b/app/src/main/java/org/autojs/autojs/inrt/SplashActivity.kt @@ -1,22 +1,24 @@ package org.autojs.autojs.inrt -import android.Manifest +import android.Manifest.permission.WRITE_EXTERNAL_STORAGE import android.annotation.SuppressLint import android.content.Intent import android.content.pm.PackageManager.PERMISSION_DENIED import android.graphics.Typeface import android.os.Bundle -import android.os.Handler -import android.os.Looper import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.autojs.autojs.inrt.autojs.AutoJs import org.autojs.autojs.inrt.launch.GlobalProjectLauncher import org.autojs.autojs.project.ProjectConfig import org.autojs.autojs.ui.splash.SplashActivity.Companion.INIT_TIMEOUT import org.autojs.autojs6.databinding.ActivitySplashInrtBinding -import kotlin.concurrent.thread /** * Created by Stardust on Feb 2, 2018. @@ -28,42 +30,40 @@ class SplashActivity : AppCompatActivity() { val binding = ActivitySplashInrtBinding.inflate(layoutInflater).apply { setContentView(root) } - val handler = Handler(Looper.myLooper()!!) val projectConfig = ProjectConfig.fromAssets(this, ProjectConfig.configFileOfDir("project")) var timeout = INIT_TIMEOUT - if (!projectConfig.launchConfig.isSplashVisible) { - timeout = 0L - } else { - handler.post { - binding.slug.typeface = Typeface.createFromAsset(assets, "roboto_medium.ttf") - binding.slug.isVisible = true - binding.icon.isVisible = true + when { + !projectConfig.launchConfig.isSplashVisible -> { + timeout = 0L + } + else -> { + CoroutineScope(Dispatchers.Main).launch { + binding.slug.typeface = Typeface.createFromAsset(assets, "roboto_medium.ttf") + binding.slug.isVisible = true + binding.icon.isVisible = true + } } } - - if (!Pref.isFirstUsing) { - main() - } else { - handler.postDelayed({ this@SplashActivity.main() }, timeout) + CoroutineScope(Dispatchers.Main).launch { + if (timeout > 0 && Pref.isFirstUsing) { + delay(timeout) + } + checkPermission(WRITE_EXTERNAL_STORAGE) } - super.onCreate(savedInstanceState) } - private fun main() { - checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) - } - private fun runScript() { - thread(true) { + CoroutineScope(Dispatchers.IO).launch { + val context = this@SplashActivity try { - GlobalProjectLauncher.launch(this) + GlobalProjectLauncher.launch(context) } catch (e: Exception) { e.printStackTrace() - runOnUiThread { - Toast.makeText(this@SplashActivity, e.message, Toast.LENGTH_LONG).show() - startActivity(Intent(this@SplashActivity, LogActivity::class.java)) + withContext(Dispatchers.Main) { + Toast.makeText(context, e.message, Toast.LENGTH_LONG).show() + startActivity(Intent(context, LogActivity::class.java)) AutoJs.instance.globalConsole.printAllStackTrace(e) } } @@ -84,11 +84,10 @@ class SplashActivity : AppCompatActivity() { } } - private fun getRequestPermissions(permissions: Array) = ArrayList() - .let { list -> - permissions.filterTo(list) { checkSelfPermission(it) == PERMISSION_DENIED } - list.toTypedArray() - } + private fun getRequestPermissions(permissions: Array) = ArrayList().let { list -> + permissions.filterTo(list) { checkSelfPermission(it) == PERMISSION_DENIED } + list.toTypedArray() + } companion object { diff --git a/app/src/main/java/org/autojs/autojs/inrt/theme/preference/DisplayOverOtherAppsPermissionSwitchPreference.kt b/app/src/main/java/org/autojs/autojs/inrt/theme/preference/DisplayOverOtherAppsPermissionSwitchPreference.kt new file mode 100644 index 00000000..c7bc5cc6 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/inrt/theme/preference/DisplayOverOtherAppsPermissionSwitchPreference.kt @@ -0,0 +1,26 @@ +package org.autojs.autojs.inrt.theme.preference + +import android.content.Context +import android.util.AttributeSet +import org.autojs.autojs.permission.DisplayOverOtherAppsPermission +import org.autojs.autojs.theme.preference.ThemeColorPermissionSwitchPreference + +class DisplayOverOtherAppsPermissionSwitchPreference : ThemeColorPermissionSwitchPreference { + + val perm by lazy { DisplayOverOtherAppsPermission(context) } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + constructor(context: Context) : super(context) + + override fun has() = perm.has() + + override fun request() = perm.request() + + override fun revoke() = perm.revoke() + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/inrt/theme/preference/ManageAllFilesPermissionSwitchPreference.kt b/app/src/main/java/org/autojs/autojs/inrt/theme/preference/ManageAllFilesPermissionSwitchPreference.kt new file mode 100644 index 00000000..2e215fbe --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/inrt/theme/preference/ManageAllFilesPermissionSwitchPreference.kt @@ -0,0 +1,26 @@ +package org.autojs.autojs.inrt.theme.preference + +import android.content.Context +import android.util.AttributeSet +import org.autojs.autojs.permission.ManageAllFilesPermission +import org.autojs.autojs.theme.preference.ThemeColorPermissionSwitchPreference + +class ManageAllFilesPermissionSwitchPreference : ThemeColorPermissionSwitchPreference { + + val perm by lazy { ManageAllFilesPermission(context) } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + constructor(context: Context) : super(context) + + override fun has() = perm.has() + + override fun request() = perm.request() + + override fun revoke() = perm.revoke() + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/inrt/theme/preference/PostNotificationsPermissionSwitchPreference.kt b/app/src/main/java/org/autojs/autojs/inrt/theme/preference/PostNotificationsPermissionSwitchPreference.kt new file mode 100644 index 00000000..73377f01 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/inrt/theme/preference/PostNotificationsPermissionSwitchPreference.kt @@ -0,0 +1,26 @@ +package org.autojs.autojs.inrt.theme.preference + +import android.content.Context +import android.util.AttributeSet +import org.autojs.autojs.permission.PostNotificationsPermission +import org.autojs.autojs.theme.preference.ThemeColorPermissionSwitchPreference + +class PostNotificationsPermissionSwitchPreference : ThemeColorPermissionSwitchPreference { + + val perm by lazy { PostNotificationsPermission(context) } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + constructor(context: Context) : super(context) + + override fun has() = perm.has() + + override fun request() = perm.request() + + override fun revoke() = perm.revoke() + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/permission/PostNotificationPermission.kt b/app/src/main/java/org/autojs/autojs/permission/PostNotificationsPermission.kt similarity index 67% rename from app/src/main/java/org/autojs/autojs/permission/PostNotificationPermission.kt rename to app/src/main/java/org/autojs/autojs/permission/PostNotificationsPermission.kt index 42d9c1be..352451ed 100644 --- a/app/src/main/java/org/autojs/autojs/permission/PostNotificationPermission.kt +++ b/app/src/main/java/org/autojs/autojs/permission/PostNotificationsPermission.kt @@ -2,8 +2,9 @@ package org.autojs.autojs.permission import android.content.Context import android.os.Build +import androidx.fragment.app.FragmentActivity import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.ui.main.MainActivity +import org.autojs.autojs.runtime.api.Permissions import org.autojs.autojs.ui.main.drawer.PermissionItemHelper import org.autojs.autojs.util.NotificationUtils import org.autojs.autojs6.R @@ -11,7 +12,7 @@ import org.autojs.autojs6.R /** * Created by SuperMonster003 on May 4, 2023. */ -class PostNotificationPermission(override val context: Context) : PermissionItemHelper, AbleToUrge { +class PostNotificationsPermission(override val context: Context) : PermissionItemHelper, AbleToUrge { override fun has() = NotificationUtils.isEnabled() @@ -23,9 +24,11 @@ class PostNotificationPermission(override val context: Context) : PermissionItem override fun urge() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - (context as? MainActivity) - ?.requestMultiplePermissionsLauncher - ?.let { NotificationUtils.requestPermission(it) } + when (val ctx = context) { + is FragmentActivity -> Permissions.getRequestMultiplePermissionsLauncher(ctx).let { + NotificationUtils.requestPermission(it) + } + } } } diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/Permissions.kt b/app/src/main/java/org/autojs/autojs/runtime/api/Permissions.kt index 881c5cc3..6e0784d6 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/Permissions.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/Permissions.kt @@ -1,8 +1,15 @@ package org.autojs.autojs.runtime.api +import android.Manifest import android.content.Context import android.content.Intent +import android.util.Log +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions +import androidx.fragment.app.FragmentActivity +import org.autojs.autojs.core.pref.Pref import org.autojs.autojs.util.RomUtils +import org.autojs.autojs6.R class Permissions(private val context: Context) { @@ -46,4 +53,20 @@ class Permissions(private val context: Context) { /* permissions.writeSecuritySettings */ /* permissions.projectMediaAccess */ + companion object { + + private val TAG = Permissions::class.java.simpleName + + @JvmStatic + fun getRequestMultiplePermissionsLauncher(activity: FragmentActivity): ActivityResultLauncher> = activity.registerForActivityResult(RequestMultiplePermissions()) { + it.forEach { (key: String, isGranted: Boolean) -> + Log.d(TAG, "$key: $isGranted") + if (key == Manifest.permission.POST_NOTIFICATIONS) { + Pref.putBoolean(R.string.key_post_notification_permission_requested, true) + } + } + } + + } + } diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/WrappedShizuku.kt b/app/src/main/java/org/autojs/autojs/runtime/api/WrappedShizuku.kt index dce87bb7..2ebf42b5 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/WrappedShizuku.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/WrappedShizuku.kt @@ -7,6 +7,7 @@ import android.content.ServiceConnection import android.content.pm.PackageManager import android.os.IBinder import android.util.Log +import org.autojs.autojs.AbstractAutoJs.Companion.isInrt import org.autojs.autojs.App import org.autojs.autojs.annotation.ScriptInterface import org.autojs.autojs.app.GlobalAppContext @@ -14,7 +15,6 @@ import org.autojs.autojs.core.shizuku.IUserService import org.autojs.autojs.core.shizuku.UserService import org.autojs.autojs.util.App.SHIZUKU import org.autojs.autojs.util.ViewUtils -import org.autojs.autojs6.BuildConfig import org.autojs.autojs6.R import rikka.shizuku.Shizuku import java.util.concurrent.CountDownLatch @@ -32,7 +32,7 @@ object WrappedShizuku { private val TAG: String = WrappedShizuku::class.java.simpleName private val mRequestCode = when { - BuildConfig.isInrt -> "shizuku-request-code-inrt".hashCode() + isInrt -> "shizuku-request-code-inrt".hashCode() else -> "shizuku-request-code".hashCode() } private var mHasBinder = false diff --git a/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt b/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt index 3f39ed53..2a0ad6e6 100644 --- a/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt +++ b/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.content.Context import android.graphics.Paint import android.view.View +import org.autojs.autojs.AbstractAutoJs.Companion.isInrt import org.autojs.autojs.util.ColorUtils import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R @@ -16,7 +17,10 @@ import java.util.* object ThemeColorManager { @JvmField - var defaultThemeColor = ThemeColor(ColorUtils.fromResources(R.color.theme_color_default)) + var defaultThemeColor = when { + isInrt -> R.color.md_blue_gray_900 + else -> R.color.theme_color_default + }.let { ThemeColor(ColorUtils.fromResources(it)) } @JvmStatic lateinit var currentThemeColor: ThemeColor diff --git a/app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorPermissionSwitchPreference.kt b/app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorPermissionSwitchPreference.kt new file mode 100644 index 00000000..ec28cba5 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorPermissionSwitchPreference.kt @@ -0,0 +1,32 @@ +package org.autojs.autojs.theme.preference + +import android.content.Context +import android.util.AttributeSet + +abstract class ThemeColorPermissionSwitchPreference : ThemeColorSwitchPreference { + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + constructor(context: Context) : super(context) + + fun sync() { + isChecked = has() + } + + abstract fun has(): Boolean + + abstract fun request(): Boolean + + abstract fun revoke(): Boolean + + override fun onClick() = toggle() + + private fun toggle() { + if (isChecked) revoke() else request() + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorSwitchPreference.kt b/app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorSwitchPreference.kt index ce24b0ac..2bfe331d 100644 --- a/app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorSwitchPreference.kt +++ b/app/src/main/java/org/autojs/autojs/theme/preference/ThemeColorSwitchPreference.kt @@ -20,7 +20,7 @@ import org.autojs.autojs6.R /** * Created by Stardust on Mar 5, 2017. */ -class ThemeColorSwitchPreference : SwitchPreference, ThemeColorMutable, LongClickablePreferenceLike { +open class ThemeColorSwitchPreference : SwitchPreference, ThemeColorMutable, LongClickablePreferenceLike { private var mCheckableView: View? = null private var mColor = Color.TRANSPARENT @@ -81,10 +81,10 @@ class ThemeColorSwitchPreference : SwitchPreference, ThemeColorMutable, LongClic } } - private fun obtainStyledAttrs(context: Context, set: AttributeSet?, styleableRes: IntArray, defStyleAttr: Int, defStyleRes: Int): TypedArray { + protected fun obtainStyledAttrs(context: Context, set: AttributeSet?, styleableRes: IntArray, defStyleAttr: Int, defStyleRes: Int): TypedArray { return context.obtainStyledAttributes(set, styleableRes, defStyleAttr, defStyleRes) } - private fun getAttrString(a: TypedArray, index: Int): String? = a.getString(index) + protected fun getAttrString(a: TypedArray, index: Int): String? = a.getString(index) } \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt index 282a2f02..4335b5ce 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt @@ -9,12 +9,10 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.os.Process -import android.util.Log import android.view.Gravity import android.view.Menu import android.view.MenuItem import android.view.View -import androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.widget.SearchView import androidx.drawerlayout.widget.DrawerLayout @@ -40,7 +38,7 @@ import org.autojs.autojs.event.BackPressedHandler.HostActivity import org.autojs.autojs.model.explorer.Explorers import org.autojs.autojs.permission.DisplayOverOtherAppsPermission import org.autojs.autojs.permission.ManageAllFilesPermission -import org.autojs.autojs.permission.PostNotificationPermission +import org.autojs.autojs.permission.PostNotificationsPermission import org.autojs.autojs.runtime.api.WrappedShizuku import org.autojs.autojs.service.ForegroundService import org.autojs.autojs.theme.ThemeColorManager @@ -120,15 +118,6 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { return -1 } - val requestMultiplePermissionsLauncher = registerForActivityResult(RequestMultiplePermissions()) { - it.forEach { (key: String, isGranted: Boolean) -> - Log.d(TAG, "$key: $isGranted") - if (key == Manifest.permission.POST_NOTIFICATIONS) { - Pref.putBoolean(R.string.key_post_notification_permission_requested, true) - } - } - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -156,7 +145,7 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { FloatyWindowManger.refreshCircularMenuIfNeeded(this) - PostNotificationPermission(this).urgeIfNeeded() + PostNotificationsPermission(this).urgeIfNeeded() ManageAllFilesPermission(this).urgeIfNeeded() DisplayOverOtherAppsPermission(this).urgeIfNeeded() } @@ -453,7 +442,6 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { companion object { - private val TAG = MainActivity::class.java.simpleName private var sIsActionBarDrawerOpened = false var shouldRecreateMainActivity = false diff --git a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt index 3b17ad9c..04ea353f 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt @@ -19,7 +19,7 @@ import org.autojs.autojs.core.pref.Pref import org.autojs.autojs.permission.DisplayOverOtherAppsPermission import org.autojs.autojs.permission.IgnoreBatteryOptimizationsPermission import org.autojs.autojs.permission.MediaProjectionPermission -import org.autojs.autojs.permission.PostNotificationPermission +import org.autojs.autojs.permission.PostNotificationsPermission import org.autojs.autojs.permission.ShizukuPermission import org.autojs.autojs.permission.UsageStatsPermission import org.autojs.autojs.permission.WriteSecureSettingsPermission @@ -221,7 +221,7 @@ open class DrawerFragment : Fragment() { } mNotificationPostItem = DrawerMenuToggleableItem( - PostNotificationPermission(mContext), + PostNotificationsPermission(mContext), R.drawable.ic_ali_notification, R.string.text_post_notifications_permission, ) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index a70a12ad..54e76da7 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -956,5 +956,12 @@ اكتب إعدادات الأمان إعدادات النظام الآمنة ، التي تحتوي على تفضيلات النظام التي يمكن أن تقرأها التطبيقات ولكن لا يُسمح لها بالكتابة.\nهذه هي لتفضيلات يجب على المستخدم تعديلها بشكل صريح من خلال واجهة المستخدم لتطبيق النظام.\nمع إذن إعدادات النظام الآمن ، يمكن للتطبيقات العادية تعديل الإعدادات الآمنة مباشرة (مثل خدمة إمكانية الوصول). كتابة إعدادات النظام + أذونات خاصة + يسمح لـ AutoJs6 بالوصول إلى جميع الملفات، بما في ذلك الملفات الموجودة على التخزين الخارجي + يسمح لـ AutoJs6 بعرض المحتوى فوق التطبيقات الأخرى + يسمح لـ AutoJs6 بإنشاء وإرسال الإشعارات + السماح للتطبيق بالوصول إلى جميع الملفات، بما في ذلك التخزين الخارجي + السماح للتطبيق بعرض المحتوى فوق التطبيقات الأخرى + السماح للتطبيق بإنشاء وإرسال الإشعارات diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index a4ffb1af..3c8c093c 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -952,5 +952,12 @@ All histories below will be cleared\n\n[ %1$s ]\n\nAre you sure to clear them all? All histories below will be cleared\n\n[ All color libraries ]\n\nAre you sure to clear them all? All histories + Special permissions + Allows AutoJs6 to access all files, including those in external storage + Allows AutoJs6 to display content over other apps + Allows AutoJs6 to create and post notifications + Allow the application to access all files, including external storage + Allow the application to display content over other apps + Allow the application to create and send notifications diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 042c447f..16a61d0c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -955,5 +955,12 @@ Escribir la configuración de seguridad Ajustes de seguridad del sistema, que contienen preferencias del sistema que las aplicaciones pueden leer pero no pueden escribir.\nSe trata de preferencias que el usuario debe modificar explícitamente a través de la interfaz de usuario de una aplicación del sistema.\nCon el permiso de configuración segura del sistema, las aplicaciones normales pueden modificar directamente la configuración segura (como el servicio de accesibilidad). Escribir la configuración del sistema + Permisos especiales + Permite que AutoJs6 acceda a todos los archivos, incluidos los del almacenamiento externo + Permite que AutoJs6 muestre contenido encima de otras aplicaciones + Permite que AutoJs6 cree y envíe notificaciones + Permitir que la aplicación acceda a todos los archivos, incluido el almacenamiento externo + Permitir que la aplicación muestre contenido sobre otras aplicaciones + Permitir que la aplicación cree y envíe notificaciones diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 233fdc75..e4399a7f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -955,5 +955,12 @@ Écrire les paramètres de sécurité. Paramètres de sécurité du système, contenant les préférences du système que les applications peuvent lire mais ne sont pas autorisées à écrire.\nIl s\'agit des préférences que l\'utilisateur doit explicitement modifier par le biais de l\'interface utilisateur d\'une application système.\nAvec l\'autorisation de paramètres de sécurité du système, les applications normales peuvent directement modifier les paramètres de sécurité (comme le service d\'accessibilité). Écrire les paramètres système + Autorisations spéciales + Permet à AutoJs6 d\'accéder à tous les fichiers, y compris ceux du stockage externe + Permet à AutoJs6 d\'afficher du contenu au-dessus d\'autres applications + Permet à AutoJs6 de créer et d\'envoyer des notifications + Autoriser l\'application à accéder à tous les fichiers, y compris le stockage externe + Autoriser l\'application à afficher du contenu par-dessus d\'autres applications + Autoriser l\'application à créer et envoyer des notifications diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 34196f75..ee27f3d2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -955,5 +955,12 @@ セキュリティ設定の書き込み アプリケーションが読み取ることはできるが, 書き込むことはできないシステム環境設定を含む, 安全なシステム設定です.\nこれは, ユーザーがシステムアプリの UI を通じて明示的に変更する必要がある環境設定のためのものです.\nセキュアなシステム設定を許可すると, 通常のアプリケーションはセキュアな設定 (アクセシビリティサービスなど) を直接変更できるようになります システム設定の書き込み + 特殊な権限 + AutoJs6 が外部ストレージを含むすべてのファイルにアクセスすることを許可します + AutoJs6 が他のアプリの上にコンテンツを表示することを許可します + AutoJs6 が通知を作成して送信することを許可します + アプリが外部ストレージを含むすべてのファイルにアクセスすることを許可する + アプリが他のアプリの上にコンテンツを表示することを許可する + アプリが通知を作成して送信することを許可する diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index e4d65b38..859b3ae6 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -956,5 +956,12 @@ 보안 설정을 작성하십시오 애플리케이션이 읽을 수 있지만 쓸 수없는 시스템 환경 설정을 포함하는 보안 시스템 설정.\n이들은 사용자가 시스템 앱의 UI 를 통해 명시 적으로 수정 해야하는 선호도입니다.\n보안 시스템 설정 권한을 사용하면 일반 애플리케이션이 보안 설정 (예: 접근성 서비스)을 직접 수정할 수 있습니다. 시스템 설정을 작성하십시오 + 특수 권한 + AutoJs6 가 외부 저장소를 포함한 모든 파일에 접근할 수 있도록 허용합니다 + AutoJs6 가 다른 애플리케이션 위에 콘텐츠를 표시할 수 있도록 허용합니다 + AutoJs6 가 알림을 생성하고 보낼 수 있도록 허용합니다 + 앱이 외부 저장소를 포함한 모든 파일에 접근할 수 있도록 허용합니다 + 앱이 다른 애플리케이션 위에 콘텐츠를 표시할 수 있도록 허용합니다 + 앱이 알림을 생성하고 보낼 수 있도록 허용합니다 diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 41f3f402..51abbc56 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -955,5 +955,12 @@ Параметры безопасности записи Настройки безопасности системы, содержащие системные предпочтения, которые приложения могут читать, но не имеют права записывать.\nОни предназначены для параметров, которые пользователь должен явно изменить через пользовательский интерфейс системного приложения.\nПри наличии разрешения на безопасные системные настройки обычные приложения могут напрямую изменять безопасные настройки (например, служба доступности). Запись системных настроек + Специальные разрешения + Позволяет AutoJs6 получать доступ ко всем файлам, включая файлы на внешнем хранилище + Позволяет AutoJs6 отображать контент поверх других приложений + Позволяет AutoJs6 создавать и отправлять уведомления + Разрешить приложению доступ ко всем файлам, включая внешнее хранилище + Разрешить приложению отображать контент поверх других приложений + Разрешить приложению создавать и отправлять уведомления diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 385b1511..1f39ffef 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -953,5 +953,12 @@ 修改安全設置 安全設置包含應用程序可讀但不可寫入的設置選項, 這些選項只能由 UI 或系統級別應用修改.\n被授予 \"修改安全設置權限\" 後, 普通應用可直接修改上述安全設置 (例如無障礙服務). 修改系統設置 + 特殊權限 + 允許 AutoJs6 訪問所有文件, 包括外部存儲 + 允許 AutoJs6 在其他應用之上顯示內容 + 允許 AutoJs6 創建併發送通知 + 允許應用訪問所有文件, 包括外部存儲 + 允許應用在其他應用之上顯示內容 + 允許應用創建併發送通知 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index adffaa40..67e5fa67 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -953,5 +953,12 @@ 修改安全設定 安全設定包含應用程式可讀但不可寫入的設定選項, 這些選項只能由 UI 或系統級別應用修改.\n被授予 \"修改安全設定許可權\" 後, 普通應用可直接修改上述安全設定 (例如無障礙服務). 修改系統設定 + 特殊許可權 + 允許 AutoJs6 訪問所有檔案, 包括外部儲存 + 允許 AutoJs6 在其他應用之上顯示內容 + 允許 AutoJs6 建立併發送通知 + 允許應用訪問所有檔案, 包括外部儲存 + 允許應用在其他應用之上顯示內容 + 允許應用建立併發送通知 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index cd8c1efb..8e10faf5 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -950,5 +950,12 @@ 修改安全设置 安全设置包含应用程序可读但不可写入的设置选项, 这些选项只能由 UI 或系统级别应用修改.\n被授予 \"修改安全设置权限\" 后, 普通应用可直接修改上述安全设置 (例如无障碍服务). 修改系统设置 + 特殊权限 + 允许 AutoJs6 访问所有文件, 包括外部存储 + 允许 AutoJs6 在其他应用之上显示内容 + 允许 AutoJs6 创建并发送通知 + 允许应用访问所有文件, 包括外部存储 + 允许应用在其他应用之上显示内容 + 允许应用创建并发送通知 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c2ac744c..546f1d81 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1197,5 +1197,15 @@ All histories below will be cleared\n\n[ %1$s ]\n\nAre you sure to clear them all? All histories below will be cleared\n\n[ All color libraries ]\n\nAre you sure to clear them all? All histories + Special permissions + key_$_post_notifications_permission + key_$_display_over_other_apps + key_$_all_files_access + Allows AutoJs6 to access all files, including those in external storage + Allows AutoJs6 to display content over other apps + Allows AutoJs6 to create and post notifications + Allow the application to access all files, including external storage + Allow the application to display content over other apps + Allow the application to create and send notifications diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 84e1dae6..f888873d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -38,9 +38,9 @@ @color/md_black_1000 -