2015-03-31 73 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