MediaStore.Images.Thumbnails.getThumbnail возвращает ноль - PullRequest
0 голосов
/ 19 октября 2019

В моем приложении одно из моих занятий имеет пункты меню, которые открывают намерения галереи и позволяют пользователю выбрать изображение. Внутри onActivityResult я вызываю MediaStore.Images.Thumbnails.getThumbnail, чтобы получить уменьшенную версию выбранного изображения. Однако по какой-то причине он возвращает ноль. У меня динамическое пользовательское разрешение, настроенное для доступа на чтение / запись к внешнему хранилищу, и я думаю, что оно работает (в противном случае Android выдаст исключение безопасности). Вот выдержка из моего кода:

override fun onActivityResult(requestCode: Int, resultCode: Int, responseData: Intent?) {
    when (requestCode) {
        MENU_PICK_IMAGE -> if (resultCode == Activity.RESULT_OK) {

            responseData?.let{ data  ->
                val contentUri = data.data as Uri
                val uriPath = contentUri.pathSegments
                val imageId = uriPath.get(uriPath.size-1)

                val b = MediaStore.Images.Thumbnails.getThumbnail(contentResolver,imageId.toLong(),MediaStore.Images.Thumbnails.MINI_KIND,null)
                ........
            }

        }
}

Целевой SDK: 28 compileSdkVersion 28

1 Ответ

0 голосов
/ 25 октября 2019

Я решил проблему, переместив метод getThumbnail в другой метод (за исключением OnActivityResult). Я предполагаю, что getThumbnail заблокирован от доступа к данным сразу после того, как изображение выбрано пользователем (следовательно, возвращает только ноль).

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