Tôi muốn đặt "NO_CACHE" thành newValue. Đây là mã của tôi:Trường tĩnh cuối cùng thay đổi Android sử dụng Java Reflection?
static void setFinalStatic(Object newValue) throws Exception
{
Field field = CacheManager.class.getDeclaredField("NO_CACHE");
field.setAccessible(true);
Field modifiersField=Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field,field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);
}
Nhưng chạy mã này trên Android tạo ra các lỗi sau:
java.lang.NoSuchFieldException: modifiers
tôi thấy modifiers
là một lĩnh vực trong lớp Field
trong Java, nhưng nó không phải là một lĩnh vực trong lớp học Field
trên Android.
Đây là mã Java Field
lớp:
http://www.docjar.com/html/api/java/lang/reflect/Field.java.html
Đây là Android đang Field
lớp:
http://www.oschina.net/code/explore/android-2.2-froyo/java/lang/reflect/Field.java
Đoạn mã trên trong Java có thể làm việc, nhưng nó không hoạt động trên nền tảng Android.
Làm cách nào để khắc phục sự cố này?
'CacheManager' là gì? –
android.webkit.CacheManager – user1884025
Cách này hoạt động bên ngoài Android, nếu đó là lớp chỉ dành cho Android? –