Ошибка загрузки изображения в firebase при нажатии на что-либо на странице подтверждения и сбой приложения

У меня вопрос о загрузке изображения в firebase, и он работает до и после того, как я выполнил другие действия ... Не удалось ... Ваши ребята могут мне помочь ...

Основная ошибка заключалась в том, что когда пользователь нажимал ОК или ОТМЕНА на странице подтверждения, приложение вылетало. Приложение также вылетает, когда пользователь выбирает из галереи ...

Вот лог-кот ...

2021-03-30 22:56:16.853 12576-12576/? E/in.firebasetes: Unknown bits set in runtime_flags: 0x8000

А вот код активности ...

    user = FirebaseAuth.getInstance().getCurrentUser();
    reference = FirebaseDatabase.getInstance().getReference("Users");
    userID = user.getUid();
    storageReference = FirebaseStorage.getInstance().getReference();
    UserPic = (ImageView) findViewById(R.id.UserPic);
    UserPic.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            VerifyPermission();
        }
    if (user != null){
        if (user.getPhotoUrl() != null) {
            Glide.with(this).load(user.getPhotoUrl()).into(UserPic);
        }
    }

}

private void VerifyPermission() {

    if (ContextCompat.checkSelfPermission(UserProfile.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){

        ActivityCompat.requestPermissions(UserProfile.this, new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSION_CODE);

    }else {

        Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
        selectOptionList();

    }

}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == CAMERA_PERMISSION_CODE){

        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){

            selectOptionList();

        }else {

            Toast.makeText(UserProfile.this, "Camera Permissions is required", Toast.LENGTH_LONG).show();

        }

    }
}

private void selectOptionList(){

    selectList = getResources().getStringArray(R.array.selectList);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Select an option");

    builder.setItems(selectList, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which){

                case 0:
                    dispatchTakePictureIntent();
                    break;
                case 1:
                    Intent pickPhoto = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    startActivityForResult(pickPhoto, GALLERY_REQUEST_CODE);
                    break;
                case 2:
                    dialog.dismiss();
                    break;

            }
        }
    });

    alertDialog = builder.create();
    builder.show();

}

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        File photoFile = null;
        try {
            photoFile = createImageFile();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        if (photoFile != null) {
            Uri photoURI = FileProvider.getUriForFile(this, "interpayment.main.firebasetest.android.fileprovider",
                    photoFile);
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
            startActivityForResult(takePictureIntent, CAMERA_REQUEST_CODE);
        }
    }
}

private File createImageFile() throws IOException {
    // Create an image file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + userID + timeStamp + "_";
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    //File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(imageFileName, ".jpg", storageDir);

    currentPhotoPath = image.getAbsolutePath();
    Toast.makeText(UserProfile.this, "Opening Camera", Toast.LENGTH_SHORT).show();
    return image;
}

private void uploadImageToFirebase(String name, Uri contentUri) {

    final StorageReference img = storageReference.child("pictures/" + name);
    img.putFile(contentUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            img.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    Log.d("100", "onSuccess: Upload Image URL is " + uri);
                    Toast.makeText(UserProfile.this, "Uploaded", Toast.LENGTH_SHORT).show();
                    setUserProfileUrl(uri);
                }
            });
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Toast.makeText(UserProfile.this, "Upload Failed", Toast.LENGTH_SHORT).show();
        }
    });

}

private void setUserProfileUrl(Uri uri) {

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    UserProfileChangeRequest request = new UserProfileChangeRequest.Builder().setPhotoUri(uri).build();
    user.updateProfile(request).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Toast.makeText(UserProfile.this, "Updated", Toast.LENGTH_SHORT).show();
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Toast.makeText(UserProfile.this, "Failed set Profile", Toast.LENGTH_SHORT).show();
        }
    });

}

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

    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK){

        if (requestCode == CAMERA_REQUEST_CODE) {

            File f = new File(currentPhotoPath);
            UserPic.setImageURI(Uri.fromFile(f));
            Log.d("tag", "Absolute Url of Image is " + Uri.fromFile(f));
            Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            Uri contentUri = Uri.fromFile(f);
            mediaScanIntent.setData(contentUri);
            this.sendBroadcast(mediaScanIntent);

            uploadImageToFirebase(f.getName(), contentUri);


        }else if (requestCode == GALLERY_REQUEST_CODE && data != null){

            Uri img = data.getData();
            Log.d("tag", "onActivityResult: Gallery Image Uri:  " + img);
            UserPic.setImageURI(img);

            uploadImageToFirebase(currentPhotoPath, img);

        }

    }

}

