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
-