¿Cómo pasar un URI a un bash?

Estoy intentando pasar un URI-Object a mi Intención para usar ese URI en otra actividad …

¿Cómo paso un URI?

private Uri imageUri; .... Intent intent = new Intent(this, GoogleActivity.class); intent.putExtra("imageUri", imageUri); startActivity(intent); this.finish(); 

¿Cómo uso ahora este URI en mi otra actividad?

  imageUri = extras.getString("imageUri"); // I know thats wrong ... 

Gracias chicos

puedes almacenar el uri como una cadena

 intent.putExtra("imageUri", imageUri.toString()); 

y luego simplemente convierte la cadena a uri como esta

 Uri myUri = Uri.parse(extras.getString("imageUri")); 

La clase Uri implementa Parcelable , por lo que puede agregar y extraer directamente de la Intent

 // Add a Uri instance to an Intent intent.putExtra("imageUri", uri); // Get a Uri from an Intent Uri uri = intent.getParcelableExtra("imageUri"); 

Puede usar el mismo método para cualquier objeto que implemente Parcelable , y puede implementar Parcelable en sus propios objetos si es necesario.

En Intención, puedes poner directamente a Uri. No necesita convertir el Uri en cadena y convertir de nuevo a Uri.

Mira este enfoque simple.

 // put uri to intent intent.setData(imageUri); 

Y para recuperar a Uri de la intención:

 // Get Uri from Intent Uri imageUri=getIntent().getData(); 

+1 a esta respuesta, ¡así que puede ser útil para más usuarios!

aquí cómo lo uso; Este botón dentro de mi clase CameraActionActivity Activity donde llamo cámara

  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); } } } 

Y mi otra clase de actividad de 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); 

Si desea utilizar un campo de datos extra estándar, haría algo como esto:

 private Uri imageUri; .... Intent intent = new Intent(this, GoogleActivity.class); intent.putExtra(Intent.EXTRA_STREAM, imageUri.toString()); startActivity(intent); this.finish(); 

La documentación para Intent dice:

 EXTRA_STREAM added in API level 1 String EXTRA_STREAM A content: URI holding a stream of data associated with the Intent, used with ACTION_SEND to supply the data being sent. Constant Value: "android.intent.extra.STREAM" 

No tiene que usar los nombres estándar incorporados, pero probablemente sea una buena práctica y más reutilizable. Eche un vistazo a la documentación del desarrollador para obtener una lista de todos los campos de datos adicionales estándar incorporados.

 private Uri imageUri; .... Intent intent = new Intent(this, GoogleActivity.class); intent.putExtra("imageUri", imageUri.toString()); startActivity(intent); this.finish(); 

Y luego puedes buscarlo así:

 imageUri = Uri.parse(extras.getString("imageUri")); 

puedes hacer esto imageuri se puede convertir en una cadena como esta.

intent.putExtra (“imageUri”, imageUri.toString ());