una ubicación ubicacion por mapa hacer google croquis compartir como android android-intent bitmap intentfilter

android - ubicación - google maps croquis



Compartir mapa de bits a través de la intención de Android (4)

En mi aplicación de Android, tengo un mapa de bits (digamos b) y un botón. Ahora cuando hago clic en el botón, quiero compartir el mapa de bits. Estoy haciendo uso del siguiente código dentro de mi onClick() para lograr esto: -

Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/png"); intent.putExtra(Intent.EXTRA_STREAM, b); startActivity(Intent.createChooser(intent , "Share"));

Esperaba una lista de todas las aplicaciones que pueden manejar esta intención, pero no recibo nada. No hay una lista de aplicaciones ni hay ningún error en el estudio de Android. Mi aplicación acaba de ser colgada por algún tiempo y luego se cierra.

He revisado el mapa de bits y está bien (no es nulo).

¿Dónde estoy yendo mal?


ImageButton capture_share = (ImageButton) findViewById(R.id.share); capture_share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String bitmapPath = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap,"title", null); Uri bitmapUri = Uri.parse(bitmapPath); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/png"); intent.putExtra(Intent.EXTRA_STREAM, bitmapUri); startActivity(Intent.createChooser(intent, "Share")); } });


Citando la documentación :

Un contenido: URI que contiene una secuencia de datos asociados con Intent, utilizado con ACTION_SEND para suministrar los datos que se envían.

b , por lo tanto, no se supone que sea un Bitmap , sino un Uri apunta a un Bitmap , servido por un ContentProvider . Por ejemplo, podría escribir el Bitmap de Bitmap en un archivo, luego usar FileProvider para servirlo.


Como CommonsWare declaró que necesita obtener el URI en el mapa de bits y pasarlo como su Extra.

String bitmapPath = Images.Media.insertImage(getContentResolver(), bitmap,"title", null); Uri bitmapUri = Uri.parse(bitmapPath); ... intent.putExtra(Intent.EXTRA_STREAM, bitmapUri );


** finalmente recibí la solución. **

Paso 1: Bloque de manejo de intención de compartir. Aparecerá su ventana con la lista de aplicaciones en su teléfono

public void share_bitMap_to_Apps() { Intent i = new Intent(Intent.ACTION_SEND); i.setType("image/*"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); /*compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] bytes = stream.toByteArray();*/ i.putExtra(Intent.EXTRA_STREAM, getImageUri(mContext, getBitmapFromView(relative_me_other))); try { startActivity(Intent.createChooser(i, "My Profile ...")); } catch (android.content.ActivityNotFoundException ex) { ex.printStackTrace(); } }

Paso 2: convertir tu vista en BItmap

public static Bitmap getBitmapFromView(View view) { //Define a bitmap with the same size as the view Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); //Bind a canvas to it Canvas canvas = new Canvas(returnedBitmap); //Get the view''s background Drawable bgDrawable = view.getBackground(); if (bgDrawable != null) //has background drawable, then draw it on the canvas bgDrawable.draw(canvas); else //does not have background drawable, then draw white background on the canvas canvas.drawColor(Color.WHITE); // draw the view on the canvas view.draw(canvas); //return the bitmap return returnedBitmap; }

Paso 3 :

Para obtener el URI de la imagen de mapa de bits

public Uri getImageUri(Context inContext, Bitmap inImage) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); return Uri.parse(path); }