0
我正在尝试使用Java反射来获取public final class Manifest.permission中所有可用权限的详尽列表。如何在运行时获得详尽的android权限列表?
Class permission = Class.forName(“android.Manifest.permission”);
但得到ClassNotFoundException。
任何人都可以提出我要去哪里错了吗?
我正在尝试使用Java反射来获取public final class Manifest.permission中所有可用权限的详尽列表。如何在运行时获得详尽的android权限列表?
Class permission = Class.forName(“android.Manifest.permission”);
但得到ClassNotFoundException。
任何人都可以提出我要去哪里错了吗?
为什么你不这样做: 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
不会返回类的另一种的。
感谢鲍里斯....工作的魅力,但仍然想知道为什么Class.forName不工作? – 2012-03-17 09:27:50
我添加了编辑,解释了为什么你的方法不起作用。 – 2012-03-17 09:37:44
再次感谢鲍里斯:)! – 2012-03-17 11:01:43