JellyBean与图片捕获的行为不同

时间:2016-04-05 06:17:28

标签: android android-api-levels

我正在为Jellybean,KitKat和Lollipop以及几种不同的设备开发Android应用程序。

在项目开始时,我使用Jellybean API库和目标API“anroid-18”使用“Samsung galaxy note 2014 edition”。 几个月后,该设备的操作系统开始升级到KitKat OS,因此我将库更改为'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 OS + Kitkat API =失败

Kitkat OS + Kitkat API =确定

Lollipop OS + KitKat API =确定

有问题的代码是   sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ path)));

1 个答案:

答案 0 :(得分:1)

根据每个操作系统的维基文章参考资料,在发布新的KitKat和Lolipop操作系统并从Jellybean移动时,他们改为一种新的运行时环境。该代码仅在这个新环境中兼容,您需要为其他环境(如Jellybean)尝试不同的方法。 请参阅herehere