Android Studio 如何通过WhatsApp Android编程共享图像和文本

vd2z7a6w  于 2023-01-26  发布在  Android
关注(0)|答案(1)|浏览(163)

我需要通过WhatsApp共享图像和一些文本,使用Android上的Intent。

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, Uri.parse(imageUrl));
shareIntent.setType("image/png");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

try {
    startActivity(shareIntent);
} catch (android.content.ActivityNotFoundException ex) {
    ToastHelper.MakeShortText("Kindly install whatsapp first");
}

我使用上面的代码,但它抛出一个“文件格式不支持”错误,而共享.

7xzttuei

7xzttuei1#

你可以这样试试

public static void shareOnWhatsapp(Context context, String str) {
    Uri parse = Uri.parse(str);
    Intent intent = new Intent();
    intent.setAction("android.intent.action.SEND");
    intent.setPackage("com.whatsapp");
    String stringBuilder = context.getResources().getString(R.string.play_more_app) +
            context.getPackageName();
    intent.putExtra("android.intent.extra.TEXT", stringBuilder);
    intent.putExtra("android.intent.extra.STREAM", parse);
    intent.setType("image/*");
    intent.addFlags(1);
    try {
        context.startActivity(intent);
    } catch (Exception unused) {
        setToast(context, context.getResources().getString(R.string.whatsapp_not_installed));
    }
}

我用这个功能来分享图片,它的工作,我希望它的工作,你也是。

    • 编辑**

1.添加此依赖项以将URL转换为位图

implementation 'com.github.bumptech.glide:glide:4.14.2'

1.使用此函数获取要共享的图像URI

private Uri getImageURI(Bitmap image) {
    File imagesFolder = new File(getCacheDir(), "images");
    Uri uri = null;
    try {
        imagesFolder.mkdirs();
        File file = new File(imagesFolder, "shared_image.png");

        FileOutputStream stream = new FileOutputStream(file);
        image.compress(Bitmap.CompressFormat.PNG, 90, stream);
        stream.flush();
        stream.close();
        uri = FileProvider.getUriForFile(this, getPackageName() + ".provider", file);

    } catch (IOException e) {
        Log.d("TAG", "IOException while trying to write file for sharing: " + e.getMessage());
    }
    return uri;
}

1.使用此功能在WhatsApp上共享图像

public static void shareOnWhatsapp(Context context, Uri uri) {
    Intent intent = new Intent();
    intent.setAction("android.intent.action.SEND");
    intent.setPackage("com.whatsapp");
    String stringBuilder = "Your String Or Message" +
            context.getPackageName();
    intent.putExtra("android.intent.extra.TEXT", stringBuilder);
    intent.putExtra("android.intent.extra.STREAM", uri);
    intent.setType("image/*");
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    try {
        context.startActivity(intent);
    } catch (Exception unused) {
        Toast.makeText(context, "whatsapp not installed", Toast.LENGTH_SHORT).show();
    }
}

1.像这样的用途

findViewById(R.id.btnShare).setOnClickListener(v -> {
        Glide.with(this).asBitmap().load( /*Your URL*/ "https://drinkprime.in/images/smart_water_purifier.jpg").into(new CustomTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                Bitmap bitmap = resource;
                shareOnWhatsapp(MainActivity.this, getImageURI(bitmap));
            }

            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }
        });
    });

现在完全正常了

相关问题