Я хочу создать что-то вроде Whatsapp, скачивая туда файлы. Я попробовал диспетчер загрузок, но он открывает пустой документ с указанным идентификатором. Я не знаю, как использовать firebase, но все говорят, что это должно работать. Я даже пытался найти местоположение загруженного файла на моем устройстве, но он виден только при загрузке, а не в файловом менеджере
public class Notes extends AppCompatActivity implements LoaderManager.LoaderCallbacks<List<PdfDocument>>{
private static final String TAG = "MyActivity";
private PdfDocumentAdapter pdfDocuments;
DownloadManager dm;
long queueId;
String Title;
String Description;
String url;
private static final String MAIN_URL = "https://lazyengineer.tech/leapi/polytechnic/?branch=Computer%20Engineering&types=ebook&api=ayjLCzL0IphkNbN1IjugUQ&format=json";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notes);
ConnectivityManager cm = (ConnectivityManager)this.getSystemService(this.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if(isConnected) {
pdfDocuments = new PdfDocumentAdapter(this, new ArrayList<PdfDocument>());
GridView gridView = (GridView) findViewById(R.id.grid);
gridView.setAdapter(pdfDocuments);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
PdfDocument currentPdfDocument = pdfDocuments.getItem(position);
Title = currentPdfDocument.getTitle();
Description = currentPdfDocument.getDescription();
url = currentPdfDocument.getFileUrl();
downloadPdf(url);
}
});
getSupportLoaderManager().initLoader(0, null, this).forceLoad();
}
else {
//TODO set text that not able to connect to the internet
}
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (dm.ACTION_DOWNLOAD_COMPLETE.equals(action)){
Uri uri = dm.getUriForDownloadedFile(queueId);
String mimeType = dm.getMimeTypeForDownloadedFile(queueId);
Intent open = new Intent(Intent.ACTION_VIEW);
open.setDataAndType(uri, mimeType);
open.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(open);
}
}
};
registerReceiver(broadcastReceiver, new IntentFilter(dm.ACTION_DOWNLOAD_COMPLETE));
}
@NonNull
@Override
public Loader<List<PdfDocument>> onCreateLoader(int id, @Nullable Bundle args) {
Uri baseUri = Uri.parse(MAIN_URL);
Uri.Builder uriBuilder = baseUri.buildUpon();
PdfLoader.MAIN_URL = uriBuilder.toString();
return new PdfLoader(this);
}
@Override
public void onLoadFinished(@NonNull Loader<List<PdfDocument>> loader, List<PdfDocument> data) {
updateUi(data);
}
@Override
public void onLoaderReset(@NonNull Loader<List<PdfDocument>> loader) {
loader.reset();
}
private void updateUi(final List<PdfDocument> data) {
if(data != null) {
if (!data.isEmpty()) {
pdfDocuments.clear();
pdfDocuments.addAll(data);
return;
}
}
}
public void downloadPdf(String url){
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setDescription(Description).setTitle(Title);
queueId = dm.enqueue(request);
}
}