android数据备份到mysql_MTK Android Android数据保存到系统数据库

如果有留意Android中系统设置Settings里面的源码,你会发现代码中频繁用到了Settings.System操作,该类通过键值对的形式,将一些特定的值以全局的模式保存到Setting的数据库中,

我们可以通过它提供的get或者put形式的方法对其中的数据进行读写操作,(非系统级别的应用需要添加对应的权限)。当然,如果能够对frameworks进行修改,我们甚至可以在该类中添加一些特定的值,以方便自己或他人使用。

一、通过Settings.System进行读写

//其中"getXXX"代表对应的类似方法,如getInt()、getBoolean、putString()等。

//通过变量名称获取值,如果变量不存在,数据库中没有设置过初始值或者该值类型不对,将抛出SettingNotFoundException异常

Settings.System.getXXX(ContentResolver cr, String name);

//通过变量名称获取值,如果发生上面方法中导致异常的情况,将返给定的默认值

Settings.System.getXXX(ContentResolver cr, String name, XXX def);

//将指定名称的值写入数据库

Settings.System.putXXX(ContentResolver cr,String name, XXX Value);

非系统权限,需要在App项目的AndroidMainfes.xml文件中添加如下权限:

二、在Settings.System添加一个自定义的全局变量

frameworks\base\core\java\android\provider\Settings.Java下,打开该文件,搜索关键词 SETTINGS_TO_BACKUP ,共有两处,

一处是在Settings里面,另一处在内部类Settings.System里面,在SETTINGS_TO_BACKUP数组上面添加自 定义变量,同时在该数组里面添加自定义变量名称,

Settting和内部类System都需要添加(共四个地方),比如自定义系统变量 SYSTEM_ZWH:

三、如何使用全局变量

a:定义变量

frameworks/base/core/java/android/provider/Settings.java

/**

* mobile model

* @hide

*/

public static final String MOBILE_MODEL="mobile_model";

/**

* Settings to backup. This is here so that it's in the same place as the settings

* keys and easy to update.

*

* NOTE: Settings are backed up and restored in the order they appear

*       in this array. If you have one setting depending on another,

*       make sure that they are ordered appropriately.

*

* @hide

*/

public static final String[] SETTINGS_TO_BACKUP = {

MOBILE_MODEL,  //mobile model

b:初始化变量

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

loadSetting(stmt, Settings.System.MOBILE_MODEL, VERSION.RELEASE);

VERSION.RELEASE:

frameworks/base/core/java/android/os/Build.java

/** Various version strings. */

public static class VERSION {

/**

* The user-visible version string.  E.g., "1.0" or "3.4b5".

*/

public static final String RELEASE = getString("ro.build.version.release");

c:使用全局变量赋值

packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java

Settings.System.putString(this.getContentResolver(), Settings.System.MOBILE_MODEL, "4.4");

d:使用全局变量获取值

packages/apps/Select/src/com/mtk/select/selectActivity.java

EditText sysEdit = (EditText) findViewById(R.id.system_name_edit);

sysEdit.setText(Settings.System.getString(this.getContentResolver(),

Settings.System.MOBILE_MODEL));//mobile model

Android保存数据到系统数据库中:Settings.System

有时候我们一些设置属性要保存到本地,防止软件卸载后配置属性消失。

比如我今天就有个修改手机蓝牙名称显示的功能,但是只需要修改一次,并且进行标记,并保存这个标识,如果程序卸载,重新安装也不需要再修改,这里就是要保存这个标识,来判断是否需要修改名称。

要实现这个功能,SharePreference是不行的了,本地文件file保存呢,是可以的,但是比较麻烦,而且有被删掉的可能。

这里介绍一个比较简单、实用的方法:

这个方法就是把标识保存到系统配置(系统数据库)文件中,即使程序卸载也不影响,系统的配置文件。

代码示例:

import android.provider.Settings;

import android.util.Log;

import android.content.Context;

//设置系统配置文件中的数据,第一个参数固定的,但是需要上下文,第二个参数是保存的Key,第三个参数是保存的value

boolean changeBluetoothName = Settings.System.putInt(getContentResolver(), "changeBluetoothName", 1);

//获取系统配置文件中的数据,第一个参数固定的,但是需要上下文,第二个参数是之前保存的Key,第三个参数表示如果没有这个key的情况的默认值

int blueFlag = Settings.System.getInt(getContentResolver(), "changeBluetoothName", 0);

这里的保存数据类似SharePreference,保存的是键值对key-value,但是这里的数据是保存到系统文件中的,跟程序无关,但是在程序中是可以能够获取的。

上面示例代码保存的是int数据,也可以使用putString保存String数据,putByte保存byte数据等等。。。

同样的,获取也是根据保存的数据类型来获取。

运行前还要添加一个权限,否则会报错

据说这个系统配置文件的位置是:

/data/data/com.android.providers.settings/databases/

数据库控制的代码:

frameworks\base\packages\SettingsProvider\src\com\android\providers\settings的DatabaseHelper类里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
将STM32的数据保存MySQL数据库需要以下步骤: 1. 在STM32中配置一个网络连接,使其能够连接到MySQL服务器。可以使用WIFI模块或以太网模块。 2. 在MySQL中创建一个数据库和表,用于存储STM32发送的数据。可以使用MySQL Workbench等工具进行创建。 3. 在STM32中编写代码,将要保存MySQL数据库中的数据进行格式化和编码。可以使用C语言的MySQL库,如libmysqlclient。 4. 在STM32中通过网络连接将数据传输到MySQL服务器。可以使用MySQL的C API函数进行数据插入操作。 下面是一个基本的示例代码: ```c #include <mysql/mysql.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define DB_HOST "localhost" #define DB_USER "root" #define DB_PASS "password" #define DB_NAME "mydatabase" int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = DB_HOST; char *user = DB_USER; char *password = DB_PASS; char *database = DB_NAME; conn = mysql_init(NULL); if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } if (mysql_query(conn, "CREATE TABLE IF NOT EXISTS data (id INT PRIMARY KEY AUTO_INCREMENT, value INT)")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } char query[100]; sprintf(query, "INSERT INTO data (value) VALUES (%d)", 123); if (mysql_query(conn, query)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } mysql_close(conn); exit(0); } ``` 在上面的代码中,我们通过MySQL C API连接到数据库,在数据库中创建一个名为data的表,然后插入一个值为123的记录。 需要注意的是,此代码仅为示例代码,实际应用中需要根据具体需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值