Skip to content

Commit 43d9fa9

Browse files
6.6.2 - Alpha7 - 优化 files.path 及相关方法传入空值路径参数时的兼容性
1 parent 325271b commit 43d9fa9

File tree

19 files changed

+214
-184
lines changed

19 files changed

+214
-184
lines changed

.changelog/lang_zh-Hans.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"notice 模块缺失 getBuilder 等扩展方法的问题 _[`issue #301`](http://issues.autojs6.com/301)_",
1717
"shizuku/shell 等方法无法接受字符串参数的问题 _[`issue #310`](http://issues.autojs6.com/310)_",
1818
"colors.pixel 方法无法接受单通道图像参数的问题 _[`issue #350`](http://issues.autojs6.com/350)_",
19-
"engines.execScript/execScriptFile 等方法执行脚本时默认工作路径异常 _[`issue #340`](http://issues.autojs6.com/340)_ _[`issue #339`](http://issues.autojs6.com/339)_",
19+
"engines.execScript/execScriptFile 等方法执行脚本时默认工作路径异常 _[`issue #358`](http://issues.autojs6.com/358)_ _[`issue #340`](http://issues.autojs6.com/340)_ _[`issue #339`](http://issues.autojs6.com/339)_",
2020
"floaty.window/floaty.rawWindow 无法在子线程执行的问题",
2121
"floaty.getClip 可能无法正常获取剪切板内容的问题 _[`issue #341`](http://issues.autojs6.com/341)_",
2222
"ui.inflate 返回值丢失 attr/on/click 等原型方法的问题",
@@ -49,6 +49,7 @@
4949
"尝试恢复 com.stardust 前缀包以便提升代码兼容性 _[`issue #290`](http://issues.autojs6.com/290)_",
5050
"floaty.window/floaty.rawWindow 同时支持主线程和子线程执行",
5151
"getClip 全局方法适时借助 floaty.getClip 方法以提升兼容性",
52+
"files.path 及相关方法传入空值路径参数时的兼容性",
5253
"同步最新的 Rhino 引擎官方上游代码并进行必要的代码适配",
5354
"README.md 完善项目构建与运行相关内容 _[`issue #344`](http://issues.autojs6.com/344)_"
5455
],

