WebViewとEmulatorとProxy
Android Platform 1.6 (API Level4)では問題無いのだが、2.0(API Level 5)、2.0.1(API Level 6)では相変わらずプロキシを通してインターネットに繋がらない。SDKのせいなのかエミュレータのせいなのか、さっぱりわからない。
ならばAndroidのViewであるWebViewはどうだろうとソースコードを追ったのだが、
android.webkit.WebView#loadUrl(url)
-> android.webkit.WebViewCore#sendMessage(EventHub.LOAD_URL, url)
-> android.webkit.BrowserFrame#loadUrl(url)
-> BrowserFrame#nativeLoadUrl(url) -> とここでネィティブコードにあたった。
- WebCoreFrameBridge.cpp
static void LoadUrl(JNIEnv *env, jobject obj, jstring url) { #ifdef ANDROID_INSTRUMENT TimeCounterAuto counter(TimeCounter::NativeCallbackTimeCounter); #endif WebCore::Frame* pFrame = GET_NATIVE_FRAME(env, obj); LOG_ASSERT(pFrame, "nativeLoadUrl must take a valid frame pointer!"); WebCore::String webcoreUrl = to_string(env, url); WebCore::ResourceRequest request(webcoreUrl); LOGV("LoadUrl %s", webcoreUrl.latin1().data()); pFrame->loader()->load(request); }
もう少し調べてみるが、今の所、Android自身で設定したプロキシ情報は参照していないぽいな。