2015-03-31 77 views
2

下的一些類我試圖訪問存儲在android.telephony包使用反射的類,但對於一些類我得到ClassNotFoundExceptionAndroid - 無法訪問**包android.telephony **

任何人都可以告訴我爲什麼有些類可以訪問,有些甚至不是這些類駐留在同一個包中?

例:public class TelephonyManager可以使用反射如下所示被訪問

try { 
Class<?> manager1 = Class.forName("android.telephony.TelephonyManager"); 
} catch (ClassNotFoundException e1) { 
e1.printStackTrace(); 
} 

public class SubscriptionManager不能使用反射

try { 
Class<?> subscriptionManager = Class.forName("android.telephony.SubscriptionManager"); 
//Throwing error 
} catch (ClassNotFoundException e1) { 
e1.printStackTrace(); 
} 

訪問這兩個類屬於相同包android.telephony

回答

2

大概是因爲SubscriptionManager剛剛添加到API 22中,以及您所使用的手機或模擬器e使用沒有Android 5.1。

這就是反射應該如何工作!如果一個班級不存在,則拋出ClassNotFoundException

+0

我已經在同一個存儲庫下載了android 22和21的源代碼,我認爲GIT已經將它們合併在一起。這造成了混亂。 – DCoder 2015-03-31 14:20:41

+0

哦,我明白了:)你是否需要它們來製作兩個獨立的版本? – 2015-03-31 14:25:08

+0

號剛剛刪除22;) – DCoder 2015-03-31 14:50:32