如何在运行时获取详尽的Android权限列表?

时间:2012-03-17 08:24:41

标签: java android reflection

我正在尝试使用Java反射获取公共最终类Manifest.permission中可用的所有可能权限的详尽列表。

Class permission = Class.forName(“android.Manifest.permission”);

但是获得了ClassNotFoundException。

有人可以建议我哪里出错吗?

1 个答案:

答案 0 :(得分:0)

你为什么不那样做: Class permission = android.Manifest.permission.class;它在我的android项目中适用于我,我认为它也有点整洁。你会得到错误(如果有的话)编译时间,而不是运行时,这也是一个好处。

编辑您的方法不起作用的原因:android.Manifest.permission类属于不同的类加载器。我做了以下实验:

Log.i("Tag", "" + android.Manifest.permission.class.getClassLoader());
Log.i("Tag", "" + this.getClass().getClassLoader());

结果是:

INFO/Tag(281): java.lang.BootClassLoader@4001bde0
INFO/Tag(281): dalvik.system.PathClassLoader[/data/app/com.company.android-2.apk]

只要两个类有不同的类加载器,Class.forName就不会返回另一个类的类。