Невозможно выбрать изображение для отображения в ImageView - PullRequest
0 голосов
/ 30 января 2019

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

В настоящее время я следую этому уроку: https://www.youtube.com/watch?v=QNcd41C-IEE и на отметке 11:00, так что мне нужно добавить еще кода.

Снимки экрана с заданием: Активность Проблема с отображением снимка экрана

Код:

public class ChallengeUploadAdd extends AppCompatActivity {

private static final int CHOOSE_IMAGE=1;

private Button chooseImage, btnUploadImage;
private TextView viewGallery;
private ImageView imgPreview;
private TextView view_Gallery;
private EditText imgDescription;
private Uri imgUrl;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_challenge_upload_add);
    chooseImage=findViewById(R.id.chooseImage);
    btnUploadImage=findViewById(R.id.btnUploadImage);


    view_Gallery=findViewById(R.id.viewGallery);

    imgDescription=findViewById(R.id.imgDescription);
    imgPreview=findViewById(R.id.imgPreview);

    chooseImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showFileChoose();
        }
    });
}

private void showFileChoose(){

    Intent intent = new Intent();
    intent.setType("images/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, CHOOSE_IMAGE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==CHOOSE_IMAGE && resultCode==RESULT_OK && data
            != null && data.getData() !=null){
        imgUrl=data.getData();

        Picasso.get().load(imgUrl).into(imgPreview);
    }
}

}

Любая помощь, почему я не могу выбрать изображение с моего телефона, будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, SELECT_PHOTO);

, где SELECT_PHOTO is 1

0 голосов
/ 30 января 2019

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

Подробнее о разрешениях времени выполнения

Используйте эту библиотеку Декстера дляспросить разрешение во время выполнения очень просто!

Я обычно использую этот код, предоставляя мне оба варианта для получения изображения с камеры или выбора из галереи.

protected void pickImageFromGallery() {

    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.setType("image/*");
    context.startActivityForResult(Intent.createChooser(intent, "Select File"), 1);


}

protected void pickImageFromCamera() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    context.startActivityForResult(intent, 0);
}

и обработки результатов обоих вonActivityResult

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

        switch (requestCode) {
            case 0:

                try{

                    if (data != null) {
                        Bitmap photo = (Bitmap) data.getExtras().get("data");

                        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                        photo.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);


                        userProfilePic.setImageBitmap(photo);

                    } else {

                    }

                }catch (Exception e){
                    e.printStackTrace();
                }

                break;
            case 1:
                if (data != null) {
                    Uri uri = data.getData();

                    try {

                        Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);

                        userProfilePic.setImageBitmap(bitmap);


                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } else {
                    Toast.makeText(this, "Something Went Wrong", Toast.LENGTH_SHORT).show();
                }
                break;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...