TransWikia.com

Como puedo enviar archivos de texto a whatsapp desde mi app en android studio

Stack Overflow en español Asked by Hoover on November 7, 2021

Cordial saludo para todos…
Estoy tratando de enviar un archivo de texto a un contacto de whatsapp…
Yo hice la prueba de enviar un mensaje y tuve exito con este codigo

Intent y = new Intent();
y.setPackage ("com.whatsapp");
y.setAction (Intent_ACTION_SEND);
intent.putExtra(intent.EXTRA_TEXT,"Este es mi mensaje, por Ahora.....");
intent.setType("text/plain");
startActivity(y);

Pero no he podido hallar la forma correcta de enviar un archivo de texto que se genera desde mi app.
Agradezco mucho si alguien me puede orientar al respecto.

De antemano Gracias por el apoyo…

Ya hice el ajuste al codigo. Me ha quedado asi:

    btnEnviar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            File outputFile = new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS), "archivo.pdf");
            Uri uri = Uri.fromFile(outputFile);
            try {
                Intent intent = new Intent("android.intent.action.MAIN");
                intent.setAction(Intent.ACTION_SEND);
                intent.setType("*/*");
                intent.putExtra(Intent.EXTRA_STREAM, uri);
                intent.setPackage("com.whatsapp");
                startActivity(intent);
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(getApplicationContext(), "Whatsapp no se encuentra instalado.", Toast.LENGTH_LONG).show();
            }
        }

    });

Pero al momento de ejecutarlo se detiene cuando va realizar la acción startActivity(intent) En el móvil me aparece un mensaje que dice que la app se detuvo y se cancela. Que debo corregir o agregar a mi codigo…?

En el Logcat me aparece lo siguiente:

Process: com.example.enviarmensajewhatsapp, PID: 13384
android.os.FileUriExposedException: file:///storage/emulated/0/Download/archivo.pdf exposed beyond app through ClipData.Item.getUri()
    at android.os.StrictMode.onFileUriExposed(StrictMode.java:1960)
    at android.net.Uri.checkFileUriExposed(Uri.java:2356)
    at android.content.ClipData.prepareToLeaveProcess(ClipData.java:942)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:10039)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:10045)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:10024)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1610)
    at android.app.Activity.startActivityForResult(Activity.java:4585)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
    at android.app.Activity.startActivityForResult(Activity.java:4543)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
    at android.app.Activity.startActivity(Activity.java:4904)
    at android.app.Activity.startActivity(Activity.java:4872)
    at com.example.enviarmensajewhatsapp.MainActivity$1.onClick(MainActivity.java:52)
    at android.view.View.performClick(View.java:6367)
    at android.view.View$PerformClick.run(View.java:25040)
    at android.os.Handler.handleCallback(Handler.java:795)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:166)
    at android.app.ActivityThread.main(ActivityThread.java:6861)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:450)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

One Answer

En el ejemplo adjunto un PDF ubicado en la carpeta de descargas.

Básicamente utilizo el mismo intent, pero en lugar de texto, le paso un stream con el archivo a adjuntar

File outputFile = new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS), "ejemplo.pdf"); 
Uri uri = Uri.fromFile(outputFile);
Intent share = new Intent();
share.setAction(Intent.ACTION_SEND);
share.setType("application/pdf");
share.putExtra(Intent.EXTRA_STREAM, uri);
share.setPackage("com.whatsapp");
activity.startActivity(share);

Si no mal recuerdo, debes tener el archivo en una carpeta de acceso público o whatsapp no podrá verlo, pero no tengo forma de comprobarlo ahora.

Answered by jachguate on November 7, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP