我正在尝试使用Java反射获取公共最终类Manifest.permission中可用的所有可能权限的详尽列表。
Class permission = Class.forName(“android.Manifest.permission”);
但是获得了ClassNotFoundException。
有人可以建议我哪里出错吗?
答案 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
就不会返回另一个类的类。