gpt4 book ai didi

java - 在android ListView上查看特定应用程序的权限名称

转载 作者:行者123 更新时间:2023-12-01 10:09:06 24 4
gpt4 key购买 nike

您好,我对 Java 和 Android 世界还很陌生。目前正在从事我自己的一个项目。基本上我需要在 ListView 上显示特定应用程序的权限名称。

虽然我已经实现了它并且运行良好。但在我的 ListView 中,我得到的权限名称类似于“android.permission.MANAGE_ACCOUNTS”

但我想将该字符串显示为“管理帐户”

这是我编写的代码块。

final PackageManager pm = getPackageManager();

List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

try {
PackageInfo packageInfo = pm.getPackageInfo(appPackageName, PackageManager.GET_PERMISSIONS);

//Get Permissions
String[] requestedPermissions = packageInfo.requestedPermissions;

if(requestedPermissions != null) {
for (int i = 0; i < requestedPermissions.length; i++) {

Log.d("test", requestedPermissions[i]);

itemname.add(requestedPermissions[i]);

}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}

它将权限名称列出为“android.permission.PERMISSION_NAME”或类似的名称。但我想让它们看起来有点像人类可读的。例如,将“android.permission.PERMISSION_NAME”显示为“权限名称”。

最佳答案

可以将 "android.permission.MANAGE_ACCOUNTS" 之类的字符串转换为 "Manage Accounts"。但对所有权限应用相同的算法(删除 android.permission.,然后替换 _ 空格并将字符串转换为小写)并不安全。

如果您确定所有权限名称都遵循相同的规则,您可以执行以下操作:

String permissionName = "android.permission.PERMISSION_NAME";
permissionName = permissionName.replace("android.permission.", "");
String[] words = permissionName.split("_");
String newPermissionName = "";
for(String word: words){
newPermissionName+= word.substring(0,1) + word.substring(1).toLowerCase() + " ";
}

(也许这不是最好的方法,但它有效)

此外,由于权限是静态的,您可以使用 HashMap 来存储每个权限的名称:

map.put("android.permission.MANAGE_ACCOUNTS", "Manage Accounts");

通过这种方式,您不必担心不同的权限样式,并且可以使用您想要的权限名称。

关于java - 在android ListView上查看特定应用程序的权限名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36261111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com