Я пытаюсь создать приложение для 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.Любые идеи, как исправить имя файла и формат на конце андроида?