How to share app audio for Whatsapp?

Asked

Viewed 927 times

2

My code can open Whatsapp but when selecting the person does not send anything back to Whatsapp, how can I share 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"));
   }

1 answer

1

Try it this way:

/**
 * É 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"));


}

Heed!

You need to add the following permission to 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 applications, as the user does not need to grant permissions to 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
        }
    }
  • I added the permission and the direct code without modifying anything , because you had already put the onclick and the name of the song, when I pressed to share the app stopped, I do not know what I should do, because I did not modify anything I just copied .

  • WHEN YOU DON’T KNOW WHAT TO DO, LOOK AT THE CAT LOG! !

  • Please check the runtime permission https://developer.android.com/training/permissions/requesting.html?hl=pt-br

Browser other questions tagged

You are not signed in. Login or sign up in order to post.