。我正在尝试从URL下载文件 。当我从普通浏览器打开URL时,它会将我重定向到登录页面,一旦我登录,就会开始下载 。我需要在我的应用程序中具有相同的功能 。我需要通过webview登录。登录后,应触发下载。
当我使用以下逻辑时,即使我在webview中登录,浏览器也会重定向到登录页面。请帮忙。
private void loadPage(final String iUrl) {
// TODO Auto-generated method stub
WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setBuiltInZoomControls(true);
int default_zoom_level=100;
webView.setInitialScale(default_zoom_level);
final Activity activity = this;
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
activity.setTitle("I-Aurora: Loading...");
}
});
webView.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(getApplicationContext(), description, Toast.LENGTH_SHORT).show();
}
public void onPageFinished (WebView view, String url) {
activity.setTitle("I-Aurora: Login");
}
});
webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,String contentDisposition,String mimetype,long contentLength) {
Intent int3 = new Intent(Intent.ACTION_VIEW);
int3.setClassName("com.android.chrome", "com.google.android.apps.chrome.Main");
int3.setData(Uri.parse(url));
startActivity(int3);
}
});
webView.loadUrl(iUrl);
Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Button Click" , Toast.LENGTH_SHORT).show();
}
});
return;
}
答案 0 :(得分:0)
使用WebView登录时,应用程序中的WebView将登录,而不是浏览器。两者之间没有共享状态。
您需要做的是自己在DownloadListener中处理下载(例如this)和pass the cookies needed for authentication。