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)
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP