Uri и getData - это пустой объект при загрузке в Firebase - PullRequest
0 голосов
/ 06 ноября 2018

Я получаю эту ошибку при загрузке захваченного изображения в Firebase. Я видел в учебнике, что это может быть из-за моего телефона, но я сильно сомневаюсь в этом. Странная вещь, если я добавлю это к Bitmap, я могу отобразить изображение. Из URI, который выдает ошибку при загрузке.

Ошибка:

 Process: com.otw.siliconsmelters, PID: 13538
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65637, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.otw.siliconsmelters/com.otw.siliconsmelters.quality_check_steps}: java.lang.IllegalArgumentException: uri cannot be null
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4177)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4220)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1579)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:163)
    at android.app.ActivityThread.main(ActivityThread.java:6228)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
 Caused by: java.lang.IllegalArgumentException: uri cannot be null
    at com.google.android.gms.common.internal.Preconditions.checkArgument(Unknown Source)
    at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@16.0.4:258)
    at com.otw.siliconsmelters.row1.onActivityResult(row1.java:289)
    at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:156)
    at android.app.Activity.dispatchActivityResult(Activity.java:7124)

Объявления:

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

Мой код для захвата:

 private void showImageChosen() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(takePictureIntent, CHOOSE_IMAGE);
}

Мой код для загрузки в Firebase:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CHOOSE_IMAGE && resultCode == RESULT_OK) {

            Uri uri = data.getData();

            StorageReference filepath = mStorage.child("PictureTest").child("" + System.currentTimeMillis());

            filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {

                }
            });

    }
}

1 Ответ

0 голосов
/ 06 ноября 2018

Попробуйте это:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CHOOSE_IMAGE) {

        if (data != null) {
            Uri uri = data.getData();

            if (uri != null) {

                StorageReference filepath = mStorage.child("PictureTest").child("" + System.currentTimeMillis());

                filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {

                    }
                });
            }
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...