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