![](/img/trans.png)
[英]How to remove specific permission when build Android app with gradle?
[英]View permission names of a specific app on android ListView
您好,我是Java和Android世界的新手。 目前正在從事我自己的項目。 基本上,我需要在ListView上顯示特定應用程序的權限名稱。
盡管我已經實現了它並且效果很好。 但是在我的列表視圖中,我得到的權限名稱類似“ android.permission.MANAGE_ACCOUNTS”
但我想將該字符串顯示為“ 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.
,然后替換_
whit空間並將轉換后的字符串轉換為小寫)是不安全的。
如果您確定所有權限名稱都遵循相同的規則,則可以執行以下操作:
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");
這樣,您不必擔心不同的權限樣式,也可以使用所需的權限名稱。
最后的PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
try {
PackageInfo packageInfo = pm.getPackageInfo("ashish.app.com.getpremissions", 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]);
String[] last = requestedPermissions[i].toString().split("\\.");
String lastOne = last[last.length - 1];
if (!lastOne.contains("_")) {
Log.e("app", "permissions is----" + lastOne.toLowerCase());
} else {
String[] permissions = lastOne.split("_");
StringBuffer sb = new StringBuffer();
for (int index = 0; index < permissions.length; index++) {
sb.append(permissions[index].toLowerCase());
sb.append(" ");
}
Log.e("app", "permissions is----" + sb.toString());
}
// itemname.add();
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.