WebView.loadUrl (url) ничего не делает - PullRequest
2 голосов
/ 21 июля 2011

Недавно я написал простое приложение для Android для Twitter, чтобы узнать, как работают API Twitter и OAuth.

Основная деятельность приложения просто запрашивает имя пользователя.Затем он вызывает другое действие, которое обрабатывает вызовы API OAuth и Twitter.Он перенаправляет пользователя на страницу авторизации, которая затем возвращается в приложение после завершения работы пользователя.

Раньше он работал нормально, но теперь по какой-то причине, когда я вызываю 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>

, а также я включил соответствующие интернет-разрешенияв манифесте.

WebViewCoreThread работает в течение всего срока службы приложения, а WebViewWorkerThread появляется позже, но WebView никогда не появляется (даже белый экран).Приложение никогда не блокирует либо.Он продолжает работать так, как если бы строка loadUrl () была просто закомментирована.

Я протестировал на своем телефоне (Droid X2), а также на эмуляторе, оба с одинаковыми результатами.Любая помощь будет принята с благодарностью.

Заранее спасибо!

1 Ответ

2 голосов
/ 21 июля 2011

Он продолжает работать так, как если бы строка loadUrl () была просто закомментирована.

Он всегда будет "продолжать работать, как если бы строка loadUrl() была просто закомментирована".loadUrl() является асинхронным и не блокируется.

С манжеты либо:

  • weNeedCredentials() возвращает false, либо
  • follow()заменяет пользовательский интерфейс, или
  • Twitter выполняет перенаправление, а someCondition равен true, поэтому вы сразу же WebView be GONE
  • возникают проблемыс URL, который вы загружаете
...