6.6.3 - Alpha - 修复 APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
|
||||
* `修复` 主页文档标签显示在线文档时部分内容被系统导航栏遮挡的问题
|
||||
* `修复` 部分设备代码编辑器空行显示方框字符的问题
|
||||
* `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题
|
||||
* `修复` console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 _[`issue #346`](http://issues.autojs6.com/346)_
|
||||
* `优化` 打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_
|
||||
* `优化` 使用异步加载方式一定程度提升文件管理器列表滑动流畅性
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
* `修复` 主页文档标签显示在线文档时部分内容被系统导航栏遮挡的问题
|
||||
* `修复` 部分设备代码编辑器空行显示方框字符的问题
|
||||
* `修复` APK 文件类型信息对话框可能无法获取应用名称及 SDK 信息的问题
|
||||
* `修复` console.setContentTextColor 方法导致日志字体颜色丢失默认值的问题 _[`issue #346`](http://issues.autojs6.com/346)_
|
||||
* `优化` 打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_
|
||||
* `优化` 使用异步加载方式一定程度提升文件管理器列表滑动流畅性
|
||||
|
||||
@@ -6,16 +6,17 @@ import android.content.pm.PackageManager.GET_META_DATA
|
||||
import android.os.Build
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View.MeasureSpec.UNSPECIFIED
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.isVisible
|
||||
import com.afollestad.materialdialogs.DialogAction
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import com.android.apksig.ApkVerifier
|
||||
import com.jaredrummler.apkparser.ApkParser
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import net.dongliu.apk.parser.ApkFile
|
||||
import org.autojs.autojs.extension.MaterialDialogExtensions.makeSettingsLaunchable
|
||||
import org.autojs.autojs.extension.MaterialDialogExtensions.makeTextCopyable
|
||||
import org.autojs.autojs.extension.MaterialDialogExtensions.setCopyableTextIfAbsent
|
||||
@@ -115,7 +116,7 @@ object ApkInfoDialogManager {
|
||||
dialog.setIcon(applicationInfo?.apply {
|
||||
sourceDir = apkFilePath
|
||||
publicSourceDir = apkFilePath
|
||||
}?.loadIcon(packageManager) ?: context.getDrawable(R.drawable.ic_packaging))
|
||||
}?.loadIcon(packageManager) ?: AppCompatResources.getDrawable(context, R.drawable.ic_packaging))
|
||||
|
||||
dialog.makeSettingsLaunchable({ it.iconView }, installedPackageName)
|
||||
dialog.makeTextCopyable { it.titleView }
|
||||
@@ -138,7 +139,7 @@ object ApkInfoDialogManager {
|
||||
|
||||
private suspend fun getApkInfo(apkFile: File): ApkInfo? = withContext(Dispatchers.IO) {
|
||||
runCatching {
|
||||
ApkParser.create(apkFile).use { parser ->
|
||||
ApkFile(apkFile).use { parser ->
|
||||
val meta = runCatching { parser.apkMeta }.getOrNull()
|
||||
val label = meta?.label
|
||||
val packageName = meta?.packageName
|
||||
|
||||
@@ -27,11 +27,11 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.google.android.flexbox.FlexboxLayout;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
import com.jaredrummler.apkparser.ApkParser;
|
||||
import com.jaredrummler.apkparser.model.ApkMeta;
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import net.dongliu.apk.parser.ApkFile;
|
||||
import net.dongliu.apk.parser.bean.ApkMeta;
|
||||
import org.autojs.autojs.apkbuilder.ApkBuilder;
|
||||
import org.autojs.autojs.apkbuilder.keystore.KeyStore;
|
||||
import org.autojs.autojs.core.pref.Language;
|
||||
@@ -63,6 +63,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -614,16 +615,16 @@ public class BuildActivity extends BaseActivity implements ApkBuilder.ProgressCa
|
||||
}
|
||||
|
||||
private void updatePermissionsCheckboxes(String packageName) {
|
||||
ApkParser parser;
|
||||
ApkFile apkFile;
|
||||
try {
|
||||
parser = ApkParser.create(getPackageManager(), packageName);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
apkFile = new ApkFile(new File(getPackageManager().getApplicationInfo(packageName, 0).sourceDir));
|
||||
} catch (PackageManager.NameNotFoundException | IOException e) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
ApkMeta meta = parser.getApkMeta();
|
||||
if (meta == null || meta.usesPermissions == null) {
|
||||
ApkMeta meta = apkFile.getApkMeta();
|
||||
if (meta == null) {
|
||||
return;
|
||||
}
|
||||
var initialPermissions = meta.usesPermissions;
|
||||
@@ -649,7 +650,11 @@ public class BuildActivity extends BaseActivity implements ApkBuilder.ProgressCa
|
||||
} catch (Exception ignored) {
|
||||
/* Ignored. */
|
||||
} finally {
|
||||
parser.close();
|
||||
try {
|
||||
apkFile.close();
|
||||
} catch (IOException e) {
|
||||
/* Ignored. */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user