2016-09-16 3 views
3

Я пробовал со следующим кодом, но он не прикрепляет файл pdf.Как поделиться pdf и текстом через whatsapp в 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); 

ответ

9

У меня была проблема, когда я пытался открыть PDF-файл из папки активов и я не работал, но когда я попытался открыть от загрузки папки (например), он действительно работал, и вот пример этого:

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

У меня есть связанный с этим вопрос: https://stackoverflow.com/questions/45901768/how-to-share-pdf-through-whatsapp-to-an-unsaved-contact –

-2

перейти в файл менеджер приложений в андроид и открыть его затем перейти к >>> ДАТа >>> данных >>> com.whatsapp, а затем >>> share_prefs открыть файл com.whatsapp_preference.xml поиск и выбор файла >>>> name = document pdf .... </string> и сохраните этот файл после >>> настройки >>>> apps >>>> whatsapp >>>> и нажмите кнопку остановки снова открыть whatsapp и попытаться отправить или опубликовать свой документ

+0

Привет @lomkrodsp Я хочу спросить, как мы можем сделать это с помощью нашего приложения с кодом , а не вручную –

1

ACTION_VIEW предназначен для просмотра файлов. ACTION_VIEW откроет приложения, которые могут обрабатывать pdf-файлы в списке.

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

Я думал ACTION_SEND намерение будет означать «отправить другое приложение» и не striktly «отправить куда-нибудь».

+0

спасибо за ответ. Позвольте мне проверить, работает ли это. Похоже, что может, но я не уверен, что WhatsAp позволяет это. –

+0

Да, если это не работает для вашей значки, вы также можете указать ittry: sendIntent.putExtra (Intent.EXTRA_STREAM, Uri.fromFile (exportPath)); –

0

Попробуйте добавить Intent.setType следующим образом: -

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

для обмена текста, ниже вы можете найти хороший пример, где вы можете поделиться текст с определенным номером, если бы !

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

Пожалуйста, обратите внимание, если ваш targetSdkVersion 24 или выше, мы должны использовать класс FileProvider, чтобы дать доступ к определенному файлу или папке, чтобы сделать их доступными для других приложений.

Шаг 1: добавьте тег FileProvider в AndroidManifest.xml под тегом приложения.

<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> 

Шаг 2:

создать файл provider_paths.xml в папке XML под Рез папку. Папка может понадобиться для создания, если она не существует. Содержимое файла показано ниже. В нем описано, что мы хотели бы предоставить доступ к внешнему хранилищу в корневой папке (path = ".) С именем external_files.

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

шаг 3: Заключительный шаг, чтобы изменить строку кода ниже в

Uri photoURI = Uri.fromFile(outputFile); 

к

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

стадии 4 (необязательно):

Если вы используете намерение сделать t истема открыть файл, возможно, потребуется добавить следующую строку кода:

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 

Надежда это поможет :)

Смежные вопросы