The below code demonstrate how we can download file from the webview.
permissions required
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
code
public class MainActivity extends AppCompatActivity {
Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext=this;
//find the webView
WebView myWebView = (WebView) findViewById(R.id.myweb);
//Load url in webview
//myWebView.setWebChromeClient(new WebChromeClient()); //--> issue with android pie and above. opens default browser
myWebView.setWebViewClient(new WebViewClient());
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(final String url, final String userAgent, String contentDisposition, String mimetype, long contentLength)
{
//Checking runtime permission for devices above Marshmallow.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v("SKDINFO","Permission is granted");
downloadDialog(url,userAgent,contentDisposition,mimetype);
} else {
Log.v("SKDINFO","Permission is revoked");
//requesting permissions.
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
}
else {
//Code for devices below API 23 or Marshmallow
Log.v("SKDINFO","Permission is granted");
downloadDialog(url,userAgent,contentDisposition,mimetype);
}
}
});
myWebView.loadUrl("http://www.androidlearner.com");
}
public void downloadDialog(final String url,final String userAgent,String contentDisposition,String mimetype)
{
//getting filename from url.
final String filename = URLUtil.guessFileName(url,contentDisposition,mimetype);
//alertdialog
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
//title of alertdialog
builder.setTitle("Download");
//message of alertdialog
builder.setMessage("Do you want to save " +filename);
//if Yes button clicks.
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//DownloadManager.Request created with url.
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
//cookie
String cookie= CookieManager.getInstance().getCookie(url);
//Add cookie and User-Agent to request
request.addRequestHeader("Cookie",cookie);
request.addRequestHeader("User-Agent",userAgent);
//file scanned by MediaScannar
request.allowScanningByMediaScanner();
//Download is visible and its progress, after completion too.
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
//DownloadManager created
DownloadManager downloadManager=(DownloadManager)getSystemService(DOWNLOAD_SERVICE);
//Saving files in Download folder
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);
//download enqued
downloadManager.enqueue(request);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
//cancel the dialog if Cancel clicks
dialog.cancel();
}
});
//alertdialog shows.
builder.create().show();
}
}
Pool Browser APK is not just about fast browsing; it also brings in added benefits for users who love entertainment and online activities. With a smooth design and secure system, it offers reliable performance for everyday use. The app helps you stay connected, access your favorite sites, and manage your needs with ease. An interesting part is that it supports gaming communities, where you can even check updates related to pool tournaments for pool browser, making it more engaging for users who enjoy both browsing and games.
ReplyDelete