我正在尝试使用反射访问存储在android.telephony
包下的类,但是对于某些类我正在ClassNotFoundException
。
任何人都可以告诉我为什么有些类可以被访问而有些类甚至不是这些类都在同一个包中?
Ex: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
答案 0 :(得分:2)
可能是因为SubscriptionManager
刚刚在API 22中添加,而您使用的手机或模拟器没有Android 5.1。
那反射是如何起作用的!如果没有类,则抛出ClassNotFoundException
。