我想要访问权限列表Manifest.permission,这是最后一堂课。我如何获得对其声明的String值的访问?以编程方式访问Manifest.permission?
0
A
回答
1
从字面上看,我相信这个问题是关于如何简单地获取可能的权限,而不是在一个包运行时的权限列表。假设这是真的,这只是一个反思问题。
你会做这样的事情(不编译):
List<Field> permissionFields = new ArrayList<Field>();
Field[] fields = Manifest.permission.class.getDeclaredFields();
for (Field declField : fields) {
if ((declField.getType() == String.class) && Modifier.isFinal(declField.getModifiers())) {
permissionFields.add(declField);
}
}
的“permissionFields”列表认为是允许值的对象列表。您可以使用“Field.getObject(obj)”方法来获取字符串值(好奇的是,似乎并没有出现“Field.getString(obj)”方法,尽管还有其他几个“Field.get(obj) )“方法(可能是因为String不是原语))。
0
下面是代码:
Log.d(TAG, "Getting permissions for " + packageName);
try {
PackageInfo pkgInfo = getPackageManager().getPackageInfo(
packageName,
PackageManager.GET_PERMISSIONS
);
PermissionInfo[] permissions = pkgInfo.permissions;
if (permissions == null) {
permissionsField.setText("No declared permissions");
}
else {
String permissionsText = "";
for (int i = 0; i < permissions.length; i++) {
switch (permissions[i].protectionLevel) {
case 0:
permissionsText += permissions[i].name + ":::" + "NORMAL" + "\n";
break;
case 1:
permissionsText += permissions[i].name + ":::" + "DANGEROUS" + "\n";
break;
case 2:
permissionsText += permissions[i].name + ":::" + "SIGNATURE" + "\n";
break;
case 3:
permissionsText += permissions[i].name + ":::" + "SIGNATUREORSYSTEM" + "\n";
break;
}
}
permissionsField.setText(permissionsText);
}
String[] requestedPermissions = pkgInfo.requestedPermissions;
if (requestedPermissions == null) {
requestedPermissionsField.setText("No requested permissions");
}
else {
String reqPermText = "";
for (int i = 0; i < requestedPermissions.length; i++) {
reqPermText += requestedPermissions[i] + "\n";
}
requestedPermissionsField.setText(reqPermText);
}
}
catch (PackageManager.NameNotFoundException e) {
permissionsField.setText("Package Not Found");
requestedPermissionsField.setText("Package Not Found");
}
+0
请更好地阅读问题。如果是我所要求的,这将是一个很好的回应。 – Phil 2011-12-27 02:35:37
相关问题
- 1. 以编程方式访问httpRuntime maxRequestLength
- 2. 以编程方式访问ResourceDictionary项目
- 3. 以编程方式访问Access Gateway
- 4. 以编程方式访问iPod库
- 5. 以编程方式访问Jenkins URL?
- 6. 以编程方式访问PhotoStream
- 7. 以编程方式访问.NET API
- 8. 以编程方式访问iSight?
- 9. 以编程方式访问Raphael路径
- 10. 如何以编程方式访问iptables?
- 11. 以编程方式访问Infinispan MBeans
- 12. 以编程方式访问QFiledialog
- 13. 以编程方式访问iTunes商店?
- 14. 以编程方式访问字典键
- 15. 如何以编程方式访问ItemPanel?
- 16. 在iphone中访问本地文件以编程方式编程
- 17. 以编程方式访问样式以获取值
- 18. 可以以编程方式访问MANIFEST.MF中定义的值吗?
- 19. 以编程方式访问GMail“以HTML查看”内容?
- 20. 以编程方式访问JMX控制台的简单方法
- 21. 以编程方式访问iPhone视频的方向
- 22. 以编程方式访问注册表时出现问题
- 23. 以编程方式访问iTunes库的问题
- 24. 如何以编程方式访问样式中的元素?
- 25. 以编程方式格式化ms访问图
- 26. 以编程方式访问C#中的SharePoint样式库
- 27. 以编程方式访问Android中的主题/样式/ attrs
- 28. 以编程方式通过其UI访问应用程序
- 29. 以编程方式访问应用程序的图标
- 30. 如何以编程方式访问远程OPC服务器?
正是我需要的。谢谢! – Phil 2011-12-27 02:34:04