Image Preview Not Showing in Android Sharesheet When Sharing via Intent.ACTION_SEND

I'm working on a function to share an image via Android's sharesheet using Intent.ACTION_SEND. The image is generated dynamically from a RelativeLayout and shared as a bitmap file. While the image is successfully shared and visible in the receiving app, the preview does not appear in the sharesheet itself.

Here is the function I am using for this purpose:

public static void shareImage(Activity activity, RelativeLayout relativeLayout, String authorName, String storyName) {

    // Create a bitmap with the same dimensions as the RelativeLayout
    Bitmap finalBitmap = Bitmap.createBitmap(relativeLayout.getWidth(), relativeLayout.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(finalBitmap);

    // Draw the layout onto the canvas
    relativeLayout.draw(canvas);

    try {
        File directory = new File(activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "shared_images");
        if (!directory.exists()) {
            directory.mkdirs();
        }

        String fileName = activity.getString(R.string.app_name) + ".jpeg";
        File imageFile = new File(directory, fileName);
        FileOutputStream out = new FileOutputStream(imageFile);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
        out.flush();
        out.close();
        Uri uri = FileProvider.getUriForFile(activity, activity.getPackageName() + ".provider", imageFile);

        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_STREAM, uri);
        intent.putExtra(Intent.EXTRA_SUBJECT, activity.getString(R.string.author) + " - " + authorName);
        intent.putExtra(Intent.EXTRA_TEXT, activity.getString(R.string.story) + " - " + storyName);
        intent.setType("image/*");
        activity.startActivity(Intent.createChooser(intent, "Share Via"));

    } catch (IOException e) {
        Log.d("ShareImage", "Error sharing image: " + e.getMessage());
        snackShort(activity, activity.getString(R.string.something_went_wrong));
    }
}

enter image description here

Upvotes: 0

Views: 34

Answers (0)

Related Questions