私は最近、Twitter APIとOAuthのロープを学ぶためにAndroid向けの簡単なTwitterアプリを書いています。WebView.loadUrl(url)は何もしません
アプリの主なアクティビティは、単にユーザー名を尋ねるだけです。次に、OAuth & Twitter API呼び出しを処理する別のアクティビティを呼び出します。ユーザーを認可ページにリダイレクトし、ユーザーが終了した後にアプリケーションに戻ります。
以前はうまくいきましたが、webview.loadUrl(authorizationURL)を呼び出すと何らかの理由で何も起こりません。何も起こりません。
@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ファイルです:私はここに私のコードです...しかしWebViewのものに影響を与える何かを変更したことがない
<?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>
とも私はマニフェストで適切なインターネットアクセス権が含まれています。
WebViewCoreThreadはアプリケーションの稼動中に実行され、後でWebViewWorkerThreadがポップアップしますが、WebViewは表示されません(白い画面でさえありません)。アプリは決してブロックされません。あたかもloadUrl()行がコメントアウトされたかのように動作し続けます。
私は自分の携帯電話(Droid X2)とエミュレータで同じ結果をテストしました。どんな助けでも大歓迎です。
ありがとうございます!
loadUrl()を同期的に実行する方法はありますか?アプリが正常に機能するためには、WebViewをfollow()の呼び出しの前に起動する必要があります。 – bmat
@Blake M .: "loadUrl()を同期して実行する方法はありますか?" - いいえ。 "WebViewは、アプリケーションが正常に機能するためにfollow()を呼び出す前に起動する必要があります。 - ページが読み込まれるまで 'follow()'を呼び出さないでください。 – CommonsWare
さて、それは十分に単純だった..今の魅力のように動作します。本当にありがとう! – bmat