我正在使用 Firebase 从我的 Android 应用上传数据。当我在 android 10 或更低版本中使用相同的应用程序时,其工作和文件成功存储在 Firebase 存储中,但是当我在 android 11 应用程序上使用它时突然停止。
使用 Android Studio 4.1.3 版
Firebase 依赖版本:
implementation 'com.google.firebase:firebase-analytics:19.0.0'
implementation 'com.google.firebase:firebase-auth:21.0.1'
implementation 'com.google.firebase:firebase-database:20.0.0'
implementation 'com.google.firebase:firebase-storage:20.0.0'
implementation 'com.google.firebase:firebase-messaging:21.0.1'
这是代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 102 && resultCode == RESULT_OK && data!=null){
//add.setEnabled(true);
ArrayList<MediaFile> mediaFiles = data.getParcelableArrayListExtra(
FilePickerActivity.MEDIA_FILES
);
//Uri datas = mediaFiles.getUri();
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadFile(mediaFiles.get(0).getUri());
}
});
}
}
private void uploadFile(Uri data) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("File is loading...");
progressDialog.show();
String filename = System.currentTimeMillis()+"";
StorageReference reference = storageReference.child("servers");
reference.child(filename).putFile(data)
.addOnSuccessListener((Executor) this, taskSnapshot -> {
Log.d(TAG, "uploadFromUri:onSuccess");
Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isComplete()) {
uri = uriTask.getResult();
Intent detail = AddServer.this.getIntent();
type = detail.getExtras().getString("type");
if (type.equals("free")){
serverFree();
}else {
serverPaid();
}
Toast.makeText(AddServer.this, "File Upload", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
})
.addOnProgressListener(snapshot -> {
double progress = (100.0* snapshot.getBytesTransferred())/snapshot.getTotalByteCount();
progressDialog.setMessage("File upload.." + (int) progress+"%");
});
}
更新:添加了 Logcat
java.lang.ClassCastException: com.infinite.vpnmanager.view.AddServer cannot be cast to java.util.concurrent.Executor
at com.infinite.vpnmanager.view.AddServer.uploadFile(AddServer.java:532)
at com.infinite.vpnmanager.view.AddServer.access$100(AddServer.java:46)
at com.infinite.vpnmanager.view.AddServer$4.onClick(AddServer.java:515)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2021-07-04 14:32:15.588 1993-2121/? E/InputDispatcher: channel '6c7cfd8 File is loading... (server)' ~ Channel is unrecoverably broken and will be disposed!
2021-07-04 14:32:15.590 1993-2121/? E/InputDispatcher: channel '23d29d4 com.infinite.vpnmanager/com.infinite.vpnmanager.view.AddServer (server)' ~ Channel is unrecoverably broken and will be disposed!
2021-07-04 14:32:15.591 1993-2121/? E/InputDispatcher: channel '19bd25e com.infinite.vpnmanager/com.infinite.vpnmanager.view.AddFree (server)' ~ Channel is unrecoverably broken and will be disposed!
2021-07-04 14:32:15.592 1746-1917/? E/FrameworkListener: read() failed (Connection reset by peer)
2021-07-04 14:32:15.593 1993-2121/? E/InputDispatcher: channel '7e1a6ac com.infinite.vpnmanager/com.infinite.vpnmanager.view.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!