Я пытаюсь передать URI-объект своему намерению, чтобы использовать этот URI в другом действии ...
Как передать URI?
private Uri imageUri;
....
Intent intent = new Intent(this, GoogleActivity.class);
intent.putExtra("imageUri", imageUri);
startActivity(intent);
this.finish();
Как мне теперь использовать этот URI в других моих действиях?
imageUri = extras.getString("imageUri"); // I know thats wrong ...
Спасибо вам, ребята
java
android
android-intent
uri
Роберт Эл
источник
источник
Ответы:
вы можете сохранить uri как строку
а затем просто преобразуйте строку обратно в uri, как это
источник
intent.putExtra("imageUrl", mImageUri.toString());
В другой деятельностиString imageUrl = getIntent().getStringExtra("imageUrl");
Uri mImageUri = Uri.parse(imageUrl);
В
Uri
реализует классParcelable
, так что вы можете добавлять и извлекать его непосредственно изIntent
Вы можете использовать один и тот же метод для любых объектов, которые реализуются
Parcelable
, и при необходимости можете реализоватьParcelable
на своих собственных объектах.источник
android.net.Uri
а не используетеjava.net.URI
!intent.putExtras(bundle);
, используйтеbundle.putParcelable("imageUri", uri);
вместо использованияintent.putExtra(...);
непосредственно вIntent
объекте.i.putExtra("URIList", uriList.toArray());
->List<Uri> myList = i.getParcelableArrayListExtra("URIList");
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.putExtra(java.lang.String, android.os.Parcelable)' on a null object reference
В Intent вы можете напрямую поместить Uri. Вам не нужно преобразовывать Uri в строку и снова конвертировать в Uri.
Посмотрите на этот простой подход.
И чтобы вернуть Ури из намерения:
источник
А потом вы можете получить его вот так:
источник
вот как я его использую; Эта кнопка внутри моего класса CameraActionActivity Activity, где я вызываю камеру
И мой другой класс активности DisplayVideo
источник
Если вы хотите использовать стандартное поле дополнительных данных, сделайте что-то вроде этого:
В документации для Intent говорится:
Вам не обязательно использовать встроенные стандартные имена, но это, вероятно, хорошая практика и более пригодная для повторного использования. Посмотрите в документации для разработчиков список всех встроенных стандартных дополнительных полей данных.
источник
Uri.parse(extras.getString("imageUri"))
Вызывало ошибку:Итак, я изменил на следующее:
и
Это решило проблему.
источник
вы можете сделать это. imageuri можно преобразовать в строку вот так.
intent.putExtra ("imageUri", imageUri.toString ());
источник