6.6.2 - Alpha6 - 打包应用设置页面增加访问所有文件和发送通知等特殊权限开关 (#354)

This commit is contained in:
SuperMonster003
2025-04-13 14:11:06 +08:00
parent 99b8f34137
commit bd02228600
48 changed files with 372 additions and 123 deletions

View File

@@ -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)_",
"控件的文字及图标根据主题色亮度值自动切换合适的颜色",
"部分控件主题色与背景色对比度过低时的视觉体验",
"应用内页面导航栏设置为透明或半透明以增强视觉体验",

View File

@@ -376,7 +376,7 @@ SDK Tools (أدوات SDK) (في النافذة اليمنى)
يعتمد مشروع AutoJs6 على إصدار `JDK (مجموعة تطوير جافا)` بإصدار لا يقل عن `17`، ولكن يفضل الإصدار الذي لا يقل عن `19`.
اعتبارًا من 12 April 2025، الإصدار الأقصى المدعوم من JDK لمشروع AutoJs6 هو `24`.
اعتبارًا من 13 April 2025، الإصدار الأقصى المدعوم من JDK لمشروع AutoJs6 هو `24`.
> ملاحظة: إذا كان نظام الكمبيوتر يحتوي على JDK والإصدار يفي بالمتطلبات المذكورة أعلاه، فيمكنك تخطي هذا القسم.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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がインストールされている場合, この節の内容をスキップできます.

View File

@@ -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가 설치되어 있고, 버전이 위의 요구 사항을 충족하는 경우, 이 섹션을 건너뛸 수 있습니다.

View File

@@ -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 и версия соответствует указанным требованиям, этот раздел можно пропустить.

View File

@@ -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 且版本满足上述要求, 则可跳过此小节内容.

View File

@@ -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 且版本滿足上述要求, 則可跳過此小節內容.

View File

@@ -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 且版本滿足上述要求, 則可跳過此小節內容.

View File

@@ -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 且版本满足上述要求, 则可跳过此小节内容.

View File

@@ -649,11 +649,11 @@
<activity
android:name="org.autojs.autojs.inrt.LogActivity"
android:theme="@style/AppTheme.LogActivityInrt" />
android:theme="@style/AppTheme.NoActionBarInrt" />
<activity
android:name="org.autojs.autojs.inrt.SettingsActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
android:theme="@style/AppTheme.NoActionBarInrt" />
<!-- This provider is required by Shizuku, remove this if your app only supports Sui -->
<provider

View File

