Поделиться изображением и текстом через Whatsapp или Facebook

У меня в приложении есть кнопка совместного доступа, и я хочу совместно использовать изображение и текст одновременно. В GMail он отлично работает, но в WhatsApp отправляется только изображение, а в Facebook приложение падает.

Код, который я использую, заключается в следующем:

Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("image/*"); shareIntent.putExtra(Intent.EXTRA_TEXT, "Message"); Uri uri = Uri.parse("android.resource://" + getPackageName() + "/drawable/ford_focus_2014"); try { InputStream stream = getContentResolver().openInputStream(uri); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 

Если я использую «shareIntent.setType (« * / * »),« Facebook и WhatsApp вылетает.

Есть ли способ сделать это? Может быть отправлено два сообщения отдельно в одно и то же время (WhatsApp).

Заранее спасибо.

Solutions Collecting From Web of "Поделиться изображением и текстом через Whatsapp или Facebook"

Это невозможно, поскольку WhatsApp не поддерживает сообщения с обоими изображениями и текстом в них. Сообщение может состоять из одного изображения, текстовой последовательности, аудиофайла, контакта или видео. У вас не может быть комбинации ни с одним из них.

Скорее, вы можете поделиться своим текстом, используя

  Intent whatsappIntent = new Intent(Intent.ACTION_SEND); whatsappIntent.setType("text/plain"); whatsappIntent.setPackage("com.whatsapp"); whatsappIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share"); try { activity.startActivity(whatsappIntent); } catch (android.content.ActivityNotFoundException ex) { ToastHelper.MakeShortText("Whatsapp have not been installed."); } 

В настоящее время Whatsapp поддерживает совместное использование изображений и текста. (Ноябрь 2014 г.).

Вот пример того, как это сделать:

  /** * Show share dialog BOTH image and text */ Uri imageUri = Uri.parse(pictureFile.getAbsolutePath()); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); //Target whatsapp: shareIntent.setPackage("com.whatsapp"); //Add text and then Image URI shareIntent.putExtra(Intent.EXTRA_TEXT, picture_text); shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); shareIntent.setType("image/jpeg"); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); try { startActivity(shareIntent); } catch (android.content.ActivityNotFoundException ex) { ToastHelper.MakeShortText("Whatsapp have not been installed."); } 

* Попробуйте

 Uri imageUri = Uri.parse(Filepath); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setPackage("com.whatsapp"); shareIntent.putExtra(Intent.EXTRA_TEXT, "My sample image text"); shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); shareIntent.setType("image/jpeg"); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); try { startActivity(shareIntent); } catch (android.content.ActivityNotFoundException ex) { ToastHelper.MakeShortText("Kindly install whatsapp first"); }* 

Для обмена текстом и изображением на WhatsApp приведена более контролируемая версия кода, вы можете добавить дополнительные методы для совместного использования с Twitter , Facebook …

 public class IntentShareHelper { public static void shareOnWhatsapp(AppCompatActivity appCompatActivity, String textBody, Uri fileUri) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.setPackage("com.whatsapp"); intent.putExtra(Intent.EXTRA_TEXT,!TextUtils.isEmpty(textBody) ? textBody : ""); if (fileUri != null) { intent.putExtra(Intent.EXTRA_STREAM, fileUri); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setType("image/*"); } try { appCompatActivity.startActivity(intent); } catch (android.content.ActivityNotFoundException ex) { ex.printStackTrace(); showWarningDialog(appCompatActivity, appCompatActivity.getString(R.string.error_activity_not_found)); } } public static void shareOnTwitter(AppCompatActivity appCompatActivity, String textBody, Uri fileUri){...} private static void showWarningDialog(Context context, String message) { new AlertDialog.Builder(context) .setMessage(message) .setNegativeButton(context.getString(R.string.close), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setCancelable(true) .create().show(); } } 

Для получения Uri из файла используйте класс ниже:

 public class UtilityFile { public static @Nullable Uri getUriFromFile(Context context, @Nullable File file) { if (file == null) return null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { try { return FileProvider.getUriForFile(context, "com.my.package.fileprovider", file); } catch (Exception e) { e.printStackTrace(); return null; } } else { return Uri.fromFile(file); } } // Returns the URI path to the Bitmap displayed in specified ImageView public static Uri getLocalBitmapUri(Context context, ImageView imageView) { Drawable drawable = imageView.getDrawable(); Bitmap bmp = null; if (drawable instanceof BitmapDrawable) { bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap(); } else { return null; } // Store image to default external storage directory Uri bmpUri = null; try { // Use methods on Context to access package-specific directories on external storage. // This way, you don't need to request external read/write permission. File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png"); FileOutputStream out = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 90, out); out.close(); bmpUri = getUriFromFile(context, file); } catch (IOException e) { e.printStackTrace(); } return bmpUri; } } 

Для написания FileProvider используйте эту ссылку: https://github.com/codepath/android_guides/wiki/Sharing-Content-with-Intents

На данный момент Whatsapp Intent поддерживает изображение и текст:

 Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT,title + "\n\nLink : " + link ); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(sharePath)); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "Share image via:")); 

Изображение будет таким, как есть, и EXTRA_TEXT будет отображаться как подпись.

  1. Скопируйте текст из любого места. Это будет Google, Facebook или whatsapo

  2. Попытайтесь загрузить изображение в whatsapp в любом месте.от контакта или группы. Перед тем, как вы нажмете стрелку отправки изображения … вы увидите параметр caption к этому изображению … коснитесь и удерживайте, появится параметр вставки.hit paste … Ваш текст будет отображаться … тогда вы можете отправить фотографию. И он появится с текстом, который вы хотели … там вы идете … у вас есть текст и изображение в нем … единственная проблема будет Размер текста, ограниченный определенным количеством слов

😀 Это работает только для пользователей Android