其他中间层做好后,发现在Gallery中无法删除flash(或sdcard)上的文件,原因是以下文件未作修改,改成如下
其中环境变量在init.rc 中定义如下
export EXTERNAL_STORAGE /mnt/flash
export EXTERNAL_FLASH_STORAGE /mnt/sdcard
export EXTERNAL_UDISK_STORAGE /mnt/udisk
/external/sqlite/android/sqlite3_android.cpp
static void delete_file(sqlite3_context * context, int argc, sqlite3_value ** argv)
{
if (argc != 1) {
sqlite3_result_int(context, 0);
return;
}
char const * path = (char const *)sqlite3_value_text(argv[0]);
char const * external_storage = getenv("EXTERNAL_STORAGE");
char const * external_flash_storage = getenv("EXTERNAL_FLASH_STORAGE");
if ((path == NULL)||((external_storage == NULL)&&(external_flash_storage == NULL))) {
sqlite3_result_null(context);
return;
}
if((strncmp(external_storage, path, strlen(external_storage)) != 0) \
&&(strncmp(external_flash_storage, path, strlen(external_flash_storage)) != 0)){
sqlite3_result_null(context); //之前是此处直接返回,所以媒体库上删除了图片记录,但文件并未删除
return;
}
if (strstr(path, "/../") != NULL) {
sqlite3_result_null(context);
return;
}
int err = unlink(path);
if (err != -1) {
// No error occured, return true
sqlite3_result_int(context, 1);
} else {
// An error occured, return false
sqlite3_result_int(context, 0);
}
}