How to share audio from the app to Whatsapp?

1

My code is able to open Whatsapp, but when you select the person you do not send anything and back to Whatsapp, how can I share the audio from my app?

  

code I'm using

public void onClickshe (View v) {
    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    String audioClipFileName="starboy.mp3";
    shareIntent.setType("audio/mp3");
    shareIntent.setPackage("com.whatsapp");
    startActivity(Intent.createChooser(shareIntent, "Compartilhando no 
     whatsapp"));
   }
    
asked by anonymous 08.11.2017 / 20:44

1 answer

0

Try this:

/**
 * É necessário salvar o  arquivo no External Storage do usuário, para compartilhar
 */
public void onClickshe() {
    InputStream inputStream;
    FileOutputStream fileOutputStream;
    try {
        // Carregamos o arquivo...
        inputStream = getResources().openRawResource(R.raw.starboy);
        /** Retorna o diretório primário de armazenamento compartilhado/externo. Este diretório pode
              * atualmente não está acessível se ele foi montado pelo usuário em seus
          * computador, foi removido do dispositivo, ou algum outro problema tem aconteceu.**/
        fileOutputStream = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "sound.mp3"));

        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {
            fileOutputStream.write(buffer, 0, length);
        }

        inputStream.close();
        fileOutputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    //Agora com o arquivo criado, vamos compartilhar!!
    final Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("audio/*");
    shareIntent.setPackage("com.whatsapp");
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/sound.mp3"));
    startActivity(Intent.createChooser(shareIntent, "Compartilhando no whatsapp"));


}

Attention!

You must add the following permission on AndroidManifest.xml :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

This allows the file to be shared to be created!

  

As of Android 6.0 (API level 23), users grant   permissions to applications while they are running, not when   they are installed. This approach optimizes the installation process   application because the user does not need to grant permissions to the   install or update the application

        // Verificamos se há permissão... (this = Activity)
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {

            // Devemos mostrar uma explicação?
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                // Mostra uma extensão para o usuário * de forma assíncrona * - não bloqueie
                 // este tópico aguardando a resposta do usuário! Após o usuário
                 // vê a explicação, tente novamente solicitar a permissão.
            } else {

                // Nenhuma explicação necessária, podemos solicitar a permissão.

                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.READ_CONTACTS},
                        CODE_REQUEST);

                // CODE_REQUEST é um int, que será comparado no onResult
            }
        }

    }

    @Override
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case CODE_REQUEST: {
                // Se o pedido for cancelado, os arrays de resultados estão vazios.
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    // foi concedida permissão, Neste momento você tem a permissão consedida!
                } else {

//                    Não temos, permissão! 
                }
                return;
            }

            // other 'case' lines to check for other
            // permissions this app might request
        }
    }
    
09.11.2017 / 18:11