我最近为Android编写了一个简单的Twitter应用程序来学习Twitter API和OAuth的绳索。
应用程序的主要活动只是要求输入用户名。然后它调用另一个处理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>
我还在Manifest中包含了正确的Internet权限。
WebViewCoreThread在应用程序的生命周期中运行,稍后会弹出WebViewWorkerThread,但是没有WebView出现(甚至不是白屏)。该应用程序永远不会阻止。它继续运行,就像loadUrl()行被简单地注释掉一样。
我已经在我的手机(Droid X2)和模拟器上进行了测试,结果相同。任何帮助将不胜感激。
提前致谢!
答案 0 :(得分:2)
它继续运行,就像loadUrl()行被简单地注释掉一样。
它将始终“继续运行,就像loadUrl()
行被简单地注释掉一样”。 loadUrl()
是异步的,不会阻止。
关闭袖口:
weNeedCredentials()
正在返回false
或follow()
正在替换用户界面,或someCondition
为true
,因此您可以立即WebView
成为GONE