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

17

В моем приложении есть кнопка совместного доступа, и я хочу совместно использовать изображение и текст одновременно. В 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).

Спасибо заранее.

    
задан user2802764 15.04.2014 в 09:36
источник

6 ответов

14

Это невозможно, так как 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.");
    }
    
ответ дан Shani Goriwal 15.04.2014 в 09:48
источник
26

В настоящее время 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.");
    }
    
ответ дан Display name 06.11.2014 в 13:52
источник
1

* Попробуйте

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");
    }*
    
ответ дан Sujit Soni 30.06.2016 в 05:40
источник
1

Для обмена текстом и образ на 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 используйте эту ссылку: Ссылка     

ответ дан Jemshit Iskenderov 24.02.2017 в 10:37
источник
0

На данный момент 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 будет отображаться как подпись.

    
ответ дан Shabbir Dhangot 17.11.2014 в 12:44
источник
0
  1. Скопируйте текст из любого места. Это будет Google, Facebook или whatsapo

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

ответ дан John Mboma 17.08.2016 в 09:32
источник