1.修改推荐弹窗显示规则 2.提前加载推荐弹窗数据

This commit is contained in:
jack
2021-04-23 11:42:51 +08:00
parent ee01512f84
commit 328a559ef0
4 changed files with 49 additions and 22 deletions

View File

@ -318,12 +318,12 @@ public class PackageUtils {
/**
* 此设备是否不能调用 packageManager.getPackageArchiveInfo 来获取 APK 信息
*
* <p>
* 部分设备 (已知 vivo 5.1.1 及 5.0.1 的设备) 在调用 packageManager.getPackageArchiveInfo 获取比较大的 APK 文件时会出现 ANR
*/
public static boolean isDeviceUnableToHandleBigApkFile(String path) {
if ("vivo".equals(Build.MANUFACTURER)
&& Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
&& Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
File file = new File(path);
if (file != null && file.length() > 1024 * 1024 * 1024) {
@ -337,12 +337,12 @@ public class PackageUtils {
/**
* 从 APK 文件里读包名的另类方法
* 部分设备 (已知 vivo 5.1.1) 在调用 packageManager.getPackageArchiveInfo 获取比较大的 APK 文件时会出现 ANR
*
* <p>
* 令人迷惑的点:
* 1. 同样的代码,同样的 APK 在 demo 包里调用 packageManager.getPackageArchiveInfo 并不会 ANR
* 2. 把 packageManager.getPackageArchiveInfo 放在子线程调用一样会出现 ANR
* 3. demo 里 manifest 中 application 配置和 targetSdk 也改成与光环一样也不会出现 ANR
*
* <p>
* 大概是光环的某个配置触发了系统的 bug ?
*/
private static String getPackageNameByPathAlternative(String path) {
@ -445,6 +445,17 @@ public class PackageUtils {
return list;
}
public static ArrayList<String> getAllPackageNameIncludeGh(Context context) {
ArrayList<String> list = new ArrayList<>();
List<PackageInfo> packageInfos = getInstalledPackages(context, 0);
for (PackageInfo packageInfo : packageInfos) {
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
list.add(packageInfo.packageName);
}
}
return list;
}
/*
* 获取所有已安装的软件的包名(包括系统应用)
*/
@ -557,7 +568,7 @@ public class PackageUtils {
gh_version = gh_version.substring(2);
try {
return Long.parseLong(gh_version) < Long.parseLong(apkEntity.getGhVersion()) && apkEntity
.getForce() && gh_id.equals(gameId);
.getForce() && gh_id.equals(gameId);
} catch (NumberFormatException exception) {
// gh_id 可能出錯
exception.printStackTrace();