app/src/main/java/org/autojs/autojs/core/database/Database.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class Database extends SQLiteOpenHelper implements Closeable {
2626
private final TypeAdapter mTypeAdapter;
2727

2828
public Database(@NonNull Context context, @NonNull ScriptRuntime scriptRuntime, @NonNull String name, int version, boolean readable, @Nullable DatabaseCallback databaseCallback, @NonNull TypeAdapter typeAdapter) {
29-
super(context, scriptRuntime.files.path(name), null, version, databaseCallback == null ? null : new DatabaseErrorHandlerWrapper(databaseCallback));
29+
super(context, scriptRuntime.files.nonNullPath(name), null, version, databaseCallback == null ? null : new DatabaseErrorHandlerWrapper(databaseCallback));
3030
mTypeAdapter = typeAdapter;
3131
mCallback = databaseCallback;
3232
mScriptRuntime = scriptRuntime;

app/src/main/java/org/autojs/autojs/core/ui/attribute/ImageViewAttributes.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ open class ImageViewAttributes(scriptRuntime: ScriptRuntime, resourceParser: Res
5050
}
5151

5252
private fun ScriptRuntime.getPath(s: String, def: String = s): String {
53-
return if (this.files.exists(s)) this.files.path(s) else def
53+
return if (this.files.exists(s)) this.files.nonNullPath(s) else def
5454
}
5555

5656
private fun ScriptRuntime.getPath(s: String, def: (String) -> String): String {
57-
return if (this.files.exists(s)) this.files.path(s) else def(s)
57+
return if (this.files.exists(s)) this.files.nonNullPath(s) else def(s)
5858
}
5959

6060
companion object {

app/src/main/java/org/autojs/autojs/core/ui/inflater/util/Drawables.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import java.io.File
2323
import java.net.URL
2424
import java.util.concurrent.Executors
2525
import java.util.regex.Pattern
26+
import androidx.core.graphics.drawable.toDrawable
2627

2728
/**
2829
* Created by Stardust on Nov 3, 2017.
@@ -83,7 +84,7 @@ open class Drawables {
8384
}
8485

8586
open fun decodeImage(context: Context, path: String?): Drawable? {
86-
return BitmapDrawable(context.resources, BitmapFactory.decodeFile(path))
87+
return BitmapFactory.decodeFile(path)?.toDrawable(context.resources)
8788
}
8889

8990
fun parse(view: View, name: String) = parse(view.context, name)

app/src/main/java/org/autojs/autojs/extension/AnyExtensions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ object AnyExtensions {
133133

134134
fun Any?.toRuntimePath(scriptRuntime: ScriptRuntime, isStrict: Boolean = false): String {
135135
if (isStrict && this.isJsNullish()) throw IllegalArgumentException(str(R.string.error_cannot_convert_value_into_a_script_runtime_path, this.jsBrief()))
136-
return scriptRuntime.files.path(coerceString(this, "."))
136+
return scriptRuntime.files.nonNullPath(coerceString(this, "."))
137137
}
138138

139139
}

app/src/main/java/org/autojs/autojs/pio/PFiles.kt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ object PFiles {
109109

110110
@JvmOverloads
111111
@JvmStatic
112-
fun read(file: File?, encoding: String? = "utf-8"): String {
112+
fun read(file: File?, encoding: String? = DEFAULT_ENCODING): String {
113113
return try {
114114
read(FileInputStream(file), encoding)
115115
} catch (e: FileNotFoundException) {
@@ -118,21 +118,19 @@ object PFiles {
118118
}
119119

120120
@JvmStatic
121-
fun read(stream: InputStream, encoding: String?): String {
121+
@JvmOverloads
122+
fun read(inputStream: InputStream, encoding: String? = DEFAULT_ENCODING): String {
122123
return try {
123-
val bytes = ByteArray(stream.available())
124-
stream.read(bytes)
124+
val bytes = ByteArray(inputStream.available())
125+
inputStream.read(bytes)
125126
String(bytes, Charset.forName(encoding))
126127
} catch (e: IOException) {
127128
throw UncheckedIOException(e)
128129
} finally {
129-
closeSilently(stream)
130+
closeSilently(inputStream)
130131
}
131132
}
132133

133-
@JvmStatic
134-
fun read(inputStream: InputStream) = read(inputStream, "utf-8")
135-
136134
fun readBytes(stream: InputStream): ByteArray {
137135
return try {
138136
ByteArray(stream.available()).also { stream.read(it) }
@@ -203,7 +201,7 @@ object PFiles {
203201
}
204202

205203
@JvmStatic
206-
fun write(fileOutputStream: OutputStream, text: String) = write(fileOutputStream, text, "utf-8")
204+
fun write(fileOutputStream: OutputStream, text: String) = write(fileOutputStream, text, DEFAULT_ENCODING)
207205

208206
fun write(outputStream: OutputStream, text: String, encoding: String?) {
209207
try {

app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ class ScriptRuntime private constructor(builder: Builder) {
616616

617617
private fun doLoad(filter: FileFilter, vararg paths: String) {
618618
for (path in paths) {
619-
val file = File(files.path(path))
619+
val file = File(files.nonNullPath(path))
620620
if (file.isDirectory) {
621621
val filtered = file.listFiles(filter)
622622
if (filtered != null) {
@@ -636,7 +636,7 @@ class ScriptRuntime private constructor(builder: Builder) {
636636
try {
637637
val classLoader = sClassLoader
638638
for (path in paths) {
639-
val file = File(files.path(path))
639+
val file = File(files.nonNullPath(path))
640640
if (file.isDirectory) {
641641
val filtered = file.listFiles(filter)
642642
if (filtered != null) {
@@ -657,7 +657,7 @@ class ScriptRuntime private constructor(builder: Builder) {
657657
try {
658658
val classLoader = sClassLoader
659659
for (path in paths) {
660-
val file = File(files.path(path))
660+
val file = File(files.nonNullPath(path))
661661
if (file.isDirectory) {
662662
val filtered = file.listFiles(filter)
663663
if (filtered != null) {

app/src/main/java/org/autojs/autojs/runtime/api/Engines.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ class Engines(private val mScriptRuntime: ScriptRuntime) {
3535
return execScriptInternal(name, script, config)
3636
}
3737

38-
fun execScriptFile(path: String?, config: ExecutionConfig?): ScriptExecution {
39-
return AutoJs.instance.scriptEngineService.execute(JavaScriptFileSource(mScriptRuntime.files.path(path)), config)
38+
fun execScriptFile(path: String, config: ExecutionConfig?): ScriptExecution {
39+
return AutoJs.instance.scriptEngineService.execute(JavaScriptFileSource(mScriptRuntime.files.nonNullPath(path)), config)
4040
}
4141

42-
fun execAutoFile(path: String?, config: ExecutionConfig?): ScriptExecution {
43-
return AutoJs.instance.scriptEngineService.execute(AutoFileSource(mScriptRuntime.files.path(path)), config)
42+
fun execAutoFile(path: String, config: ExecutionConfig?): ScriptExecution {
43+
return AutoJs.instance.scriptEngineService.execute(AutoFileSource(mScriptRuntime.files.nonNullPath(path)), config)
4444
}
4545

4646
fun all(): NativeArray = engines.toNativeArray()

0 commit comments

Comments
 (0)