其他中间层做好后,发现在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);
}
}
分享到:
相关推荐
在实验中,`RegisterActivity`类中的`SQLiteDatabase`对象`db`被用来打开或创建数据库文件`user.db3`。 2. **数据库操作**:在`RegisterActivity`中,当用户点击注册按钮时,会执行创建数据库表的操作。通过`...
在Android应用开发中,数据持久化是不可或缺的一部分,而GreenDao作为一款专为Android设计的高效ORM(Object-Relational Mapping)框架,它提供了便捷的方式来处理SQLite数据库,使得开发者无需直接操作SQL语句,就...
在本项目中,“学生选课APP系统设计与实现-数据库代码”主要涵盖了移动应用开发、后端服务搭建以及数据库管理等...开发者不仅需要熟悉Android SDK和数据库操作,还需要理解网络通信、API设计以及软件测试等多方面知识。
总结来说,本实验报告详细展示了在Android应用中如何使用SQLite数据库进行数据管理,包括数据库的创建、表的建立以及基本的CRUD(创建、读取、更新、删除)操作。通过DbHelper和DbManager类的设计,实现了数据操作的...
在Android应用开发中,文件存取和数据库编程是两个至关重要的环节。本教程将深入探讨这两个主题,帮助开发者更好地理解如何在Android系统中管理和存储数据。 ### 文件存取 #### 1. 存储类型 Android提供了多种...
本教程将详细介绍Android中的三种主要数据存储方式:SharedPreferences存储、内部文件存储以及数据库存储。 1. SharedPreferences存储 SharedPreferences是Android提供的一种轻量级的数据存储方式,用于保存应用...
总之,查看和导出Android数据库文件,尤其是`external.db`,涉及到ADB操作、数据库管理工具的使用以及对SQLite数据库的理解。通过这些工具和技术,开发者可以方便地调试和分析应用的数据库内容,从而优化性能、修复...
Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 Android 平台的基本操作和数据库应用。 二、实验...
在Android应用开发中,将数据库文件写入SD卡是一个常见的需求,特别是在处理大量数据或需要离线存储的情况下。本项目“Android应用源码之数据库文件写入SD卡”是一个很好的学习资源,适合于毕业设计或者对Android...
这个"Android高级应用源码-Android 操作数据库实例.zip"文件显然包含了关于如何在Android中高效、灵活地管理数据库的示例代码。以下是根据标题和描述提炼出的一些关键知识点,以及可能涉及的更广泛内容: 1. **...
在Android平台上,文件上传和将数据写入数据库是常见的任务,尤其在开发涉及用户交互的应用时,例如照片分享、文档管理或云同步等场景。本文将深入探讨如何在Android环境中实现这两个功能。 首先,让我们讨论文件...
8. **使用Android SDK操作数据库** Android提供了SQLiteDatabase类,可以方便地执行SQL语句。例如: - `getWritableDatabase()` 或 `getReadableDatabase()` 获取可读/写的数据库实例。 - `execSQL(String sql)` ...
"android数据库文件加密"这个主题主要涵盖了如何通过JNI(Java Native Interface)技术来实现对SQLite数据库文件的加密和解密操作。JNI允许Java代码调用C/C++的原生库,这样我们就可以利用已有的加密算法库来增强...
在Android应用开发中,文件存取和数据库编程是两个至关重要的概念。对于任何需要持久存储数据的应用来说,理解和掌握这两个方面都是必要的。本教程将深入探讨Android系统中的文件存储机制以及SQLite数据库的使用。 ...
### Android-shell创建数据库知识点 #### 一、概览 在Android开发过程中,有时我们需要通过命令行工具...当然,在实际开发中,我们更多地是通过代码来操作数据库,但在某些特殊情况下,掌握这些命令也是非常有用的。
保存文件时需要考虑到权限问题,特别是对于Android 6.0及以上版本,可能需要动态请求写入存储的权限。 接着是**zip文件的解压**。Android SDK提供了`java.util.zip`包,其中的`ZipInputStream`和`ZipEntry`可以用来...
在Android开发中,有时我们需要将预置的数据库文件与应用一起发布,并在应用程序首次启动时将其复制到外部存储(如SD卡)或内部存储(内存)中,以便于后续的操作和使用。这样的需求通常出现在那些需要提供初始数据...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的数据库系统,适用于移动设备。SQLite被集成在Android操作系统中,允许开发者在应用程序中存储和管理数据。本主题主要探讨如何通过源代码来实现对...
1. 创建`SQLiteOpenHelper`子类:在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建和操作数据库。这个类帮助我们管理数据库的版本,以及在升级时执行DDL(数据定义语言)语句。 2. 实现关键方法:`onCreate...
这份"Android 高级应用源码-Android 操作数据库实例"提供了一套实用的示例,可以帮助开发者深入理解如何在Android平台上有效地管理和操作SQLite数据库。 首先,我们要知道Android系统默认支持SQLite数据库,它是一...