2012-03-17 77 views
0

我正在尝试使用Java反射来获取public final class Manifest.permission中所有可用权限的详尽列表。如何在运行时获得详尽的android权限列表?

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

但得到ClassNotFoundException。

任何人都可以提出我要去哪里错了吗?

回答

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): [email protected] 
INFO/Tag(281): dalvik.system.PathClassLoader[/data/app/com.company.android-2.apk] 

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

+0

感谢鲍里斯....工作的魅力,但仍然想知道为什么Class.forName不工作? – 2012-03-17 09:27:50

+0

我添加了编辑,解释了为什么你的方法不起作用。 – 2012-03-17 09:37:44

+0

再次感谢鲍里斯:)! – 2012-03-17 11:01:43