firebase存储中的java在保存照片之前,我需要发送两次照片
(抱歉我的英语)(抱歉,如果这个问题与编程无关,我是新手)所以我正在制作一个聊天应用程序,但当我尝试发送照片时,它不会发送,只有当我发送两次后,它才会保存在数据库中
以下是我在logcat中得到的警告:
06-17 17:12:27.685 927-1000/? E/WifiConfigStore: updateConfiguration freq=2442 BSSID=f4:f2:6d:67:54:e8 RSSI=-59 "TP-LINK_54E8"WPA_PSK06-17 17:12:27.831 10830-11008/com.google.firebase.udacity.friendlychat E/StorageException: StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404
{ "error": { "code": 404, "message": "Not Found. Could not get object" }}
java.io.IOException: { "error": { "code": 404, "message": "Not Found. Could not get object" }}
at bha.a(:com.google.安卓.gms.dynamite_dynamitemodulesc@12685024@12.6.85 (040406-197041431):147)
at bha.a(:com.google.安卓.gms.dynamite_dynamitemodulesc@12685024@12.6.85 (040406-197041431):119)
at bgu.onTransact(:com.google.安卓.gms.dynamite_dynamitemodulesc@12685024@12.6.85 (040406-197041431):7)
at 安卓.os.Binder.transact(Binder.java:392)
at com.google.安卓.gms.internal.firebase_storage.zza.transactAndReadExceptionReturnVoid(Unknown Source)
at com.google.安卓.gms.internal.firebase_storage.zzm.zze(Unknown Source)
at com.google.安卓.gms.internal.firebase_storage.zzq.zza(Unknown Source)
at com.google.安卓.gms.internal.firebase_storage.zzf.zza(Unknown Source)
at com.google.firebase.storage.zzc.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)06-17 17:12:28.091 927-927/? E/WifiTrafficPoller: TRAFFIC_STATS_POLL true Token 1236 num clients 10
packet count Tx=1047457 Rx=3285705 06-17 17:12:29.092 927-927/? E/WifiTrafficPoller: TRAFFIC_STATS_POLL true Token 1236 num clients 10
packet count Tx=1047458 Rx=3285706
下面是代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK)
{
Uri selectedImageUri = data.getData();
StorageReference photoRef = mSRreference.child(selectedImageUri.toString());
photoRef.putFile(selectedImageUri);
photoRef.getDownloadUrl().addOnSuccessListener(
new OnSuccessListener<Uri>()
@Override
public void onSuccess(Uri uri)
{
Message m = new Message(null, mUsername, uri.toString());
mDbReference.push().setValue(m);
}
);
}
}
这里
# 1 楼答案
这将完成你的工作
# 2 楼答案
putFile()返回一个UploadTask,它最终指示文件已成功上载。你需要使用这个任务。看起来您已经熟悉了任务,因为您已经在使用getDownloadUrl()返回的任务来确定数据何时可用