Как я могу получить Uri изображения, если я открою галерею и выберу изображение и поделюсь им с моим приложением - PullRequest
0 голосов
/ 31 декабря 2018

Как я могу получить Uri изображения, если я открою Галерею и выберу изображение и поделюсь им с моим приложением, но изображение не отображается в ImageView

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вы можете следовать приведенному ниже коду от Raghu, чтобы открыть галерею,

, если вы хотите открыть галерею, тогда вы можете использовать,

Intent intentSelect = new Intent(Intent.ACTION_PICK);

Добавить отметку дляразрешения на чтение / запись, если версия ОС выше Marshmallow (6.0)

Если вы до сих пор не получили URI, то в onActivityResult, когда вы получите URI , попробуйте метод getPath отсюда

Добавить проверку, если версия Android OS выше Nougat (7.0) или нет, как указано выше для nougat, при получении файла uri вы можете получить «FileUriExposedException» см. Эту ссылку для получения дополнительной информации

0 голосов
/ 31 декабря 2018

Открыть галерею для получения изображения Uri

 private static final int REQUEST_SELECT_IMAGE = 100;

  private void handleOpenGallery() {
        Intent intentSelect = new Intent(Intent.ACTION_GET_CONTENT);
        intentSelect.setType("image/*");
        startActivityForResult(Intent.createChooser(intentSelect, getString(R.string.select_picture)),
                REQUEST_SELECT_IMAGE);
    }

Uri выбранного изображения

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_SELECT_IMAGE) {
        if (resultCode == Activity.RESULT_OK) {
            Uri uri = data.getData();
            shareImage(uri);
        }
    }
}

Поделиться изображением

  private void shareImage(Uri imageUri) {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
        shareIntent.setType("image/jpeg");
        startActivity(Intent.createChooser(shareIntent, "Share to"));
    }
...