2

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

在项目开始时,我使用 Jellybean API 库,目标 API 为“anroid-18”,使用“三星 Galaxy Note 2014 版”。几个月后,设备的操作系统开始升级到 KitKat 操作系统,所以我将库更改为“android-19”,版本号为 4.4.2。

我现在有一个名为 Galaxy S tab 2 的新设备。

我现在有三个版本和两个设备,我的默认 API 是 4.4.2。

使用app拍照时出现的问题:

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 操作系统 + Kitkat API = 好的

Lollipop OS + KitKat API = OK

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

4

1 回答 1

1

根据每个操作系统的 wiki 文章引用,在发布新的 KitKat 和 Lolipop 操作系统并从 Jellybean 迁移时,它们更改为一种新的运行时环境。代码仅在这个新环境中兼容,您需要为其他环境(如 Jellybean)尝试不同的方法。看这里这里

于 2016-05-24T20:29:28.397 回答