你好,我是java和android世界的新手。我正在做一个我自己的项目。基本上,我需要在一个列表视图上显示特定应用程序的权限名称。
虽然我已经实现了,而且效果很好。但在我的列表视图中,我得到的权限名称类似于“android.permission.manage\u accounts”
但是我想把这个字符串显示为“manageaccounts”
这是我写的代码块。
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\u name”或类似的名称。但我想把它们表现得有点像人类可读的。例如,将“android.permission.permission\u name”显示为“permission name”。
2条答案
按热度按时间r8xiu3jd1#
final packagemanager pm=getpackagemanager();
dba5bblo2#
转换字符串
"android.permission.MANAGE_ACCOUNTS"
至"Manage Accounts"
是可能的。但应用相同的算法(删除)是不安全的android.permission.
,然后更换_
whit space和将字符串转换为小写)设置为所有权限。如果您确定所有权限名称都遵循相同的规则,则可以执行以下操作:
(也许这不是最好的方法,但确实有效)
另外,由于权限是静态的,因此可以使用
HashMap
要存储每个权限的名称,请执行以下操作:这样,您就不用担心不同的权限样式,也可以使用所需的权限名称。