Как скачать apk файл из php файла в android studio программно? - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь создать приложение для Android, которое может загружать apk-файл из php-файла, который предоставляет непубличный apk-файл для загрузки, если пользователь аутентифицирован.

Не уверен, какой методиспользовать в Android Studio, но мой PHP-файл выглядит следующим образом и работает в браузере рабочего стола:

 <?php
    $file = 'APP_NAME.apk';
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/vnd.android.package-archive');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
    ?>

и мой код Android выглядит следующим образом:

btnDownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                prgDialog.show();

                downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);
                DownloadManager.Request request = new DownloadManager.Request(Uri.parse("https://..mobile/api/download.php"));

                queueid = downloadManager.enqueue(request);
            }
        });

BroadcastReceiver receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if(DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
                    DownloadManager.Query req_query = new DownloadManager.Query();
                    req_query.setFilterById(queueid);

                    Cursor c = downloadManager.query(req_query);

                    if(c.moveToFirst()) {
                        int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);

                        if(DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) {
                            prgDialog.hide();

                            Intent i = new Intent();
                            i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
                            startActivity(i);
                        }
                    }
                }
            }
        };

        registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

Мне удается загрузитьфайл с именем download.php вместо APP_NAME.apk.Любые идеи, как исправить имя файла и формат на конце андроида?

...