You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12获取其他应用版本失败的修复方法

Android 12 下获取其他应用版本信息失败的修复方案

Android 12(API 31)引入了包可见性限制,默认情况下应用无法访问其他已安装应用的包信息,这就是你原有代码在Android 12及以上版本失效的核心原因。以下是两种可行修复方案:

方案1:声明特定应用的可见性(推荐)

如果你的应用仅需访问少数特定应用的信息,推荐在AndroidManifest.xml的<application>标签内添加<queries>元素,明确列出目标应用的包名:

<queries>
    <!-- 替换为你需要访问的目标应用包名 -->
    <package android:name="com.uptodown.installer" />
</queries>

这种方式严格遵循Android 12的隐私规范,不会触发应用商店的权限审核风险。

方案2:添加QUERY_ALL_PACKAGES权限(通用但需谨慎)

如果你的应用需要获取所有已安装应用的信息,可以在AndroidManifest.xml中添加该权限:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
    tools:ignore="QueryAllPackagesPermission" />

注意:Google Play会对使用该权限的应用进行严格审核,仅允许应用市场、启动器类等确实需要访问全量应用的场景使用,普通应用不建议采用此方案。

代码优化建议

原代码逻辑本身无错误,但可以补充错误提示提升用户体验:

String targetPackage = "com.uptodown.installer";
PackageManager pm = getPackageManager();
try {
    PackageInfo pInfo = pm.getPackageInfo(targetPackage, PackageManager.GET_ACTIVITIES);
    String version = pInfo.versionName;
    textview.setText(version);
} catch (PackageManager.NameNotFoundException e) {
    // 应用未安装或无访问权限时的提示
    textview.setText("目标应用未安装");
    e.printStackTrace();
}

内容的提问来源于stack exchange,提问作者An Bùi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:01:41