Skip to main content

Android Studio WebView - Downloading files with admin-ajax.php extension

I've been learning Android Studio (I'm not an expert). However, I managed to code my WebView app from a website and I can't make it download the files as their original file names... For some reason I'm getting an "admin-ajax.php" file in return.

This is the code on MainActivity.java:

  mywebView.setDownloadListener(new DownloadListener() {
        @Override
        public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long l) {
            //file name
            String fileName = URLUtil.guessFileName(url,contentDisposition,getFileType(url));
            sFileName = fileName.substring(fileName.lastIndexOf('/')+1);
            sURL = url;
            sUserAgent = userAgent;

            //check android version
            if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.M){
                if (ContextCompat.checkSelfPermission( MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
    ==PackageManager.PERMISSION_GRANTED){
                    downloadFile(fileName,url,userAgent);
                }else {
                    requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}
                    ,  1001);
                    }
                }else{
                    downloadFile(fileName,url,userAgent);

                }
            
            }

        public void onPageStarted(WebView view,String url, Bitmap favicon){
            onPageStarted (view,url, favicon);
        }

        });

    }

@Override
public void onBackPressed() {
    if (webView.canGoBack())
        webView.goBack();
    else
    super.onBackPressed();
}

public String getFileType(String url){
    ContentResolver contentResolver = getContentResolver();
    MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
    return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(Uri.parse(url)));
}

    private void downloadFile(String fileName, String url, String userAgent){
        try {
            DownloadManager downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);
            DownloadManager.Request request = new DownloadManager.Request (Uri.parse(url));
            String cookie  = CookieManager.getInstance().getCookie(url);
            request.setTitle(fileName)
                    .setDescription("is being downloaded")
                    .addRequestHeader("cookie",cookie)
                    .addRequestHeader("User - Agent", userAgent)
                    .setMimeType(getFileType(url))
                    .setAllowedOverMetered(true)
                    .setAllowedOverRoaming(true)
                    .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE
                    |DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                    downloadManager.enqueue(request);
            sURL = "";
            sUserAgent = "";
            sFileName = "";
            Toast.makeText( this, "Download Started", Toast.LENGTH_SHORT).show();

        }catch (Exception ignored){
            Toast.makeText( this, "error"+ignored, Toast.LENGTH_SHORT).show();

        }
    }


public void onRequestPermissionResult(int requestCode, @NonNull String [] permissions, int[] grantResults){
    super.onRequestPermissionsResult(requestCode,permissions,grantResults);
    if (requestCode==1001){
        if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
            if (!sURL.equals("")&&!sFileName.equals("")&&!sUserAgent.equals("")){
                downloadFile(sFileName,sURL,sUserAgent);
            }
        }
    }
}

What could be the issue?

Thank you everyone for the support.

Kind regards,



source https://stackoverflow.com/questions/69272708/android-studio-webview-downloading-files-with-admin-ajax-php-extension

Comments

Popular posts from this blog

Prop `className` did not match in next js app

I have written a sample code ( Github Link here ). this is a simple next js app, but giving me error when I refresh the page. This seems to be the common problem and I tried the fix provided in the internet but does not seem to fix my issue. The error is Warning: Prop className did not match. Server: "MuiBox-root MuiBox-root-1" Client: "MuiBox-root MuiBox-root-2". Did changes for _document.js, modified _app.js as mentioned in official website and solutions in stackoverflow. but nothing seems to work. Could someone take a look and help me whats wrong with the code? Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console