Android 如何从webview下载文件并从webview打开playstore
我搜索了其他关于如何从WebView下载文件的问题 我希望能够使用网站下载文件,也允许用户从WebView打开Playstore。例如,一些网站的应用程序中有一个链接或广告,可以打开对话框,使用Playstore或浏览器打开。我该怎么做呢 以下是我的代码:Android 如何从webview下载文件并从webview打开playstore,android,android-webview,Android,Android Webview,我搜索了其他关于如何从WebView下载文件的问题 我希望能够使用网站下载文件,也允许用户从WebView打开Playstore。例如,一些网站的应用程序中有一个链接或广告,可以打开对话框,使用Playstore或浏览器打开。我该怎么做呢 以下是我的代码: import android.os.Build; import android.os.Bundle; import android.view.KeyEvent; import android.webkit.CookieManager; imp
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.CookieManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.GeolocationPermissions;
import android.webkit.WebChromeClient;
import android.app.Activity;
import android.webkit.DownloadListener;
import android.app.DownloadManager.Request;
import android.app.DownloadManager;
import android.os.Environment;
import android.net.Uri;
public class MainActivity extends Activity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Allow third party cookies for Android Lollipop
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView = (WebView) findViewById(R.id.activity_main_webview);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptThirdPartyCookies(mWebView,true);
}
mWebView = (WebView) findViewById(R.id.activity_main_webview);
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setGeolocationEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
// callback.invoke(String origin, boolean allow, boolean remember);
callback.invoke(origin, true, false);
}
});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.getSettings().setSupportMultipleWindows(true);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.loadUrl("http://www.mywebsite.com/");
mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
//for downloading directly through download manager
Request request = new Request(Uri.parse(url));
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "download.mp3");
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(request);
}
});
}
}
编辑:
忘了提到它确实有效,但在文件下载后,它说无法打开文件您有哪些与无法打开文件相关的日志?请提供更多与此相关的信息 作为第一种方法,我建议添加缺少的:
request.setMimeType(mimeType);
你给我的密码。无法打开文件是在文件下载后出现的,尝试打开该文件时会显示“无法打开文件”对话框。