Android Studio BitMap Drawable

Olá Senhores;

Gostaria de saber como converto imagem do drawable para o Bitmap e as compartilho:

Até agora chegue nisso:

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType(“image/jpeg”);
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));

Aí não consigo definir o URI:

Mas, nesse site:

1

É necessário salvar a imagem, para que se possa compartilhar:

Vamos lá:

  1. Permissão:

Em seu arquivo AndroidManifest.xml adicione a permissão para que possamos salvar a imagem no dispositivo:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. Permissões em tempo de execução:

A partir do Android 6.0 (nível de API 23), os usuários concedem permissões a aplicativos enquanto eles estão em execução, não quando eles são instalados.

Para isso adicione o seguinte método de código:

private static final int SOLICITAR_PERMISSAO = 1;
private void checarPermissao(){

    // Verifica  o estado da permissão de WRITE_EXTERNAL_STORAGE
    int permissionCheck = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);


    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
        // Se for diferente de PERMISSION_GRANTED, então vamos exibir a tela padrão 
        ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, SOLICITAR_PERMISSAO);
    } else {
        // Senão vamos compartilhar a imagem
        sharedImage();
    }
}
  1. Compartilhar a imagem:

Agora, vamos salvar e compartilhar a imagem:

   private void sharedImage(){
        // Vamos carregar a imagem em um bitmap
        Bitmap b = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round);
        Intent share = new Intent(Intent.ACTION_SEND);
        //setamos o tipo da imagem
        share.setType("image/jpeg");
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        // comprimomos a imagem
        b.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        // Gravamos a imagem
        String path = MediaStore.Images.Media.insertImage(getContentResolver(), b, "Titulo da Imagem", null);
        // criamos uam Uri com o endereço que a imagem foi salva
        Uri imageUri =  Uri.parse(path);
        // Setmaos a Uri da imagem
        share.putExtra(Intent.EXTRA_STREAM, imageUri);
        // chama o compartilhamento
        startActivity(Intent.createChooser(share, "Selecione"));
    }

Assim deu Certo pro Rapaz , mas não estou conseguindo organizar no meu?

Alguém poderia condensar o código desde

public class MainActivity extends AppCompatActivity {

final int[] photos = {
                R.drawable.abrir_a_boca,
                R.drawable.adicao_de_quartos,
                R.drawable.agarrado_firmemente,
                R.drawable.agradeca,
                R.drawable.alfaiate,
                R.drawable.ancora,
}

compartilhar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                shareImage();
            }

            private void shareImage() {

                Intent shareIntent = new Intent();
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.putExtra(Intent.EXTRA_STREAM, "local do arquivo");
                shareIntent.setType("image/jpeg");
                startActivity(shareIntent);
            }