Я ценю вашу помощь, ребята, и большое спасибо за то, что нашли время, чтобы помочь мне. Logcat был таким ...

Logcat

-------------------------------------------------- -------------------- Обновлять

Мой вопрос решен. Проблема была в функции onStop, я ее удалил. Это потому, что система установила [открытая камера] и [сделать снимок из галереи] как новые действия. Итак, если у вас есть функция onStop, система закрывает приложения, когда вы открываете камеру или другие. Это вызывает автоматическое закрытие приложений и отсутствие ошибок в logcat.

Если у вас возникнут проблемы, лучше всего создать MCVE при публикации вопроса. Вы опубликовали почти 300 строк кода для этой проблемы. Людям сложно разбирать и отлаживать онлайн. Пожалуйста, отредактируйте свой вопрос и изолируйте проблему, так вы увеличите свои шансы на помощь.

Alex Mamo 30.03.2021 18:29

Спасибо @AlexMamo, мне очень жаль, я отредактировал код ... Спасибо за совет!

Victor Lum 30.03.2021 19:11

Это не ошибка и не исключение. Если вы видите исключение в своем журнале регистрации, добавьте его в свой вопрос,

Alex Mamo 31.03.2021 08:53

Я обновил изображение logcat ... Можете ли вы взглянуть и помочь мне ... @AlexMamo

Victor Lum 31.03.2021 09:38

Не вижу никаких исключений в вашем logcat. Попробуйте фильтровать по ошибке в Android Studio, а не по Verbose. Вы видите какие-либо ошибки / исключения?

Alex Mamo 31.03.2021 10:08

Нет ... Никаких ошибок ...

Victor Lum 31.03.2021 15:00

А почему тогда вы говорите, что приложение вылетает?

Alex Mamo 31.03.2021 15:12

Приложение закрывалось, как сбой, мгновенно, когда нажималось ОК ИЛИ отмена, когда была сделана фотография ...

Victor Lum 31.03.2021 15:43

@AlexMamo Спасибо за помощь! Я нашел ошибку и исправил ее ~ Спасибо за вашу помощь. На самом деле большое спасибо!

Victor Lum 31.03.2021 15:55

Если вы нашли проблему, добавьте ее в качестве ответа, чтобы будущие посетители могли ее увидеть;)

Alex Mamo 31.03.2021 16:19

Отметил и спасибо за вашу помощь. Большое спасибо!

Victor Lum 31.03.2021 17:35
0
11
28
0

Другие вопросы по теме

В firestore, если у пользователя есть отдельный список документов, к которым он может получить доступ, как я могу запросить эти документы
При обновлении страницы мое приложение выдает мне TypeError: uid null при использовании аутентификации firebase
Проверить адрес электронной почты в ключе базы данных firebase в правилах безопасности
Ошибка CORS в хранилище firebase. Работает только в отладке, а не в продакшене
Как узнать, подтвержден ли зарегистрированный адрес электронной почты в firebase?
Как настроить связанные домены / универсальные ссылки
Долго ли загружается тяжелый документ из Firestore?
FirebaseCrashlytics: ошибка обработки неперехваченного исключения и java.util.concurrent.TimeoutException
Я создаю приложение чата с базой данных Firebase Realtime и трепещу и не могу правильно отображать данные
Взаимодействие с Firebase Firestore из отдельного скрипта Python без прав администратора

Похожие вопросы