@@ -6,7 +6,7 @@
# v6.6.2
###### 2025/04/12
###### 2025/04/13
* `新增` ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法
* `新增` images.flip 方法, 用于图像翻转 _[`issue #349`](http://issues.autojs6.com/349)_
@@ -31,6 +31,7 @@
* `优化` 精简打包应用模板 APK 文件大小
* `优化` 打包页面支持 Pinyin 库选项
* `优化` 打包应用主活动页面优化状态栏背景及文字颜色
* `优化` 打包应用设置页面增加访问所有文件和发送通知等特殊权限开关 _[`issue #354`](http://issues.autojs6.com/354)_
* `优化` 控件的文字及图标根据主题色亮度值自动切换合适的颜色
* `优化` 部分控件主题色与背景色对比度过低时的视觉体验
* `优化` 应用内页面导航栏设置为透明或半透明以增强视觉体验

View File

@@ -6,7 +6,7 @@
# v6.6.2
###### 2025/04/12
###### 2025/04/13
* `新增` ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法
* `新增` images.flip 方法, 用于图像翻转 _[`issue #349`](http://issues.autojs6.com/349)_
@@ -31,6 +31,7 @@
* `优化` 精简打包应用模板 APK 文件大小
* `优化` 打包页面支持 Pinyin 库选项
* `优化` 打包应用主活动页面优化状态栏背景及文字颜色
* `优化` 打包应用设置页面增加访问所有文件和发送通知等特殊权限开关 _[`issue #354`](http://issues.autojs6.com/354)_
* `优化` 控件的文字及图标根据主题色亮度值自动切换合适的颜色
* `优化` 部分控件主题色与背景色对比度过低时的视觉体验
* `优化` 应用内页面导航栏设置为透明或半透明以增强视觉体验

View File

@@ -3,7 +3,6 @@ package org.autojs.autojs
import android.app.Activity
import android.app.Application
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.view.WindowManager
import com.benjaminwan.ocrlibrary.OcrEngine
@@ -59,7 +58,7 @@ abstract class AbstractAutoJs protected constructor(val application: Application
val scriptEngineManager = ScriptEngineManager(applicationContext)
scriptEngineManager.registerEngine(JavaScriptSource.ENGINE) {
val rt = createRuntime()
when (BuildConfig.isInrt) {
when (isInrt) {
true -> 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
}
}

View File

@@ -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)
}

View File

@@ -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)) {

View File

@@ -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;

View File

@@ -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() {

View File

@@ -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)

View File

@@ -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)

View File

@@ -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<out String>) = ArrayList<String>()
.let { list ->
permissions.filterTo(list) { checkSelfPermission(it) == PERMISSION_DENIED }
list.toTypedArray()
}
private fun getRequestPermissions(permissions: Array<out String>) = ArrayList<String>().let { list ->
permissions.filterTo(list) { checkSelfPermission(it) == PERMISSION_DENIED }
list.toTypedArray()
}
companion object {

View File

@@ -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()
}

View File

@@ -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()
}

View File

@@ -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()
}

View File

@@ -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)
}
}
}
}

View File

@@ -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<Array<String>> = 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)
}
}
}
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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()
}
}

View File

@@ -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)
}

View File

@@ -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

View File

@@ -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,
)

View File

@@ -956,5 +956,12 @@
<string name="text_write_secure_settings">اكتب إعدادات الأمان</string>
<string name="text_write_secure_settings_description">إعدادات النظام الآمنة ، التي تحتوي على تفضيلات النظام التي يمكن أن تقرأها التطبيقات ولكن لا يُسمح لها بالكتابة.\nهذه هي لتفضيلات يجب على المستخدم تعديلها بشكل صريح من خلال واجهة المستخدم لتطبيق النظام.\nمع إذن إعدادات النظام الآمن ، يمكن للتطبيقات العادية تعديل الإعدادات الآمنة مباشرة (مثل خدمة إمكانية الوصول).</string>
<string name="text_write_system_settings">كتابة إعدادات النظام</string>
<string name="text_special_permissions">أذونات خاصة</string>
<string name="summary_all_files_access">يسمح لـ AutoJs6 بالوصول إلى جميع الملفات، بما في ذلك الملفات الموجودة على التخزين الخارجي</string>
<string name="summary_display_over_other_apps">يسمح لـ AutoJs6 بعرض المحتوى فوق التطبيقات الأخرى</string>
<string name="summary_post_notifications_permission">يسمح لـ AutoJs6 بإنشاء وإرسال الإشعارات</string>
<string name="summary_all_files_access_inrt">السماح للتطبيق بالوصول إلى جميع الملفات، بما في ذلك التخزين الخارجي</string>
<string name="summary_display_over_other_apps_inrt">السماح للتطبيق بعرض المحتوى فوق التطبيقات الأخرى</string>
<string name="summary_post_notifications_permission_inrt">السماح للتطبيق بإنشاء وإرسال الإشعارات</string>
</resources>

View File

