Ошибка: не удается найти символ messagetextbody.put(“message”, task.getresult().getdownloadurl().tostring());
Я получаю ошибку, когда компилирую приложение. В нем говорится, что
task.getResult().getDownloadUrl().toString() не может найти символ
filePath.putFile(fileUri).addOnCompleteListener(task -> { if (task.isSuccessful()){ Map messageTextBody = new HashMap(); messageTextBody.put("message", task.getResult().getDownloadUrl().toString()); messageTextBody.put("name", fileUri.getLastPathSegment()); messageTextBody.put("type", checker); messageTextBody.put("from", messageSenderID); messageTextBody.put("to", messageReceiverID); messageTextBody.put("messageID", messagePushID); messageTextBody.put("time", saveCurrentTime); messageTextBody.put("date", saveCurrentDate); Map messageBodyDetails = new HashMap(); messageBodyDetails.put(messageSenderRef + "/" + messagePushID, messageTextBody); messageBodyDetails.put(messageReceiverRef + "/" + messagePushID, messageTextBody); RootRef.updateChildren(messageBodyDetails); loadingBar.dismiss(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { loadingBar.dismiss(); Toast.makeText(ChatActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); } }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { @Override public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { double p = (100.0*taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount(); loadingBar.setMessage((int) p + " % Uploading..."); } });
Что я уже пробовал:
пытался использовать этот код
filePath.putFile(fileUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { @Override public void onSuccess(Uri uri) { String downloadUrl = uri.toString(); Map messageImageBody = new HashMap(); messageImageBody.put("message", taskSnapshot.getStorage().getDownloadUrl()); messageImageBody.put("name",fileUri.getLastPathSegment()); messageImageBody.put("type",checker); messageImageBody.put("from",messageSenderID); messageImageBody.put("to", messageReceiverID); messageImageBody.put("messageID", messagePushID); messageImageBody.put("time", saveCurrentTime); messageImageBody.put("date", saveCurrentDate); Map messageBodyDetail = new HashMap(); messageBodyDetail.put(messageSenderRef+ "/" + messagePushID, messageImageBody); messageBodyDetail.put(messageReceiverRef+ "/" + messagePushID, messageImageBody); RootRef.updateChildren(messageBodyDetail); loadingBar.dismiss(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { loadingBar.dismiss(); Toast.makeText(ChatActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); } }); } }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { @Override public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { double p = (100.0* taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount(); loadingBar.setMessage((int) p + " % Uploading..."); } });
но приложение получает сбой при нажатии на файл вот ссылка на исходный код приложения Болтать
Richard MacCutchan
Вам нужно использовать отладчик, чтобы узнать, какой элемент он не может найти.
Tiger Prajapati
ну я забыл упомянуть в ответе, что я новичок в android и как я решаю некоторые проблемы, все еще есть много проблем, которые я не могу решить, например, если я загружаю изображение или какой-то документ в разделе чата с одним человеком чат, то он показывает 2 раза в чате, а когда я закрываю чат и снова открываю чат, то он показывает только один раз. кроме того, получатель не может открыть файл документа.
Richard MacCutchan
Вот почему вам нужно использовать отладчик. Возьмите каждую проблему по очереди и попытайтесь выяснить, почему это происходит. Часто он будет связан с данными, которые пытается обработать ваше приложение; он может быть недействительным, или ваш код принимает определенный формат и т. д. Но только вы можете сделать это, поскольку только у вас есть данные для прохождения через код. Это все часть обучения, чтобы быть разработчиком. Писать код легко, но заставить его работать правильно часто бывает очень трудно.
ZurdoDev
ОП говорит, что ошибка происходит при компиляции, а это значит, что отладчик не поможет. Отладчик еще не запущен во время компиляции.
ZurdoDev
Как сказал Ричард, для такого рода проблем вам нужно использовать отладчик, чтобы увидеть, почему вещи ведут себя так, как они делают. Но мы не видим, что вы делаете, поэтому ничем не можем помочь.
А утверждения типа "получатель не может открыть файл документа" ни для кого больше ничего не значат. Вам нужно отладить, а затем предоставить подробную информацию.
Richard MacCutchan
И последнее предложение говорит, что приложение падает при нажатии на файл. Как и многие разработчики, он не понимает, где заканчивается компиляция и начинается приложение.
ZurdoDev
Правда.