-1
每当我尝试获取webview的url并尝试在日志中显示我的应用程序崩溃。 这是我的代码... 一切正常,但每次完成页面后崩溃。如何每五秒获取一次webview的URL?
public class MainActivity extends AppCompatActivity {
String user;
String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = getIntent();
user = i.getStringExtra("username");
password = i.getStringExtra("password");
final WebView webView = (WebView) findViewById(R.id.webView);
final WebSettings webSettings = webView.getSettings();
webSettings.setBuiltInZoomControls(true);
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(final WebView view, String url) {
view.loadUrl("javascript: (function() {document.getElementById('ft_un').value= '" + user + "';})();");
view.loadUrl("javascript: (function() {document.getElementById('ft_pd').value= '" + password + "';})();");
view.loadUrl("javascript:(function(){ document.querySelectorAll(\"input[type='submit']\")[0].click();})();");
super.onPageFinished(view, url);
}
});
new Timer().schedule(new TimerTask() {
@Override
public void run() {
String currentUrl = webView.getUrl();
Log.i("url", currentUrl);
}
}, 5000);
}
}
这是我收到
FATAL EXCEPTION: Timer-0
Process: com.anshuman.cgcautologin, PID: 8609
java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'Timer-0'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {256ea4a6} called on null, FYI main Looper is Looper (main, tid 1) {256ea4a6})
at android.webkit.WebView.checkThread(WebView.java:2204)
at android.webkit.WebView.getUrl(WebView.java:1293)
at com.anshuman.cgcautologin.MainActivity$2.run(MainActivity.java:62)
at java.util.Timer$TimerImpl.run(Timer.java:284)
Caused by: java.lang.Throwable: A WebView method was called on thread 'Timer-0'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {256ea4a6} called on null, FYI main Looper is Looper (main, tid 1) {256ea4a6})
at android.webkit.WebView.checkThread(WebView.java:2194)
at android.webkit.WebView.getUrl(WebView.java:1293)
at com.anshuman.cgcautologin.MainActivity$2.run(MainActivity.java:62)
at java.util.Timer$TimerImpl.run(Timer.java:284)
其实我想要的是当我的应用程序打开它会去大学网站,它会以编程方式填写所有的细节,如用户名,密码,然后它会自动点击登录按钮。这部分工作正常后,我想要的是,我登录后按下按钮每页都会重新加载的页面。请问我应该怎么做 –
我会把'webView.postDelayed()'放在'onPageFinished()'里面。这样,如果页面加载时间超过5秒,它仍然可以正常工作。 –
不,这对我来说无关紧要。问题是我的大学有一些安全性,每1200秒你必须再次登录,但如果我在此之前重新加载我的页面,那么它将再次提供1200秒。所以我想要做的是登录后在我的应用程序会自动重新加载页面在每1100秒和用户不需要登录他们的帐户每次 –