修复 5.1.1 系统的 vivo 设备安装大文件的 ANR 问题
This commit is contained in:
@ -18,6 +18,7 @@ import android.text.TextUtils;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.g00fy2.versioncompare.Version;
|
||||
import com.gh.common.xapk.XapkInstaller;
|
||||
import com.gh.gamecenter.BuildConfig;
|
||||
import com.gh.gamecenter.entity.ApkEntity;
|
||||
import com.gh.gamecenter.entity.GameEntity;
|
||||
@ -297,13 +298,12 @@ public class PackageUtils {
|
||||
|
||||
// 部分设备 (已知 vivo 5.1.1) 在调用 packageManager.getPackageArchiveInfo 获取比较大的 APK 文件时会出现 ANR
|
||||
// 大于 1G 的 APK 就走另类方法
|
||||
if ("vivo".equals(Build.MANUFACTURER)
|
||||
&& (Build.VERSION_CODES.LOLLIPOP == Build.VERSION.SDK_INT)
|
||||
|| Build.VERSION_CODES.LOLLIPOP_MR1 == Build.VERSION.SDK_INT) {
|
||||
File file = new File(path);
|
||||
if (file != null && file.length() > 1024 * 1024 * 1024) {
|
||||
return getPackageNameByPathAlternative(path);
|
||||
if (isDeviceUnableToHandleBigApkFile(path)) {
|
||||
// XAPK 不存在 AndroidManifest
|
||||
if (path.contains(XapkInstaller.XAPK_EXTENSION_NAME)) {
|
||||
return null;
|
||||
}
|
||||
return getPackageNameByPathAlternative(path);
|
||||
}
|
||||
|
||||
PackageManager packageManager = context.getApplicationContext().getPackageManager();
|
||||
@ -316,6 +316,24 @@ public class PackageUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 此设备是否不能调用 packageManager.getPackageArchiveInfo 来获取 APK 信息
|
||||
*
|
||||
* 部分设备 (已知 vivo 5.1.1) 在调用 packageManager.getPackageArchiveInfo 获取比较大的 APK 文件时会出现 ANR
|
||||
*/
|
||||
public static boolean isDeviceUnableToHandleBigApkFile(String path) {
|
||||
if ("vivo".equals(Build.MANUFACTURER)
|
||||
&& (Build.VERSION_CODES.LOLLIPOP == Build.VERSION.SDK_INT) || Build.VERSION_CODES.LOLLIPOP_MR1 == Build.VERSION.SDK_INT) {
|
||||
File file = new File(path);
|
||||
|
||||
if (file != null && file.length() > 1024 * 1024 * 1024) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 APK 文件里读包名的另类方法
|
||||
* 部分设备 (已知 vivo 5.1.1) 在调用 packageManager.getPackageArchiveInfo 获取比较大的 APK 文件时会出现 ANR
|
||||
|
||||
Reference in New Issue
Block a user