@@ -952,5 +952,12 @@
<string name="text_confirm_to_clear_histories_of">All histories below will be cleared\n\n[ %1$s ]\n\nAre you sure to clear them all?</string>
<string name="text_confirm_to_clear_histories_of_all_color_libraries">All histories below will be cleared\n\n[ All color libraries ]\n\nAre you sure to clear them all?</string>
<string name="text_all_histories">All histories</string>
<string name="text_special_permissions">Special permissions</string>
<string name="summary_all_files_access">Allows AutoJs6 to access all files, including those in external storage</string>
<string name="summary_display_over_other_apps">Allows AutoJs6 to display content over other apps</string>
<string name="summary_post_notifications_permission">Allows AutoJs6 to create and post notifications</string>
<string name="summary_all_files_access_inrt">Allow the application to access all files, including external storage</string>
<string name="summary_display_over_other_apps_inrt">Allow the application to display content over other apps</string>
<string name="summary_post_notifications_permission_inrt">Allow the application to create and send notifications</string>
</resources>

View File

@@ -955,5 +955,12 @@
<string name="text_write_secure_settings">Escribir la configuración de seguridad</string>
<string name="text_write_secure_settings_description">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).</string>
<string name="text_write_system_settings">Escribir la configuración del sistema</string>
<string name="text_special_permissions">Permisos especiales</string>
<string name="summary_all_files_access">Permite que AutoJs6 acceda a todos los archivos, incluidos los del almacenamiento externo</string>
<string name="summary_display_over_other_apps">Permite que AutoJs6 muestre contenido encima de otras aplicaciones</string>
<string name="summary_post_notifications_permission">Permite que AutoJs6 cree y envíe notificaciones</string>
<string name="summary_all_files_access_inrt">Permitir que la aplicación acceda a todos los archivos, incluido el almacenamiento externo</string>
<string name="summary_display_over_other_apps_inrt">Permitir que la aplicación muestre contenido sobre otras aplicaciones</string>
<string name="summary_post_notifications_permission_inrt">Permitir que la aplicación cree y envíe notificaciones</string>
</resources>

View File

@@ -955,5 +955,12 @@
<string name="text_write_secure_settings">Écrire les paramètres de sécurité</string>.
<string name="text_write_secure_settings_description">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é).</string>
<string name="text_write_system_settings">Écrire les paramètres système</string>
<string name="text_special_permissions">Autorisations spéciales</string>
<string name="summary_all_files_access">Permet à AutoJs6 d\'accéder à tous les fichiers, y compris ceux du stockage externe</string>
<string name="summary_display_over_other_apps">Permet à AutoJs6 d\'afficher du contenu au-dessus d\'autres applications</string>
<string name="summary_post_notifications_permission">Permet à AutoJs6 de créer et d\'envoyer des notifications</string>
<string name="summary_all_files_access_inrt">Autoriser l\'application à accéder à tous les fichiers, y compris le stockage externe</string>
<string name="summary_display_over_other_apps_inrt">Autoriser l\'application à afficher du contenu par-dessus d\'autres applications</string>
<string name="summary_post_notifications_permission_inrt">Autoriser l\'application à créer et envoyer des notifications</string>
</resources>

View File

@@ -955,5 +955,12 @@
<string name="text_write_secure_settings">セキュリティ設定の書き込み</string>
<string name="text_write_secure_settings_description">アプリケーションが読み取ることはできるが, 書き込むことはできないシステム環境設定を含む, 安全なシステム設定です.\nこれは, ユーザーがシステムアプリの UI を通じて明示的に変更する必要がある環境設定のためのものです.\nセキュアなシステム設定を許可すると, 通常のアプリケーションはセキュアな設定 (アクセシビリティサービスなど) を直接変更できるようになります</string>
<string name="text_write_system_settings">システム設定の書き込み</string>
<string name="text_special_permissions">特殊な権限</string>
<string name="summary_all_files_access">AutoJs6 が外部ストレージを含むすべてのファイルにアクセスすることを許可します</string>
<string name="summary_display_over_other_apps">AutoJs6 が他のアプリの上にコンテンツを表示することを許可します</string>
<string name="summary_post_notifications_permission">AutoJs6 が通知を作成して送信することを許可します</string>
<string name="summary_all_files_access_inrt">アプリが外部ストレージを含むすべてのファイルにアクセスすることを許可する</string>
<string name="summary_display_over_other_apps_inrt">アプリが他のアプリの上にコンテンツを表示することを許可する</string>
<string name="summary_post_notifications_permission_inrt">アプリが通知を作成して送信することを許可する</string>
</resources>

