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

获取应用权限时遇编译错误:无法解析requestedPermissions

解决"Cannot resolve requestedPermissions"编译错误

我一眼就看出问题啦——你错误地从ApplicationInfo对象去获取requestedPermissions,但这个属性其实是属于PackageInfo类的!

修正后的代码

把你代码里的这一行:

String[] requestedPermissions = applicationInfo.requestedPermissions;

替换成:

String[] requestedPermissions = packageInfo.requestedPermissions;

完整修正后的代码片段:

@Override 
protected Void doInBackground(Void... params) { 
    PackageManager pm = getPackageManager(); 
    applist = checkForLaunchIntent(pm.getInstalledApplications(PackageManager.GET_META_DATA)); 
    try { 
        for (ApplicationInfo applicationInfo : applist) { 
            PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS); 
            // 这里改用packageInfo获取权限数组
            String[] requestedPermissions = packageInfo.requestedPermissions; 
            if (requestedPermissions != null) { 
                for (int i = 0; i < requestedPermissions.length; i++) { 
                    Log.d("test", requestedPermissions[i]); 
                } 
            } 
        } 
    } catch (PackageManager.NameNotFoundException e) { 
        e.printStackTrace(); 
    } 
    listadapter = new AppAdapter(ViewAppsPermissions.this, R.layout.list_item, applist); 
    return null; 
}

为什么会出错?

  • ApplicationInfo主要存储应用的基本信息(比如图标、应用名称、安装路径等),它并没有requestedPermissions这个成员变量。
  • 你已经通过pm.getPackageInfo(...)获取到了PackageInfo对象,这个类才包含了应用声明的权限数组requestedPermissions,所以直接从这个对象读取就可以了。

另外,我注意到你代码里一开始写的是packageManager.getInstalledApplications(...),但前面定义的变量是pm,这个小问题也顺手帮你修正了,避免潜在的未定义变量问题~

内容的提问来源于stack exchange,提问作者federicosancho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:03:20