WhatsApp共享图像只是黑色

时间:2016-03-25 16:19:17

标签: android whatsapp

if (Utils.isPackageInstalled(getContext(), "com.whatsapp")) {
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

    Bitmap bitmap = Utils.screenShotBitmap(getActivity());
    Utils.saveImage(getActivity(), bitmap, bet.getID() + ".jpeg");
    File file = new File(getActivity().getFilesDir(), bet.getID() + ".jpeg");

    if (file.exists()) {
        Log.i("share", "file exists");
        Log.i("share", Uri.fromFile(file).toString());
    }
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Share text");
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    sendIntent.setType("image/*");

    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
}

// ...
public static Bitmap screenShotBitmap(Activity activity) {
    return Falcon.takeScreenshotBitmap(activity);
}

public static void saveImage(Context context, Bitmap b, String name){
    FileOutputStream out;

    try {
        out = context.openFileOutput(name, Context.MODE_PRIVATE);
        b.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

登入输出:

03-25 17:13:24.328 26417-26417/x.x.x I/share: file exists
03-25 17:13:24.328 26417-26417/x.x.x I/share: file:///data/data/x.x.x/files/4b00abc2-7aae-4234-945b-59905306ad4a.jpeg

结果: enter image description here

Bitmap bitmap = Utils.screenShotBitmap(getActivity());似乎工作正常并返回正确的位图,因为我可以毫无问题地与Facebook分享。

1 个答案:

答案 0 :(得分:0)

  

因为我可以毫无问题地与Facebook分享

不是那个代码。

您正在将文件写入内部存储空间。 Facebook和WhatsApp都无法访问您internal storage的部分内容。另外,using file: Uri values is being phased out

正确的长期答案是use a ContentProvider to publish the bitmap,例如使用FileProvider。在短期内,您可以放弃写external storage,例如getExternalFilesDir()

另请注意,ACTION_SEND收件人无需同时尊重EXTRA_TEXTEXTRA_STREAM,只需尊重其中一个。