View File

@@ -956,5 +956,12 @@
<string name="text_write_secure_settings">보안 설정을 작성하십시오</string>
<string name="text_write_secure_settings_description">애플리케이션이 읽을 수 있지만 쓸 수없는 시스템 환경 설정을 포함하는 보안 시스템 설정.\n이들은 사용자가 시스템 앱의 UI 를 통해 명시 적으로 수정 해야하는 선호도입니다.\n보안 시스템 설정 권한을 사용하면 일반 애플리케이션이 보안 설정 (예: 접근성 서비스)을 직접 수정할 수 있습니다.</string>
<string name="text_write_system_settings">시스템 설정을 작성하십시오</string>
<string name="text_special_permissions">특수 권한</string>
<string name="summary_all_files_access">AutoJs6 가 외부 저장소를 포함한 모든 파일에 접근할 수 있도록 허용합니다</string>
<string name="summary_display_over_other_apps">AutoJs6 가 다른 애플리케이션 위에 콘텐츠를 표시할 수 있도록 허용합니다</string>
<string name="summary_post_notifications_permission">AutoJs6 가 알림을 생성하고 보낼 수 있도록 허용합니다</string>
<string name="summary_all_files_access_inrt">앱이 외부 저장소를 포함한 모든 파일에 접근할 수 있도록 허용합니다</string>
<string name="summary_display_over_other_apps_inrt">앱이 다른 애플리케이션 위에 콘텐츠를 표시할 수 있도록 허용합니다</string>
<string name="summary_post_notifications_permission_inrt">앱이 알림을 생성하고 보낼 수 있도록 허용합니다</string>
</resources>

View File

@@ -955,5 +955,12 @@
<string name="text_write_secure_settings">Параметры безопасности записи</string>
<string name="text_write_secure_settings_description">Настройки безопасности системы, содержащие системные предпочтения, которые приложения могут читать, но не имеют права записывать.\nОни предназначены для параметров, которые пользователь должен явно изменить через пользовательский интерфейс системного приложения.\nПри наличии разрешения на безопасные системные настройки обычные приложения могут напрямую изменять безопасные настройки (например, служба доступности).</string>
<string name="text_write_system_settings">Запись системных настроек</string>
<string name="text_special_permissions">Специальные разрешения</string>
<string name="summary_all_files_access">Позволяет AutoJs6 получать доступ ко всем файлам, включая файлы на внешнем хранилище</string>
<string name="summary_display_over_other_apps">Позволяет AutoJs6 отображать контент поверх других приложений</string>
<string name="summary_post_notifications_permission">Позволяет AutoJs6 создавать и отправлять уведомления</string>
<string name="summary_all_files_access_inrt">Разрешить приложению доступ ко всем файлам, включая внешнее хранилище</string>
<string name="summary_display_over_other_apps_inrt">Разрешить приложению отображать контент поверх других приложений</string>
<string name="summary_post_notifications_permission_inrt">Разрешить приложению создавать и отправлять уведомления</string>
</resources>

View File

@@ -953,5 +953,12 @@
<string name="text_write_secure_settings">修改安全設置</string>
<string name="text_write_secure_settings_description">安全設置包含應用程序可讀但不可寫入的設置選項, 這些選項只能由 UI 或系統級別應用修改.\n被授予 \"修改安全設置權限\" 後, 普通應用可直接修改上述安全設置 (例如無障礙服務).</string>
<string name="text_write_system_settings">修改系統設置</string>
<string name="text_special_permissions">特殊權限</string>
<string name="summary_all_files_access">允許 AutoJs6 訪問所有文件, 包括外部存儲</string>
<string name="summary_display_over_other_apps">允許 AutoJs6 在其他應用之上顯示內容</string>
<string name="summary_post_notifications_permission">允許 AutoJs6 創建併發送通知</string>
<string name="summary_all_files_access_inrt">允許應用訪問所有文件, 包括外部存儲</string>
<string name="summary_display_over_other_apps_inrt">允許應用在其他應用之上顯示內容</string>
<string name="summary_post_notifications_permission_inrt">允許應用創建併發送通知</string>
</resources>

