Так что вопросов куча!!!
самое простое намерение, которое я знаю, чтобы позволить пользователю выбрать изображение из галереи:
public static final int GALLERY_REQUEST = 1001;
Intent galleryIntent = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent , GALLERY_REQUEST );
а затем вы можете получить изображение Uri, выбранное пользователем, таким образом:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == GALLERY_REQUEST && data != null && data.getData() != null){
//this is the uri of the image use it to load the image
Uri imageUri = intent.getData();
}
}
Во-первых: откуда взялся ключ «данные»?
intent.getData()
- это ключ, который Android предоставляет для использования выбранного контента (изображение, музыка и ...)
Во-вторых: зачем использовать Parcelable, почему бы не использовать HasExtra («данные»)
Parcelable — это способ, которым Android сериализует объект из одного процесса в другой. в основном, когда вы вызываете намерение и хотите передать какой-либо объект данных, объект должен реализовывать интерфейс Parcelebale. Поэтому в объекте намерения вы можете проверить, есть ли у намерения дополнительный объект с именем ключа объекта и с использованием метода intent.hasExtra("keyname")
. когда вы хотите получить объект Parcelable из намерения, вы можете просто использовать getParcelableExtra("keyname")
для намерения или вы можете получить все дополнительные функции этого намерения, используя getExtra()
, который возвращает пакет, а затем в пакете вы можете вызвать getParcelable("keyname")
, чтобы получить тот же объект Parcelable
В-третьих: какова цель совместного использования растрового изображения и URI? я понимаю URI, чтобы получить его местоположение, но если у меня есть растровое изображение... какова важность URI и наоборот
Android не даст вам растровое изображение, просто Uri. вы решите, что делать с этим Uri, либо загрузить из него растровое изображение, либо создать файл.
Пятое: когда мне вызывать onActivityResult?
когда вы когда-либо запускаете действие (в основном используя startActivityForResult(intent)
) и ожидаете от него какого-то результата, например: вызов галереи и вы хотите, чтобы действие галереи вернуло вам изображение, вам нужно реализовать метод onActivityResult
, чтобы Android мог вызвать его и предоставить вам запрошенный результат (если есть)
надеюсь, это поможет счастливому кодированию
person
seyed Jafari
schedule
01.08.2018