问题一:有root权限的手机,如果使用adb push命令,将文件push到某个APP的externalFiles目录下,那么这个文件是root权限的,app是无法从自己的files目录下读取到这个文件内容的
解决办法:将文件放到assets目录下,拷贝到App的externalFiles目录下
问题二:使用sealed定义的class类,内部带有单例的对象,如果提前加载了res文件,那么在切换系统语言的时候,对应res不生效,不会跟着变化。
例如下面的代码:
sealed class App(
val appType: Int,
val pkgName: String = "",
val activityName: String = "",
val pkgTag: String = "",
var params: String = "",
) {
object AppAccount : App(
WIN_TYPE_ACCOUNT,
PACKAGE_NAME_ACCOUNT,
"",
APP_ACCOUNT,
res(R.string.account)
)
object AppStore : App(
WIN_TYPE_APP_STORE,
PACKAGE_NAME_STORE,
"",
APP_STORE,
res(R.string.app_store)
)
}
// 在实例化的时候就会加载对应的res文件
private val res = { resId: Int -> KornApp.getInstance().getString(resId)}
解决方法: 在使用res字符串对应的代码那里,重新获取下资源文件,这样变更在语言变化后,及时获取到对应语言下的字符串了
Log.d(TAG, "before startApp: app.params is ${app.params}")
val resId = getResId(app.appType)
app.params = KornApp.getInstance().getString(resId)