Android 如果没有互联网连接,如何停止将图像上传到云存储
我正在使用Firestore和Firebase存储上传图像。但当上传过程开始时,如果没有互联网连接,它仍然会显示进度条。我想停止加载,它应该显示消息Android 如果没有互联网连接,如何停止将图像上传到云存储,android,google-cloud-firestore,firebase-storage,Android,Google Cloud Firestore,Firebase Storage,我正在使用Firestore和Firebase存储上传图像。但当上传过程开始时,如果没有互联网连接,它仍然会显示进度条。我想停止加载,它应该显示消息 提前谢谢 当internet连接失败时,尝试此方法onFailure()方法自动调用。然后在onFailure()中隐藏加载和显示消息 //此方法将上载文件 public void uploadFile(字符串mFilePath、字符串imageName、CallBackUploadImage回调){ //如果有要上传的文件 if(mFilePat
提前谢谢 当internet连接失败时,尝试此方法onFailure()方法自动调用。然后在onFailure()中隐藏加载和显示消息
//此方法将上载文件
public void uploadFile(字符串mFilePath、字符串imageName、CallBackUploadImage回调){
//如果有要上传的文件
if(mFilePath!=null){
uriimagepath=Uri.fromFile(新文件(mFilePath));
storagereferef=mStorageRef.child(“images/”+imageName+“.jpg”);
riversisref.putFile(imagePath)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
@抑制警告(“VisibleForTests”)
Uri downloadUrl=taskSnapshot.getDownloadUrl();
callback.onSuccess();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
callback.onServerError();
}
});
}
}
当internet连接失败时,请尝试此方法。onFailure()方法将自动调用。然后,您将在onFailure()中隐藏加载和显示消息
//此方法将上载文件
public void uploadFile(字符串mFilePath、字符串imageName、CallBackUploadImage回调){
//如果有要上传的文件
if(mFilePath!=null){
uriimagepath=Uri.fromFile(新文件(mFilePath));
storagereferef=mStorageRef.child(“images/”+imageName+“.jpg”);
riversisref.putFile(imagePath)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
@抑制警告(“VisibleForTests”)
Uri downloadUrl=taskSnapshot.getDownloadUrl();
callback.onSuccess();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
callback.onServerError();
}
});
}
}
用于云存储的Firebase SDK将自动重试文件上载,并在连接丢失和恢复时恢复。当连接丢失时,上传不会立即失败
如果您想在连接丢失时取消上载,则必须自行检测该情况并手动取消上载
Firebase SDK for Cloud Storage将自动重试文件上载,并在连接丢失和恢复时恢复。当连接丢失时,上传不会立即失败 如果您想在连接丢失时取消上载,则必须自行检测该情况并手动取消上载 谢谢大家的帮助。 但我发现(从我的问题中)Firebase不负责网络连接。 我的问题解决了。它还会重新启动活动。谢谢大家的帮助。 但我发现(从我的问题中)Firebase不负责网络连接。
我的问题解决了。它还会重新启动活动。Firestore和Firebase启用脱机存储。如果您想要实现此行为,您应该做的是检查,如果它可用,则处理事务。感谢您提供的解决方案。但是有代码来检查连接,并且工作正常。我想要的是,如果没有互联网,进度条应该停止加载,消息应该显示出来。我想我描述了你应该怎么做。如果您有一些检查连接性的代码,并且工作正常,只需在事务之前使用它即可。。根本不会有任何进度条,因为事务甚至不会启动。Firestore和Firebase启用脱机存储。如果您想要实现此行为,您应该做的是检查,如果它可用,则处理事务。感谢您提供的解决方案。但是有代码来检查连接,并且工作正常。我想要的是,如果没有互联网,进度条应该停止加载,消息应该显示出来。我想我描述了你应该怎么做。如果您有一些检查连接性的代码,并且工作正常,只需在事务之前使用它即可。。根本不会有任何进度条,因为事务甚至不会启动。在这里,我使用回调来处理成功或错误消息。您可以直接设置错误消息,并在onFailure方法中隐藏加载程序。private FirebaseStorage mStorage=FirebaseStorage.getInstance();private StorageReference mStorageRef=mStorage.getReferenceFromUrl(“您的url”);好的,Firebase不认为缺少网络连接是失败的。在这里,我使用了一个回调来处理成功或错误消息。您可以直接设置错误消息并在onFailure方法中隐藏加载程序。private FirebaseStorage mStorage=FirebaseStorage.getInstance();private StorageReference mStorageRef=mStorage.getReferenceFromUrl(“您的url”);顺便说一句,Firebase不认为缺乏网络连接是故障。
//this method will upload the file
public void uploadFile(String mFilePath, String imageName, CallBackUploadImage callback) {
//if there is a file to upload
if (mFilePath != null) {
Uri imagePath = Uri.fromFile(new File(mFilePath));
StorageReference riversRef = mStorageRef.child("images/" + imageName + ".jpg");
riversRef.putFile(imagePath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
@SuppressWarnings("VisibleForTests")
Uri downloadUrl = taskSnapshot.getDownloadUrl();
callback.onSuccess();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
callback.onServerError();
}
});
}
}