2016-09-16 1 views
3

Ich habe versucht mit dem folgenden Code, aber es ist nicht die PDF-Datei anhängen.Wie teile ich pdf und Text über WhatsApp in Android?

Intent sendIntent = new Intent(); 
     sendIntent.setAction(Intent.ACTION_SEND); 
     sendIntent.putExtra(Intent.EXTRA_TEXT, message); 
     sendIntent.setType("text/plain"); 
     if (isOnlyWhatsApp) { 
      sendIntent.setPackage("com.whatsapp"); 

     } 

     Uri uri = Uri.fromFile(attachment); 
     sendIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     activity.startActivity(sendIntent); 

Antwort

9

hatte ich dieses Problem, wo ich versuchte, eine PDF-Datei von Assets Ordner zu öffnen, und ich habe nicht funktioniert, aber als ich versuchte zu öffnen von Download-Ordner (zum Beispiel), es tatsächlich funktioniert, und hier ist ein Beispiel dafür:

File outputFile = new File(Environment.getExternalStoragePublicDirectory 
    (Environment.DIRECTORY_DOWNLOADS), "example.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);  
+0

Ich habe eine verwandte Frage hier: https://stackoverflow.com/questions/45901768/how-to-share-pdf-through-whatsapp-to-an-unsaved-contact –

-2

gehen Manager Apps im Android und öffnen Sie sie dann Daten >>> com.whatsapp >>> Daten >>> Gehen Sie zu Datei und dann >>> share_prefs offen com.whatsapp_preference.xml Datei suchen und wählen Sie die Datei >>>> name = document pdf .... </string> und speichern Sie diese Datei nach >>> Einstellungen >>>> >>>> whatsapp >>>> und drücken Sie Force Stop Öffnen Sie WhatsApp erneut und versuchen Sie, Ihr Dokument zu senden oder zu teilen.

+0

Hallo @lomkrodsp Ich meine, helfen fragen, wie wir es durch unsere App mit dem Code tun können , nicht manuell –

1

ACTION_VIEW dient zum Anzeigen von Dateien. ACTION_VIEW öffnet Apps, die PDF-Dateien in der Liste verarbeiten können.

startActivity(new Intent(Intent.ACTION_VIEW).setDataAndType(Uri.fromFile(reportFile), "application/pdf"))); 

Ich dachte, die ACTION_SEND Absicht und nicht notifikation by „senden woanders“ würde bedeuten, „zu anderen App senden“.

+0

danke für die Beantwortung. Lass mich versuchen zu überprüfen, ob es funktioniert. Sieht aus wie es kann, aber ich bin mir nicht sicher, ob whatsapp dies erlaubt. –

+0

Ja, wenn es nicht für Ihr Problem funktioniert, können Sie auch Folgendes eingeben: sendIntent.putExtra (Intent.EXTRA_STREAM, Uri.fromFile (exportPath)); –

0

Versuchen Hinzufügen Intent.setType wie folgt: -

Intent sendIntent = new Intent(); 
    sendIntent.setAction(Intent.ACTION_SEND); 
    sendIntent.putExtra(Intent.EXTRA_TEXT, message); 
    // sendIntent.setType("text/plain"); 
    if (isOnlyWhatsApp) { 
     sendIntent.setPackage("com.whatsapp"); 
    } 

    Uri uri = Uri.fromFile(attachment); 
    sendIntent.putExtra(Intent.EXTRA_STREAM, uri); 
    sendIntent.setType("application/pdf"); 
    activity.startActivity(sendIntent); 
0

für Text zu teilen, unter Ihnen ein gutes Beispiel zu finden, in dem Sie Text mit bestimmten Nummer teilen können, wenn Sie möchten !

public static void openWhatsAppConversation(Activity activity, String number) { 
    boolean isWhatsappInstalled = isAppInstalled(activity, "com.whatsapp"); 
    if (isWhatsappInstalled) { 
     Uri uri = Uri.parse("smsto:" + number); 
     Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri); 
     sendIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     sendIntent.setPackage("com.whatsapp"); 
     activity.startActivity(sendIntent); 
    } else { 
     ToastHelper.show(activity, "WhatsApp is not Installed!"); 
     openMarket(activity, "com.whatsapp"); 
    } 
} 
2

Bitte beachten Wenn Ihre targetSdkVersion 24 oder höher ist, müssen wir FileProvider Klasse zu geben Zugriff auf die bestimmte Datei oder einen Ordner, um sie zugänglich für andere Anwendungen nutzen.

Schritt 1: Fügen Sie ein FileProvider-Tag in AndroidManifest.xml unter dem Anwendungs-Tag hinzu.

<provider 
      android:name="android.support.v4.content.FileProvider" 
      android:authorities="${applicationId}.provider" 
      android:exported="false" 
      android:grantUriPermissions="true"> 
      <meta-data 
       android:name="android.support.FILE_PROVIDER_PATHS" 
       android:resource="@xml/provider_paths"/> 
     </provider> 

Schritt 2:

dann eine provider_paths.xml Datei im XML-Ordner unter res Ordner erstellen. Der Ordner muss möglicherweise erstellt werden, wenn er nicht existiert. Der Inhalt der Datei wird unten angezeigt. Es beschreibt, dass wir den Zugriff auf den externen Speicher im Stammordner (path = ".") Mit dem Namen external_files teilen möchten.

<?xml version="1.0" encoding="utf-8"?> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <external-path name="external_files" path="."/> 
</paths> 

Schritt 3: Der letzte Schritt ist die Codezeile in

Uri photoURI = Uri.fromFile(outputFile); 

zu

Uri uri = FileProvider.getUriForFile(PdfRendererActivity.this, PdfRendererActivity.this.getPackageName() + ".provider", outputFile); 

Schritt 4 (optional) unten zu ändern:

Wenn eine Absicht verwendet wird, um t zu machen er System öffnen Sie Ihre Datei, können Sie die folgende Codezeile hinzufügen müssen:

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 

Hope this :)

Verwandte Themen