View File

@@ -953,5 +953,12 @@
<string name="text_write_secure_settings">修改安全設定</string>
<string name="text_write_secure_settings_description">安全設定包含應用程式可讀但不可寫入的設定選項, 這些選項只能由 UI 或系統級別應用修改.\n被授予 \"修改安全設定許可權\" 後, 普通應用可直接修改上述安全設定 (例如無障礙服務).</string>
<string name="text_write_system_settings">修改系統設定</string>
<string name="text_special_permissions">特殊許可權</string>
<string name="summary_all_files_access">允許 AutoJs6 訪問所有檔案, 包括外部儲存</string>
<string name="summary_display_over_other_apps">允許 AutoJs6 在其他應用之上顯示內容</string>
<string name="summary_post_notifications_permission">允許 AutoJs6 建立併發送通知</string>
<string name="summary_all_files_access_inrt">允許應用訪問所有檔案, 包括外部儲存</string>
<string name="summary_display_over_other_apps_inrt">允許應用在其他應用之上顯示內容</string>
<string name="summary_post_notifications_permission_inrt">允許應用建立併發送通知</string>
</resources>

View File

@@ -950,5 +950,12 @@
<string name="text_write_secure_settings">修改安全设置</string>
<string name="text_write_secure_settings_description">安全设置包含应用程序可读但不可写入的设置选项, 这些选项只能由 UI 或系统级别应用修改.\n被授予 \"修改安全设置权限\" 后, 普通应用可直接修改上述安全设置 (例如无障碍服务).</string>
<string name="text_write_system_settings">修改系统设置</string>
<string name="text_special_permissions">特殊权限</string>
<string name="summary_all_files_access">允许 AutoJs6 访问所有文件, 包括外部存储</string>
<string name="summary_display_over_other_apps">允许 AutoJs6 在其他应用之上显示内容</string>
<string name="summary_post_notifications_permission">允许 AutoJs6 创建并发送通知</string>
<string name="summary_all_files_access_inrt">允许应用访问所有文件, 包括外部存储</string>
<string name="summary_display_over_other_apps_inrt">允许应用在其他应用之上显示内容</string>
<string name="summary_post_notifications_permission_inrt">允许应用创建并发送通知</string>
</resources>

View File

@@ -1197,5 +1197,15 @@
<string name="text_confirm_to_clear_histories_of">All histories below will be cleared\n\n[ %1$s ]\n\nAre you sure to clear them all?</string>
<string name="text_confirm_to_clear_histories_of_all_color_libraries">All histories below will be cleared\n\n[ All color libraries ]\n\nAre you sure to clear them all?</string>
<string name="text_all_histories">All histories</string>
<string name="text_special_permissions">Special permissions</string>
<string name="key_post_notifications_permission" translatable="false">key_$_post_notifications_permission</string>
<string name="key_display_over_other_apps" translatable="false">key_$_display_over_other_apps</string>
<string name="key_all_files_access" translatable="false">key_$_all_files_access</string>
<string name="summary_all_files_access">Allows AutoJs6 to access all files, including those in external storage</string>
<string name="summary_display_over_other_apps">Allows AutoJs6 to display content over other apps</string>
<string name="summary_post_notifications_permission">Allows AutoJs6 to create and post notifications</string>
<string name="summary_all_files_access_inrt">Allow the application to access all files, including external storage</string>
<string name="summary_display_over_other_apps_inrt">Allow the application to display content over other apps</string>
<string name="summary_post_notifications_permission_inrt">Allow the application to create and send notifications</string>
</resources>

View File

