android establece la imagen como icono de contacto / fondo de pantalla

He escrito mi propio ImageViewer y ahora quiero tenerEstablecer com funcionalidad como en Android ImageViewer nativo. Ahora es posible ya que Facebook lo tiene. He adjuntado una captura de pantalla para hacerme más claro. @

PD. Quiero dar una explicación más detallada de lo que sale mal. Después de elegir "Icono de contacto" en el menú, aparece la lista de mis contactos. Cuando elijo un contacto, se cierra la aplicación. Si elijo "Fondo de pantalla de inicio / bloqueo de pantalla", se abre la galería de mi teléfono. Aquí está mi fragmento de código:

                Bitmap icon = mBitmap;
                Intent setAs = new Intent(Intent.ACTION_ATTACH_DATA);
                setAs.setType("image/jpg");
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                File f = new File(Environment.getExternalStorageDirectory() + File.separator + "/my_tmp_file.jpg");
                try {
                    f.createNewFile();
                    FileOutputStream fo = new FileOutputStream(f);
                    fo.write(bytes.toByteArray());
                } catch (IOException e) {                       
                    e.printStackTrace();
                }
                setAs.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/my_tmp_file.jpg"));
                startActivity(Intent.createChooser(setAs, "Set Image As"));

También agregué los permisos correspondientes a mi manifiesto y puedo escribir mi imagen en la tarjeta SD del teléfono.

Respuestas a la pregunta(5)

Su respuesta a la pregunta