在Android上将多个图像文件上传到Firebase Storage

时间:2016-11-02 05:38:46

标签: android firebase firebase-storage

我仍然没有太多的编码经验,对我的无知感到抱歉。

我希望将多个图片文件上传到Firebase存储,并在上传下一个文件之前逐个完成等待。

以下是我尝试使用递归函数...

的方法
private void uploadProperties(final StorageReference ref, final ArrayList<Uri> images, final int index,
                              final UploadingListener uploadingListener, final String URL)
{
    final StorageReference tempRef=ref.child(Integer.toString(index));
    tempRef.putFile(images.get(index)).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            String divide="~~";
            if (index==0)
            {
                divide="";
            }
            if (index!=images.size()-1)
            {
                uploadProperties(ref,images,index+1,uploadingListener,URL+divide+taskSnapshot.getDownloadUrl().toString());
            }
            else
            {
                uploadingListener.OnComplete(Status.SUCCESS, URL+divide + taskSnapshot.getDownloadUrl().toString());
            }
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            uploadingListener.OnComplete(Status.FAILED,"");
        }
    });
}

要使用它... propertiesImagestoRef是正确路径的存储引用。图像是要上传的图像的Arraylist。

uploadProperties(propertiesImagesStorRef, images, 0, new UploadingListener() {
        @Override
        public void OnComplete(Status status, String URLs) {//coding here to split the URLs and do all after upload complete stuffs},"");

但我收到了这个错误。

  

java.lang.SecurityException:Permission Denial:从pid = 3040,uid = 10058读取com.android.providers.media.MediaDocumentsProvider uri内容://com.android.providers.media.documents/document/image%3A40需要android.permission.MANAGE_DOCUMENTS或grantUriPermission()

在我的AndroidManifest.xml中,我已经添加了

    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

适用于单个文件但不适用于多个文件。 那么我做错了什么或者还有其他方法可以上传多个文件吗?

0 个答案:

没有答案