Bitmap.compress()无法在Android Oreo上运行

时间:2017-12-06 22:27:34

标签: android bitmap android-8.0-oreo

我的应用程序中有一小部分代码已存在超过2年,工作得很好。我们刚刚发现Oreo设备上工作。这是代码:

    Bitmap bm = getAsBitmap(200, 100, 5);
    if (bm != null) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.PNG, 50, stream);
        return new String(Base64.encode(stream.toByteArray(), Base64.DEFAULT));
    }

Oreo之前的所有Android版本(或至少API级别14-25)中,此代码会生成位图的base64编码字符串序列化。在 Oreo 中,它会生成一个空字符串。

使用调试器逐步执行它,很明显问题出在bm.compress() - 运行后,流仍为空。如果我在Nougat设备上调试相同的代码,我可以看到该流包含PNG数据。

我们的构建运行compileSdk 25,但为了确保我将构建更新为compileSdk 26并将构建工具和支持库更新为26;行为没有变化。

0 个答案:

没有答案