如何将URI传递给intent?
我试图传递一个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存储为string
intent.putExtra("imageUri", imageUri.toString());
然后只是像这样转换回string
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转换为string,然后再转换回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活动类中的这个button,我称之为相机
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可以像这样转换成string。
intent.putExtra(“imageUri”,imageUri.toString());