Firebase 上传功能不适用于 Android 11

时间:2021-07-04 08:33:14

标签: android firebase firebase-realtime-database firebase-storage

我正在使用 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!

0 个答案:

没有答案