我最近寫了Android的一個簡單的Twitter的應用程序,瞭解Twitter的API和OAuth的繩索。WebView.loadUrl(URL)什麼也不做
應用程序的主要活動簡單地詢問用戶名跟隨。然後它會調用另一個處理OAuth & Twitter API調用的活動。它將用戶重定向到授權頁面,然後在用戶完成後返回到應用程序。
它曾經工作得很好,但現在由於某種原因,當我打電話webview.loadUrl(authorizationURL),沒有任何反應。我從來沒有改變任何會雖然影響的WebView的東西......這是我的代碼:
@Override
public void onResume() {
super.onResume();
try {
if(weNeedCredentials()) {
obtainCredentials();
}
follow(mUsername);
} catch (OAuthException oae) {
// omitted
}
}
private boolean weNeedCredentials() {
// assume the method returns true
}
private void obtainCredentials() {
final Token requestToken = mOauthService.getRequestToken();
String authUrl = mOauthService.getAuthorizationUrl(requestToken);
// I verified that authUrl is the correct url (and != null)
final WebView oauthView = (WebView) findViewById(R.id.oauthview);
oauthView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(someCondition) {
oauthView.setVisibility(View.GONE);
doOtherStuff();
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
oauthView.getSettings().setJavaScriptEnabled(true);
oauthView.loadUrl(authUrl);
}
這是我的佈局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<WebView
android:id="@+id/oauthview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
,也是我列入清單正確的Internet的權限。
一個WebViewCoreThread正在運行的應用程序的生命,和WebViewWorkerThread後彈入,但沒有永遠的WebView來了(甚至不是一個白色屏幕)。該應用程序永遠不會阻止。它繼續運行,就好像loadUrl()行被簡單地註釋掉一樣。
我我的手機上測試(Droid的X2),以及一個模擬器,都具有相同的結果。任何幫助將不勝感激。
在此先感謝!
有什麼辦法同步執行使用loadURL()?在調用follow()之前,WebView必須啓動才能使應用正常工作。 – bmat
@Blake M .:「有沒有辦法同步執行loadUrl()?」 - 沒有。 「WebView必須在呼叫之前啓動才能跟上()以使應用正常運行。」 - 然後在加載頁面之前不要調用follow()。 – CommonsWare
那麼那麼簡單,現在就像是一種魅力。非常感謝! – bmat