(对不起,我的英语)(对不起,如果这个问题是无关的,我是编程新手),所以我正在制作一个聊天应用程序,但当我尝试发送照片时,它不会发送,只有当我发送它两次时,它才会保存在数据库中。
下面是我在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.android.gms.dynamite_dynamitemodulesc@12685024@12.6.85 (040406-197041431):147)
at bha.a(:com.google.android.gms.dynamite_dynamitemodulesc@12685024@12.6.85 (040406-197041431):119)
at bgu.onTransact(:com.google.android.gms.dynamite_dynamitemodulesc@12685024@12.6.85 (040406-197041431):7)
at android.os.Binder.transact(Binder.java:392)
at com.google.android.gms.internal.firebase_storage.zza.transactAndReadExceptionReturnVoid(Unknown Source)
at com.google.android.gms.internal.firebase_storage.zzm.zze(Unknown Source)
at com.google.android.gms.internal.firebase_storage.zzq.zza(Unknown Source)
at com.google.android.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);
}
);
}
}
这里
发布于 2018-06-18 00:38:47
putFile()返回最终表示文件上传成功的UploadTask。您需要使用该任务。看起来您已经熟悉了任务,因为您已经在使用getDownloadUrl()返回的任务来确定数据何时可用。
发布于 2018-06-18 00:40:27
Uri selectedImageUri = data.getData();
StorageReference photoRef = mSRreference.child(selectedImageUri.toString());
photoRef.putFile(selectedImageUri).addOnSuccessListener(new
OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot){
//taskSnapshot.getDownloadUrl()
Message m = new Message(null, mUsername, taskSnapshot.getDownloadUrl().toString());
mDbReference.push().setValue(m);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
这将会完成你的工作。
https://stackoverflow.com/questions/50897898
复制相似问题