我一直在尝试对 android.os.build 类中的特定字段使用反射,MANUFACTURER 字段... 我试过使用这段代码:
try
{
Class myBuildClass = android.os.Build.class;
Field m1 = Build.class.getDeclaredField("MANUFACTURER");
validField = true;
manufacturer = Build.MANUFACTURER;
}
catch(Exception ex)
{
manufacturer = Build.PRODUCT;
System.err.println("getDeviceSpecifics, got an exception during getting Field : " + ex.toString());
}
我遇到了以下错误:
06-01 11:26:37.639: WARN/dalvikvm(7342): VFY: unable to resolve static field 2 (MANUFACTURER) in Landroid/os/Build;
06-01 11:26:37.639: WARN/dalvikvm(7342): VFY: rejecting opcode 0x62 at 0x0048
06-01 11:26:37.639: WARN/dalvikvm(7342): VFY: rejected Lmypackage/android/managementModule/Management;.getDeviceSpecifics ()V
06-01 11:26:37.639: WARN/dalvikvm(7342): Verifier rejected class Lmypackage/android/managementModule/Management;
在调试时我注意到 InvocationtargetException 不断被抛出,所以我猜我没有正确地实现整个反射原则...... 知道哪里出了问题,或者知道如何正确地为单个 Field 实现 Refelction 吗?
最佳答案
完美解决
try // reflection
{
Field manufacturerField = android.os.Build.class
.getDeclaredField("MANUFACTURER");
manufacturerField.setAccessible(true);
String manufacturerName = manufacturerField.get(
android.os.Build.class).toString();
System.out.println("manufacturerName: " + manufacturerName);
} catch (Exception ex) {
System.err
.println("getManufacturerName, got an exception during getting Field : "
+ ex.toString());
}
关于java - 一个领域出错的反射(reflection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948606/