`
folksy
  • 浏览: 160233 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android 增加内部flash时容易忘记的一点-数据库操作-删除文件

阅读更多

其他中间层做好后,发现在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);
    }
}

分享到:
评论

相关推荐

    Android-实验报告-Sqlite-数据库操作.docx

    在实验中,`RegisterActivity`类中的`SQLiteDatabase`对象`db`被用来打开或创建数据库文件`user.db3`。 2. **数据库操作**:在`RegisterActivity`中,当用户点击注册按钮时,会执行创建数据库表的操作。通过`...

    Android-Android----数据库框架GreenDao的使用

    在Android应用开发中,数据持久化是不可或缺的一部分,而GreenDao作为一款专为Android设计的高效ORM(Object-Relational Mapping)框架,它提供了便捷的方式来处理SQLite数据库,使得开发者无需直接操作SQL语句,就...

    android查看数据库文件,导出数据库方便查看

    总之,查看和导出Android数据库文件,尤其是`external.db`,涉及到ADB操作、数据库管理工具的使用以及对SQLite数据库的理解。通过这些工具和技术,开发者可以方便地调试和分析应用的数据库内容,从而优化性能、修复...

    Android课程试验报告-实现数据库存储.docx

    总结来说,本实验报告详细展示了在Android应用中如何使用SQLite数据库进行数据管理,包括数据库的创建、表的建立以及基本的CRUD(创建、读取、更新、删除)操作。通过DbHelper和DbManager类的设计,实现了数据操作的...

    Android教程+笔记十二--文件存取、数据库编程.zip

    在Android应用开发中,文件存取和数据库编程是两个至关重要的环节。本教程将深入探讨这两个主题,帮助开发者更好地理解如何在Android系统中管理和存储数据。 ### 文件存取 #### 1. 存储类型 Android提供了多种...

    Android 3种数据保存(SharedPreferences存储 内部文件存储 数据库存储)

    本教程将详细介绍Android中的三种主要数据存储方式:SharedPreferences存储、内部文件存储以及数据库存储。 1. SharedPreferences存储 SharedPreferences是Android提供的一种轻量级的数据存储方式,用于保存应用...

    Android实验报告Sqlite数据库操作.pdf

    Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 Android 平台的基本操作和数据库应用。 二、实验...

    Android应用源码之数据库文件写入SD卡-IT计算机-毕业设计.zip

    在Android应用开发中,将数据库文件写入SD卡是一个常见的需求,特别是在处理大量数据或需要离线存储的情况下。本项目“Android应用源码之数据库文件写入SD卡”是一个很好的学习资源,适合于毕业设计或者对Android...

    Android高级应用源码-Android 操作数据库实例.zip

    这个"Android高级应用源码-Android 操作数据库实例.zip"文件显然包含了关于如何在Android中高效、灵活地管理数据库的示例代码。以下是根据标题和描述提炼出的一些关键知识点,以及可能涉及的更广泛内容: 1. **...

    android文件上传及写入数据库

    在Android平台上,文件上传和将数据写入数据库是常见的任务,尤其在开发涉及用户交互的应用时,例如照片分享、文档管理或云同步等场景。本文将深入探讨如何在Android环境中实现这两个功能。 首先,让我们讨论文件...

    android文件存储之数据库

    8. **使用Android SDK操作数据库** Android提供了SQLiteDatabase类,可以方便地执行SQL语句。例如: - `getWritableDatabase()` 或 `getReadableDatabase()` 获取可读/写的数据库实例。 - `execSQL(String sql)` ...

    Android实现登陆注册连接数据库操作完整代码

    - 在处理用户输入和数据库操作时,需要考虑可能出现的异常情况,比如网络错误、数据格式错误等,并通过try-catch语句捕获并适当地处理这些异常。 以上是项目"Android实现登陆注册连接数据库操作完整代码"中涵盖的...

    android数据库文件加密

    "android数据库文件加密"这个主题主要涵盖了如何通过JNI(Java Native Interface)技术来实现对SQLite数据库文件的加密和解密操作。JNI允许Java代码调用C/C++的原生库,这样我们就可以利用已有的加密算法库来增强...

    新版Android开发教程 笔记12--文件存取、数据库编程

    在Android应用开发中,文件存取和数据库编程是两个至关重要的概念。对于任何需要持久存储数据的应用来说,理解和掌握这两个方面都是必要的。本教程将深入探讨Android系统中的文件存储机制以及SQLite数据库的使用。 ...

    Android-shell创建数据库

    ### Android-shell创建数据库知识点 #### 一、概览 在Android开发过程中,有时我们需要通过命令行工具...当然,在实际开发中,我们更多地是通过代码来操作数据库,但在某些特殊情况下,掌握这些命令也是非常有用的。

    文件下载和数据库操作

    保存文件时需要考虑到权限问题,特别是对于Android 6.0及以上版本,可能需要动态请求写入存储的权限。 接着是**zip文件的解压**。Android SDK提供了`java.util.zip`包,其中的`ZipInputStream`和`ZipEntry`可以用来...

    android中复制资源文件中的数据库文件到sd卡或内存源码

    在Android开发中,有时我们需要将预置的数据库文件与应用一起发布,并在应用程序首次启动时将其复制到外部存储(如SD卡)或内部存储(内存)中,以便于后续的操作和使用。这样的需求通常出现在那些需要提供初始数据...

    android对sqlite数据库的操作

    1. 创建`SQLiteOpenHelper`子类:在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建和操作数据库。这个类帮助我们管理数据库的版本,以及在升级时执行DDL(数据定义语言)语句。 2. 实现关键方法:`onCreate...

    Android高级应用源码-Android 操作数据库实例.rar

    这份"Android 高级应用源码-Android 操作数据库实例"提供了一套实用的示例,可以帮助开发者深入理解如何在Android平台上有效地管理和操作SQLite数据库。 首先,我们要知道Android系统默认支持SQLite数据库,它是一...

    Android-sqlite数据库

    在Android应用开发中,SQLite数据库是通过Java API进行操作的,但有时为了性能提升或者特定功能的实现,开发者可能会选择使用JNI(Java Native Interface)来直接与C/C++库交互,例如SQLite的原生库。以下将详细讲解...

Global site tag (gtag.js) - Google Analytics