Ответ 1
вы можете сохранить uri как строку
intent.putExtra("imageUri", imageUri.toString());
а затем просто преобразуйте строку обратно в uri, как это
Uri myUri = Uri.parse(extras.getString("imageUri"));
Я пытаюсь передать 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 ...
Спасибо, ребята,
вы можете сохранить uri как строку
intent.putExtra("imageUri", imageUri.toString());
а затем просто преобразуйте строку обратно в uri, как это
Uri myUri = Uri.parse(extras.getString("imageUri"));
Класс Uri
реализует Parcelable
, поэтому вы можете добавлять и извлекать его непосредственно из Intent
// Add a Uri instance to an Intent
intent.putExtra("imageUri", uri);
// Get a Uri from an Intent
Uri uri = intent.getParcelableExtra("imageUri");
Вы можете использовать тот же метод для любых объектов, которые реализуют Parcelable
, и вы можете реализовать Parcelable
на своих собственных объектах, если это необходимо.
В намерении вы можете прямо поставить Uri. Вам не нужно преобразовывать Uri в строку и преобразовывать обратно в Uri.
Посмотрите на этот простой подход.
// Put the uri to intent
intent.setData(imageUri);
И вернуть Uri из намерения:
// Get the Uri from Intent
Uri imageUri = getIntent().getData();
private Uri imageUri;
....
Intent intent = new Intent(this, GoogleActivity.class);
intent.putExtra("imageUri", imageUri.toString());
startActivity(intent);
this.finish();
И затем вы можете получить его следующим образом:
imageUri = Uri.parse(extras.getString("imageUri"));
вот как я его использую; Эта кнопка внутри моего класса CameraActionActivity, где я вызываю камеру
btn_frag_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intenImatToSec = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intenImatToSec, REQUEST_CODE_VIDEO);
//intenImatToSec.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
//intenImatToSec.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);
//Toast.makeText(getActivity(), "Hello From Camera", Toast.LENGTH_SHORT).show();
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_CODE_IMG) {
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
Intent intentBitMap = new Intent(getActivity(), DisplayImage.class);
// aldıgımız imagi burda yonlendirdiğimiz sınıfa iletiyoruz
ByteArrayOutputStream _bs = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 50, _bs);
intentBitMap.putExtra("byteArray", _bs.toByteArray());
startActivity(intentBitMap);
} else if (requestCode == REQUEST_CODE_VIDEO) {
Uri videoUrl = data.getData();
Intent intenToDisplayVideo = new Intent(getActivity(), DisplayVideo.class);
intenToDisplayVideo.putExtra("videoUri", videoUrl.toString());
startActivity(intenToDisplayVideo);
}
}
}
И еще мой DisplayVideo Класс активности
VideoView videoView = (VideoView) findViewById(R.id.videoview_display_video_actvity);
Bundle extras = getIntent().getExtras();
Uri myUri= Uri.parse(extras.getString("videoUri"));
videoView.setVideoURI(myUri);
вы можете сделать это. imageuri можно преобразовать в строку, подобную этой.
intent.putExtra( "imageUri", imageUri.toString());