JellyBean по-разному ведет себя при захвате изображений

Я разрабатываю приложение для Android для Jellybean, KitKat и Lollipop и нескольких разных устройств.

В начале проекта я использовал библиотеку API Jellybean с целевым API «anroid-18», используя «Samsung galaxy note 2014 edition». Через несколько месяцев ОС устройства начала обновляться до ОС KitKat, поэтому я сменил библиотеку на «android-19», в которой номер версии 4.4.2.

У меня есть новое устройство под названием Galaxy S tab 2.

Сейчас у меня есть три версии и два устройства, и мой API по умолчанию — 4.4.2.

Проблема возникла при захвате изображений с помощью приложения:

if (Build.VERSION.SDK_INT >= AlopexBuild.VERSION_SUPPORT.KITKAT) {
       Intent mediaScanIntent 
          = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
       Uri contentUri = Uri.parse("file://"+ path); 
       mediaScanIntent.setData(contentUri);
       sendBroadcast(mediaScanIntent);
} else {
       sendBroadcast(
         new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ path)));
}

Следующий код не вызывает проблем в Jellybean:

Intent mediaScanIntent 
          = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.parse("file://"+ path); 
mediaScanIntent.setData(contentUri);
sendBroadcast(mediaScanIntent);

Почему это происходит?

ОС Jellybean + API Kitkat = Ошибка

ОС Kitkat + API Kitkat = ОК

ОС Lollipop + API KitKat = ОК

Проблемный код: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ path)));


person tommybee    schedule 05.04.2016    source источник


Ответы (1)


Согласно ссылкам на вики-статьи для каждой ОС при выпуске новых ОС KitKat и Lolipop и переходе с Jellybean они изменились на новый тип среды выполнения. Код совместим только с этой новой средой, вам нужно будет попробовать другой метод для других сред, таких как Jellybean. См. здесь и здесь

person Daniel Royer    schedule 24.05.2016