我仍然没有太多的编码经验,对我的无知感到抱歉。
我希望将多个图片文件上传到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"/>
适用于单个文件但不适用于多个文件。 那么我做错了什么或者还有其他方法可以上传多个文件吗?