@@ -38,9 +38,9 @@
<item name="colorControlNormal">@color/md_black_1000</item>
</style>
<style name="AppTheme.LogActivityInrt" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@color/md_blue_gray_600</item>
<item name="android:windowLightStatusBar">false</item>
<style name="AppTheme.NoActionBarInrt" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@color/md_blue_gray_50</item>
<item name="android:windowLightStatusBar">true</item>
<item name="colorPrimary">@color/md_blue_gray_50</item>
<item name="colorPrimaryDark">@color/md_blue_gray_50</item>
<item name="colorAccent">@color/md_black_1000</item>

View File

@@ -1,38 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/text_script_running">
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_running">
<SwitchPreference
android:defaultValue="true"
android:key="@string/key_use_volume_control_running"
android:title="@string/text_use_volume_key_to_control_script_running" />
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
android:defaultValue="true"
android:key="@string/key_use_volume_control_running"
android:title="@string/text_use_volume_key_to_control_script_running" />
<SwitchPreference
android:defaultValue="false"
android:key="@string/key_not_showing_main_activity"
android:summary="@string/summary_not_showing_main_activity"
android:title="@string/text_not_showing_main_activity" />
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
android:defaultValue="false"
android:key="@string/key_not_showing_main_activity"
android:summary="@string/summary_not_showing_main_activity"
android:title="@string/text_not_showing_main_activity" />
</PreferenceCategory>
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
<PreferenceCategory android:title="@string/text_a11y_service">
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_a11y_service">
<SwitchPreference
android:defaultValue="false"
android:key="@string/key_enable_a11y_service_with_root_access"
android:summary="@string/summary_enable_a11y_service_with_root_access"
android:title="@string/text_enable_a11y_service_with_root_access_automatically" />
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
android:defaultValue="false"
android:key="@string/key_enable_a11y_service_with_root_access"
android:summary="@string/summary_enable_a11y_service_with_root_access"
android:title="@string/text_enable_a11y_service_with_root_access_automatically" />
<SwitchPreference
android:defaultValue="false"
android:key="@string/key_stable_mode"
android:summary="@string/summary_stable_mode"
android:title="@string/text_stable_mode" />
<org.autojs.autojs.theme.preference.ThemeColorSwitchPreference
android:defaultValue="false"
android:key="@string/key_stable_mode"
android:summary="@string/summary_stable_mode"
android:title="@string/text_stable_mode" />
</PreferenceCategory>
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
<PreferenceCategory android:title="@string/text_others" />
<org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_special_permissions">
<org.autojs.autojs.inrt.theme.preference.ManageAllFilesPermissionSwitchPreference
android:key="@string/key_all_files_access"
android:summary="@string/summary_all_files_access_inrt"
android:title="@string/text_all_files_access" />
<org.autojs.autojs.inrt.theme.preference.DisplayOverOtherAppsPermissionSwitchPreference
android:key="@string/key_display_over_other_apps"
android:summary="@string/summary_display_over_other_apps_inrt"
android:title="@string/text_display_over_other_app" />
<org.autojs.autojs.inrt.theme.preference.PostNotificationsPermissionSwitchPreference
android:key="@string/key_post_notifications_permission"
android:summary="@string/summary_post_notifications_permission_inrt"
android:title="@string/text_post_notifications_permission" />
</org.autojs.autojs.theme.preference.ThemeColorPreferenceCategory>
</PreferenceScreen>

View File

@@ -1,5 +1,5 @@
#Sat Apr 12 23:02:49 CST 2025
BUILD_TIME=1744470169558
#Sun Apr 13 14:00:19 CST 2025
BUILD_TIME=1744524019186
COMPILE_SDK_VERSION=35
JAVA_VERSION=23
JAVA_VERSION_MIN_RADICAL=0
@@ -17,6 +17,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
TARGET_SDK_VERSION=35
TARGET_SDK_VERSION_INRT=29
VERSION_BUILD=3131
VERSION_BUILD=3133
VERSION_NAME=6.6.2 Alpha6
VSCODE_EXT_REQUIRED_VERSION=1.0.8