【问题标题】:App crashes when trying to upload to Firebase尝试上传到 Firebase 时应用崩溃
【发布时间】:2017-06-12 23:01:17
【问题描述】:

当我尝试上传到 Firebase 时,我的应用因following error. 而崩溃

我有一个用于调用相机的“上传”按钮。单击它后,图像不会上传到 Firebase。

我的代码:

private Button mUploadBtn;
private ImageView mImageView;

private static final int CAMERA_REQUEST_CODE = 1;

private StorageReference mStorage;

Uri photoURI;

private ProgressDialog mProgressDialog;

private static final int GALLERY_INTENT = 2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mStorage = FirebaseStorage.getInstance().getReference();

    mUploadBtn = (Button) findViewById(R.id.upload);

    mImageView = (ImageView) findViewById(R.id.imageView);

    mProgressDialog = new ProgressDialog(this);

    mUploadBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

            startActivityForResult(intent, CAMERA_REQUEST_CODE);
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {

        mProgressDialog.setMessage("Uplaoding");
        mProgressDialog.show();

        Uri uri = data.getData();



        StorageReference filepath = mStorage.child("Photos").child("file");
        filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                mProgressDialog.dismiss();
                Toast.makeText(MainActivity.this,"Done",Toast.LENGTH_LONG).show();
            }
        });




    }
}

【问题讨论】:

  • 它从您发布的图像中清楚地写入您的错误日志中。 Uri can't be null.

标签: android firebase firebase-storage


【解决方案1】:

您似乎没有正确使用相机意图。您显示的代码期望相机应用程序返回的意图包含通过其 getData() 方法捕获的图像的 Uri。这不是它的工作方式。

我建议您关注this tutorial 而不是使用相机。

【讨论】:

    【解决方案2】:

    覆盖这个方法 并执行以下步骤

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK)
        {
            Uri uri = data.getData();
            StorageReference image_path = storageReference.child("Camera Photos").child(uri.getLastPathSegment());
            image_path.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Toast.makeText(MainActivity.this, "Image Uploaded", Toast.LENGTH_SHORT).show();
                }
            });
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 1970-01-01
      • 2022-09-30
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多