如何将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 ... 

感谢你们

Solutions Collecting From Web of "如何将URI传递给intent?"

你可以将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());