2012-03-17 78 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