Растровое изображение, возвращающее черное изображение при извлечении из внутреннего хранилища - PullRequest
0 голосов
/ 28 октября 2018

У меня ImageView, в котором у меня bitmap.Я храню его в Internal Storage в форме .png, а затем хочу поделиться с помощью shareIntent.Но когда я пытаюсь поделиться, он возвращает мне черное изображение, а не QR-код, который был моим исходным изображением.

Вот как я генерирую QR-код и отображаю его в ImageView:

try {
    BitMatrix bitMatrix = multiFormatWriter.encode(text,BarcodeFormat.QR_CODE,500,500);
    BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
    Bitmap bitmap_img = barcodeEncoder.createBitmap(bitMatrix);
    iv.setBackgroundColor(Color.WHITE); // iv is the ImageView
    iv.setImageBitmap(bitmap_img);

    bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap();

} catch (Exception r) { r.printStackTrace(); }

Кнопка «Поделиться»:

try {
    File imagesFolder = new File(getCacheDir(), "images");

    File file = new File(imagesFolder, "shared_image.png");
    FileOutputStream fOut = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
    iv.setImageBitmap(bitmap); // iv is the ImageView
    fOut.flush();
    fOut.close();
    savedImageURI = Uri.parse(file.getPath());

    file.setReadOnly(); //Readable(true, false);
    final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra(Intent.EXTRA_STREAM, savedImageURI);
    intent.setType("image/png");
    startActivity(Intent.createChooser(intent, "Share image via"));
} catch (Exception e) { e.printStackTrace(); }

1 Ответ

0 голосов
/ 24 апреля 2019

Это старый пост, однако я столкнулся с подобной проблемой и подумал, что могу поделиться здесь решением, которое может помочь другим разработчикам, имеющим такую ​​же проблему.

В моем случае проблема заключалась в неверном пути к файлу .Я получил черный экран после выбора изображения из внутреннего хранилища, а также.Я исправил путь к файлу, и проблема исчезла.

Вот провайдер файлов, который я добавил в AndroidManifest.xml.

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="com.your.application.package.goes.here"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

И файл file_paths.xml в каталоге /res/xml/ был исправлен следующим образом.

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="documents"
        path="Android/data/com.your.application.package.goes.here/files/Pictures" />
</paths> 

Надеюсь, это поможет кому-то, имеющему ту же проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...