123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package com.norman.webviewup.demo;
- import android.Manifest;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.app.DownloadManager;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.util.Log;
- import android.webkit.CookieManager;
- import android.webkit.URLUtil;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.Toast;
- import androidx.annotation.RequiresApi;
- import androidx.core.app.ActivityCompat;
- public class WebViewActivity extends Activity {
- private final int STORAGE_PERMISSION_CODE = 1;
- private WebView mWebView;
- private void requestStoragePermission() {
- if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
- new AlertDialog.Builder(this)
- .setTitle("Permission needed")
- .setMessage("This permission is needed to download files")
- .setPositiveButton("ok", (dialog, which) -> ActivityCompat.requestPermissions(WebViewActivity.this,
- new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE))
- .setNegativeButton("cancel", (dialog, which) -> dialog.dismiss())
- .create().show();
- } else {
- ActivityCompat.requestPermissions(this,
- new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);
- }
- }
- @RequiresApi(api = Build.VERSION_CODES.Q)
- @Override
- @SuppressLint("SetJavaScriptEnabled")
- protected void onCreate(Bundle savedInstanceState) {
- requestStoragePermission();
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_webview);
- mWebView = findViewById(R.id.webview);
- // mWebView.setWebViewRenderProcessClient();
- // mWebView.getWebViewLooper()
- WebSettings webSettings = mWebView.getSettings();
- String userAgentString = webSettings.getUserAgentString();
- Log.v("webview", "userAgentString" + userAgentString);
- webSettings.setJavaScriptEnabled(true);
- mWebView.setWebViewClient(new HelloWebViewClient());
- mWebView.setDownloadListener((url, userAgent, contentDisposition, mimeType, contentLength) -> {
- Uri source = Uri.parse(url);
- DownloadManager.Request request = new DownloadManager.Request(source);
- String cookies = CookieManager.getInstance().getCookie(url);
- request.addRequestHeader("cookie", cookies);
- request.addRequestHeader("User-Agent", userAgent);
- request.setDescription("Downloading File...");
- request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType));
- request.allowScanningByMediaScanner();
- request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
- request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimeType));
- DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
- dm.enqueue(request);
- Toast.makeText(getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show();
- });
- mWebView.loadUrl("https://test-videos.co.uk/bigbuckbunny/mp4-h265"); //Replace The Link Here
- }
- private static class HelloWebViewClient extends WebViewClient {
- @Override
- public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
- // view.loadUrl(url);
- return false;
- }
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- }
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- }
- }
- @Override
- public void onBackPressed() {
- if (mWebView.canGoBack()) {
- mWebView.goBack();
- } else {
- super.onBackPressed();
- }
- }
- }
|