Вот метод, который получает строки выбранных изображений,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Check which request we're responding to
if (requestCode == OPEN_MEDIA_PICKER) {
// Make sure the request was successful
if (resultCode == RESULT_OK && data != null) {
selectionResult = data.getStringArrayListExtra("result");
}
}
}
Это функция загрузки. Я думаю, что проблема может быть, когда я конвертирую String в URI, используя URI.parse()
.
Может кто-нибудь предложить лучший способ загрузки изображений
private void uploadImages() {
simpleProgressBar.setVisibility(View.VISIBLE);
insideImageStorageReference = FirebaseStorage.getInstance().getReference("HOSTELS").child("2");
for( i=0;i<selectionResult.size();i++){
StorageReference fileReference = insideImageStorageReference.child("INSIDE_IMAGE"+i+ "." + getFileExtension(Uri.parse(selectionResult.get(i))));
if (selectionResult.get(i) != null)
fileReference.putFile(Uri.parse(selectionResult.get(i)))
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String download_rul = uri.toString();
insideImgRef.child("PIC"+(i+1)).setValue(download_rul);
simpleProgressBar.setProgress(i+10);
}
});
}
})
ОШИБКА LOGCAT ПОСЛЕ ВЫБОРА ВСЕХ ИЗОБРАЖЕНИЙ ИЗ УСТРОЙСТВА (ЭМУЛЯТОРА)
W/StorageTask: unable to change internal state to: INTERNAL_STATE_CANCELED
isUser: false from state:INTERNAL_STATE_IN_PROGRESS
E/StorageException: StorageException has occurred.
An unknown error occurred, please check the HTTP result code and inner
exception for server response.
Code: -13000 HttpResult: 0
No content provider: /storage/emulated/0/DCIM/Camera/IMG_20190610_200142_1.jpg
java.io.FileNotFoundException: No content provider: /storage/emulated/0/DCIM/Camera/IMG_20190610_200142_1.jpg
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1131)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:982)
at android.content.ContentResolver.openInputStream(ContentResolver.java:702)
at com.google.firebase.storage.UploadTask.<init>(com.google.firebase:firebase-storage@@17.0.0:133)
at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@17.0.0:260)
at com.teepe.teepestayscontrollerapp.addImages.uploadImages(addImages.java:132)
at com.teepe.teepestayscontrollerapp.addImages.access$000(addImages.java:31)
at com.teepe.teepestayscontrollerapp.addImages$2.onClick(addImages.java:74)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
StorageException has occurred.