"NO_CACHE"をnewValueに設定したいとします。ここに私のコードは次のとおりです。Java Reflectionを使用してAndroidがプライベート静的最終フィールドを変更していますか?
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);
}
しかし、Android上でこのコードを実行するには、次のエラーが発生します。
java.lang.NoSuchFieldException: modifiers
私はmodifiers
を見つけるJavaでField
クラスのフィールドですが、それはフィールドされていませんAndroidのField
クラスです
これは、Java Field
クラスコードです:
http://www.oschina.net/code/explore/android-2.2-froyo/java/lang/reflect/Field.java
Javaで上記のコードが動作することができますが、それは上で動作しません:これはAndroidのField
クラスコードである
http://www.docjar.com/html/api/java/lang/reflect/Field.java.html
Androidプラットフォーム
これを修正するにはどうすればよいですか?
「CacheManager」とは何ですか? –
android.webkit.CacheManager – user1884025
これはAndroid以外のクラスであれば、Androidの外でどのように動作しますか? –