CN106547543A - 基于SharedPreferences工具的数据处理方法及系统 - Google Patents
基于SharedPreferences工具的数据处理方法及系统 Download PDFInfo
- Publication number
- CN106547543A CN106547543A CN201610900936.9A CN201610900936A CN106547543A CN 106547543 A CN106547543 A CN 106547543A CN 201610900936 A CN201610900936 A CN 201610900936A CN 106547543 A CN106547543 A CN 106547543A
- Authority
- CN
- China
- Prior art keywords
- data
- type
- stored
- storage
- functions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/83—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本发明提出一种基于SharedPreferences工具的数据处理方法及系统,其中一种存储方法包括以下步骤:调用SharedPreferences工具的存储接口setValue进行数据存储,该存储接口setValue封装有多个存储函数;该存储接口setValue根据待存储数据的类型调用不同的存储函数对其进行分类型存储。本发明将多种存储数据通道通过处理后变成统一存储接口,并且实现了单例设计全局可用。通过该统一存储接口封装多个存储函数,在存储数据时仅仅需要调用该接口就可以实现数据的分类型存储,整个存储过程简单快捷。
Description
技术领域
本发明涉及一种数据存储领域,尤其涉及一种基于SharedPreferences工具的数据处理方法及系统。
背景技术
SharedPreferences是Android开发中的一种文件存储形式,文件主要以XML的形式进行保存,在开发过程中使用SharedPreferences工具是非常频繁的。系统提供的使用方法使用起来非常复杂,需要使用者根据数据类型调用不同的存储方式来存储。
此外,现有的SharedPreferences工具存储数据时没有加密处理,任何人都可以读取该文件并获取文件所对应的内容。通常SharedPreferences用来存储一些设置或者需要长久保存的数据,如果被第三方随意读取并更改是开发者不希望看到的结果。
发明内容
本发明的目的之一,在于在SharedPreferences工具中提供一个统一函数封装接口就可以将需要存储的数据直接存储,而不需要使用者调用不同函数来存储,从而让使用SharedPreferences工具变得简单快捷。
本发明的目的之二,在SharedPreferences工具中提供一个统一函数封装接口就可以将需要存储的数据直接存储,且进行加密存储,第三方无法随意读取并更改,从而让使用SharedPreferences工具变得简单、快捷和安全。
本发明为达上述目的之一所采用的技术方案是:
提供一种基于SharedPreferences工具的数据处理方法,其特征在于,包括以下步骤:
调用SharedPreferences工具的存储接口setValue进行数据存储,该存储接口setValue封装有多个存储函数;
该存储接口setValue根据待存储数据的类型调用不同的存储函数对其进行分类型存储。
接上述技术方案,步骤“该存储接口setValue根据待存储数据的类型调用不同的存储函数对其进行分类型存储”具体包括:
获取待存储数据的数据类型名称;
获取SharedPreferences工具接口变量sp;
通过接口变量sp获取编辑器变量editor;
根据数据类型名称判断待存储数据的数据类型;
编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将待存储数据分类型存储。
接上述技术方案,步骤“编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将待存储数据进行分类存储”具体为:
若待存储数据为String类型,则调用putString函数将待存储数据存储到文件;
若待存储数据为Int型数据,则调用putInt函数将待存储数据存储到文件;
若待存储数据为Boolean型数据,则调用putBoolean函数将待存储数据存储到文件;
若待存储数据为Float型数据,则调用putFloat函数将待存储数据存储到文件;
若待存储数据为Long型数据,则调用putLong函数将待存储数据存储到文件。
接上述技术方案,该方法还包括以下步骤:
调用SharedPreferences工具的数据获取接口getValue获取数据,该数据获取接口getValue与存储接口setValue相匹配,该数据获取接口getValue封装有多个获取函数,根据数据类型的不同调用不同的获取函数。
本发明为达上述目的之二所采用的技术方案是:
提供一种基于SharedPreferences工具的数据处理方法,其特征在于,包括以下步骤:
调用SharedPreferences工具的存储接口setValueAES进行数据存储,该存储接口setValueAES封装有多个存储函数;
该存储接口setValueAES根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储。
接上述技术方案,步骤“该存储接口setValueAES根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储”具体包括:
获取待存储数据的数据类型名称;
获取SharedPreferences工具接口变量sp;
通过接口变量sp获取编辑器变量editor;
根据数据类型名称判断待存储数据的数据类型;
获取密钥并对待存储数据进行加密;
编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将加密后的待存储数据分类型存储。
接上述技术方案,该方法中加密的密钥存储在C或者C++代码层中,获取密钥的过程具体如下:
调用获取密钥的请求;
获取密钥的请求进入静态加载C或者C++层的代码到内存中;
通过JNI技术将获取密钥的请求传到C或者C++代码层中;
从C或者C++代码层中将密钥存取出来;
将取出的密钥通过JNI技术返回给Java代码;
Java代码获取到密钥。
接上述技术方案,调用SharedPreferences工具的数据获取接口getValueAES获取数据,该数据获取接口getValueAES与存储接口setValueAES相匹配,该数据获取接口getValueAES封装有多个获取函数,根据数据类型的不同调用不同的获取函数,并通过AES算法对数据进行解密。
本发明还提供了一种基于SharedPreferences工具的数据处理系统,包括:
存储接口setValue模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型存储;
数据获取接口getValue模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,以获取通过存储接口setValue模块存储的数据。
接上述技术方案,该系统还包括:
存储接口setValueAES模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储;
数据获取接口getValueAES模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,并通过AES算法对数据进行解密,以获取通过存储接口setValueAES模块存储的数据。
本发明产生的有益效果是:本发明主要是通过统一封装对系统原生的使用方法进行进一步封装,使得使用起来更加便捷。同时在原来基础上提供了一套加解密的封装,使得数据的存储更加安全可靠。
本发明的有益效果:本发明将多种存储数据通道通过处理后变成统一存储接口,并且实现了单例设计全局可用。通过该统一存储接口封装多个存储函数,在存储数据时仅仅需要调用该接口就可以实现数据的分类型存储,整个存储过程简单快捷。
进一步地,本发明还增加了加密存储接口,同样实现了单例设计全局可用。该接口同样封装多个存储函数,在存储数据时仅仅需要调用该加密存储接口就可以实现数据的分类型和加密存储,整个存储过程简单快捷且安全,从而实现了对敏感数据的保护。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明一个实施例基于SharedPreferences工具的数据处理方法的流程图;
图2为图1中步骤S102的具体流程图;
图3为本发明另一实施例基于SharedPreferences工具的数据处理方法的流程图;
图4为图3中步骤S103的具体流程图;
图5为本发明第三实施例基于SharedPreferences工具的数据处理方法的流程图;
图6为图5中步骤S502的具体流程图;
图7为本发明获取密钥的流程图;
图8为本发明第四实施例基于SharedPreferences工具的数据处理方法的流程图;
图9为图8中步骤S503的具体流程图;
图10为本发明一个实施例基于SharedPreferences工具的数据处理系统的结构示意图;
图11为本发明另一实施例基于SharedPreferences工具的数据处理系统的结构示意图;
图12为本发明第三实施例基于SharedPreferences工具的数据处理系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
首先对相关名词进行解释如下:
SharedPreferences:SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。文件通常以XML形式进行存储。
AES:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
单例:全局唯一可用的实例称之为单例。
XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
JNI:JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。
键值对:键-值是一对一映射关系,在存储数据时,提供一组成对的键-值对象,提供key(键)到value(值)的映射,key不允许重复。value可以重复。每个键最多只能映射到一个值。
本发明主要是通过统一封装对安卓系统原生SharedPreferences工具中的数据存储和获取的使用方法进行进一步封装,对外提供统一的存储接口,且单例设计全局可用,使得SharedPreferences工具使用起来更加便捷。同时在原来基础上提供了一套加解密的封装,使得数据的存储更加安全可靠。
本发明实施例基于SharedPreferences工具的数据处理方法,如图1所示,包括以下步骤:
S101、调用SharedPreferences工具的存储接口setValue进行数据存储,该存储接口setValue封装有多个存储函数;
S102、该存储接口setValue根据待存储数据的类型调用不同的存储函数对其进行分类型存储。
步骤S101中存储数据时,可通过键值对的方式存储,每个键(key)对应一个值(value)。当要获取该值时,就可以通过相应的键来获取。
优选的,如图2所示,步骤S102具体包括:
S1021、获取待存储数据的数据类型名称;
S1022、获取SharedPreferences工具接口变量sp;
S1023、通过接口变量sp获取编辑器变量editor;
S1024、根据数据类型名称判断待存储数据的数据类型;
S1025、编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将待存储数据分类型存储。
通过上述实施例的方法,当用户需要存储比如配置信息或者一些临时变量时,可以通过工具中的存储接口setValue来存储数据。该存储接口setValue能够接受任何类型的数据,最后通过这个接口处理后会将需要存储的数据存储到文件中。
上述实施例中是通过获取系统处理SharedPreferences的API sp,然后对传递进来的数据依次进行判断,不同数据类型选择不同的存储方法存入不同的类型中,最后可通过commit方法将数据写入到文件。这样的处理确保了能够通过调用一个接口函数就能达到存储多种数据类型的目的。对系统接口进行了一个非常好的封装,其他开发人员在使用的时候将会非常方便,无需再考虑不同类型的数据调用不同的存储函数了。
通过系统方法调用每次都得先获取sp调用系统不同的写入函数,然后进行commit写入操作,这个过程是通用的。所以本发明中将这些步骤进行统一封装对外提供了一个简单的方法,仅仅调用一个方法就能够完整的将数据写入到SharedPreferences中去了。本发明实施例会自动解析数据类型,调用不同的方法存入到文件。
其中判断数据类型可通过equals方法来进行判断,以字符串类型的判断为例:可对传入的数据首先获取类型type(type为字符串形式),获取方式是String type=defaultObject.getClass().getSimpleName();通过默认值获取所属类,再根据类获取类的名称。
然后根据类型和系统默认数据类型进行比较,通过"String".equals(type)等判断方式去自动区分数据类型。这个判断是判断type是不是String(字符串)类型,根据不同的数据类型调用不同的存储方法。最后将数据写入文件中。其他类型的判断均类似,在此不赘述。
通过判断后,根据不同的数据类型进行存储,具体如下:
若待存储数据为String(字符串)类型,则调用putString函数将待存储数据存储到文件;
若待存储数据为Int(整形)型数据,则调用putInt函数将待存储数据存储到文件;
若待存储数据为Boolean(布尔)型数据,则调用putBoolean函数将待存储数据存储到文件;
若待存储数据为Float(浮点型)型数据,则调用putFloat函数将待存储数据存储到文件;
若待存储数据为Long(长整型)型数据,则调用putLong函数将待存储数据存储到文件。
可以理解的是,存储数据并不局限于上述类型,若是其他类型,则调用其他相应的函数对其进行存储。
上述处理有效的对所要调用的函数进行了合理的封装使得使用上更加方便快捷。
获取数据和存储数据类似,只不过在获取数据过程中会根据不同类型去调用不同的获取函数。如果获取失败的时候,会将默认值返回出去。本发明的一个实施例中,如图3所示,该方法还包括以下步骤:
S103、调用SharedPreferences工具的数据获取接口getValue获取数据,该数据获取接口getValue与存储接口setValue相匹配,该数据获取接口getValue封装有多个获取函数,根据数据类型的不同调用不同的获取函数。
当用户需要获取SharedPreferences文件中的数据时可以通过获取接口getValue来获取数据,数据的获取可通过键值来判断,如果原来有存储过该数据,那么直接返回原来存储的数据。如果原来没有存储任何数据,获取到的数据就是空的。获取接口getValue和存储接口setValue是成对使用的,不能混用。如果之前存储数据使用的是setValue,获取该数据的时候就需要使用getValue接口。
如图4所示,步骤S103中通过获取接口getValue获取数据过程主要包括:
S1031、根据默认值获取数据的类型;
S1032、获取系统处理SharedPreferences的接口变量sp;
S1033、根据接口变量sp获取编辑器Editor的变量editor;
S1034、对传递进来的数据依次判断数据类型;
S1035、编辑器变量editor根据待存储数据的数据类型调用不同的获取函数获取相应的数据。如果获取失败时会默认将缺省值(或者其他预先设置的值)返回;如果出现异常类型的数据,直接返回空,或者返回错误信息来提示开发者。
步骤S1031中,由于存储数据是通过键值对的形式存储,因此获取数据时也是通过对应的键来获取相应的值,如获取int型的数据,则可通过int+键+默认值来获取,该默认值与所要获取的数据类型相同,是开发者预先设置的值,通过判断该默认值的类型可以判断即将要获取的数据的类型。
获取接口getValue主要针对获取部分进行了封装,将多种类型的数据的获取进行了封装,在使用的时候仅仅调用一句话即可达到所需要求,使用简洁方便。大大提高了开发效率和减少问题出现的概率。
其中判断数据类型是通过equals方法来进行判断的,如:对传入的数据(即数据类型,比如String,int,boolean,long,float等)首先获取类型type,获取方式是String type=defaultObject.getClass().getSimpleName();即通过默认值获取所属类,再根据类获取类的名称。这样的处理有效的对数据进行了合理的封装使得使用上更加方便快捷。
本发明还提供了另一实施例基于SharedPreferences工具的数据处理方法,该实施例是对上述实施例的增强,是为了确保数据的安全性对数据进行了加解密的处理。通过AES加解密的处理能够有效的保证数据的安全性。增加了加解密功能后使得SharedPreferences使用起来更加安全。如图5所示,功能增强后的方法具体包括以下步骤:
S501、调用SharedPreferences工具的存储接口setValueAES进行数据存储,该存储接口setValueAES封装有多个存储函数;
S502、该存储接口setValueAES根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储。
步骤S501中存储数据时,也可通过键值对的方式存储,每个键(key)对应一个值(value)。当要获取该值时,就可以通过相应的键来获取。
进一步地,如图6所示,步骤S502具体包括:
S5021、获取待存储数据的数据类型名称;
S5022、获取SharedPreferences工具接口变量sp;
S5023、通过接口变量sp获取编辑器变量editor;
S5024、根据数据类型名称判断待存储数据的数据类型;
S5025、获取密钥并对待存储数据进行加密;
S5026、编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将加密后的待存储数据分类型存储。
因为加密函数需要一个加密密钥,如果加密密钥直接存放在JAVA代码里面用一个常量来进行保存的话很容易被别人破解获取到加密密钥。为了密钥的安全性考虑,本发明实施例的中间密钥不存放在Java代码中而是将密钥存放在C或者C++代码里面,然后通过JNI技术让JAVA代码调用C或者C++代码获取C或者C++代码里面的密钥然后再进行加解密操作。如图7所示,获取密钥的过程具体如下:
S701、调用获取密钥的请求;
S702、获取密钥的请求进入静态加载C或者C++层的代码到内存中;
S703、通过JNI技术将获取密钥的请求传到C或者C++代码层中;
S704、从C或者C++代码层中将密钥存取出来;
S705、将取出的密钥通过JNI技术返回给Java代码;
S706、Java代码获取到密钥。
整个过程主要通过JNI技术让C或者C++和JAVA代码进行通信,将C或者C++中的密钥数据传递到Java层来。Java层获取到密钥就能够对数据进行加解密处理了。
该实施例中首先获取系统处理SharedPreferences的API sp,然后对传递进来的数据依次进行判断,不同数据类型存入不同的类型中,这样的处理确保了能够通过调用一个函数就能达到存储多种数据类型的目的。对系统接口进行了一个非常好的封装,其他开发人员在使用的时候将会非常方便,无需再考虑不同类型的数据调用不同的存储函数了。对存储的数据进行加密处理时,可使用AES算法进行加密,获取密钥的方式是通过JNI方式获取,根据类型的不同选择不同的存储方法,最后通过commit方法将数据写入到文件。
该实施例与之前的存储数据最大的不同点是增加了加密的处理。该加密主要是敏感数据进行加密,确保数据的安全性。整个执行过程在之前的存储上增加了加密的功能,使得功能增强了。对于存储敏感数据时时非常有用的。
获取数据和存储数据类似,只不过在获取数据过程中会根据不同类型去调用不同的获取函数,并调用密钥对数据进行解密。如果获取失败的时候,可将默认值返回出去。
进一步地,本发明实施例中,如图8所示,还包括步骤:
S503、调用SharedPreferences工具的数据获取接口getValueAES获取数据,该数据获取接口getValueAES与存储接口setValueAES相匹配,该数据获取接口getValueAES封装有多个获取函数,根据数据类型的不同调用不同的获取函数,并通过AES算法对数据进行解密。
如图9所示,步骤S503通过获取接口getValueAES获取数据具体包括以下步骤:
S5031、根据默认值获取数据的类型;
S5032、获取系统处理SharedPreferences的接口变量sp;
S5033、根据接口变量sp获取编辑器Editor的变量editor;
S5034、对传递进来的数据依次判断数据类型,根据不同数据类型调用不同的获取函数来获取数据。如果获取失败的时会默认将缺省值(可为上述默认值或者预设的其他值)返回回去;如果出现异常类型的数据,可直接返回空,或者返回错误信息并告知开发者。
S5035、对返还的数据进行解密处理,解密算法也是通用的AES解密算法,密钥获取是通过JNI调用获取解密密钥。
S5036、将解密后的数据返回。
与获取接口getValue相比,通过获取接口getValueAES获取数据的流程最大的不同点就是增加了解密功能,解密功能主要是对已经加密的数据进行解密,获取原始数据,并将原始数据返回。
解密和加密流程一样,也是通过相同的方法去获取密钥,然后调用通用的AES算法进行解密操作。
当用户需要存储一些敏感数据,比如密码或者不希望被别人发现的数据的时候可以通过工具中setValueAES接口将数据进行加密后存储到文件中。该接口能够接受任意数据类型,并将该数据加密后存储到文件中。
当用户需要获取被加过密的数据时可以使用getValueAES接口。该接口会自动对数据进行解密操作,并将解密后的数据返回。如果所需要获取的数据之前是没有存储的,则直接返回空。
getValueAES和setValueAES是成对使用的,不能混用。如果之前存储数据时用的setValueAES接口,则获取该数据的时候需要使用getValueAES接口。
为了实现上述实施例的方法,如图10所示,为本发明实施例的基于SharedPreferences工具的数据处理系统,该系统可实现普通数据的快捷存储和获取,具体包括:
存储接口setValue模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型存储;
数据获取接口getValue模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,以获取通过存储接口setValue模块存储的数据。
如图11所示,为本发明另一实施例的基于SharedPreferences工具的数据处理系统,可实现数据的快捷、安全存储和获取,该系统具体包括:
存储接口setValueAES模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储;
数据获取接口getValueAES模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,并通过AES算法对数据进行解密,以获取通过存储接口setValueAES模块存储的数据。
本发明的一个较佳实施例中,如图12所示,基于SharedPreferences工具的数据处理系统总共提供了4个对外接口,可以根据需要对数据进行普通存储或者特别存储,该系统具体包括:
存储接口setValue模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型存储;
数据获取接口getValue模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,以获取通过存储接口setValue模块存储的数据。
存储接口setValueAES模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储;
数据获取接口getValueAES模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,并通过AES算法对数据进行解密,以获取通过存储接口setValueAES模块存储的数据。
当用户需要存储比如配置信息或者一些临时变量时,可以通过工具中的setValue接口来存储数据。该接口能够接受任何类型的数据,最后通过这个接口处理后会将需要存储的数据存储到文件中。
当用户需要获取SharedPreferences文件中的数据时可以通过接口中的getValue接口来获取数据,数据的获取是通过键来判断的,如果原来有存储过该数据那么直接返回原来存储的数据。如果原来没有存储任何数据,获取到的数据就是空的。
当用户需要存储一些敏感数据,比如密码或者不希望被别人发现的数据的时候可以通过工具中的接口setValueAES接口将数据进行加密后存储到文件中。该接口能够接受任意数据类型,并将该数据加密后存储到文件中。
当用户需要获取被加过密的数据时可以使用getValueAES接口。该接口会自动对数据进行解密操作,并将解密后的数据返回。如果所需呀获取的数据之前是没有存储的直接返回空。
使用上要注意getValue和setValue是成对使用的,getValueAES和setValueAES是成对使用的,不能混用。如果之前存储数据使用的是setValue获取该数据的时候需要使用getValue接口,如果之前存储数据时用的setValueAES接口获取该数据的时候使用getValueAES接口。
综上,本发明将多种存储数据通道通过处理后变成统一存储接口,并且使用了单例设计全局可用。同时可增加加解密功能,对敏感数据进行保护。仅仅调用一个存储接口就能够完整的将数据写入到SharedPreferences中去,接口可自动解析数据类型,调用不同的函数存入到文件。根据存储数据的需要选择加密或者不加密的存储接口,从而实现了简单、快捷且安全的数据存储。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种基于SharedPreferences工具的数据处理方法,其特征在于,包括以下步骤:
调用SharedPreferences工具的存储接口setValue进行数据存储,该存储接口setValue封装有多个存储函数;
该存储接口setValue根据待存储数据的类型调用不同的存储函数对其进行分类型存储。
2.根据权利要求1所述的方法,其特征在于,步骤“该存储接口setValue根据待存储数据的类型调用不同的存储函数对其进行分类型存储”具体包括:
获取待存储数据的数据类型名称;
获取SharedPreferences工具接口变量sp;
通过接口变量sp获取编辑器变量editor;
根据数据类型名称判断待存储数据的数据类型;
编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将待存储数据分类型存储。
3.根据权利要求2所述的方法,其特征在于,步骤“编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将待存储数据进行分类存储”具体为:
若待存储数据为String类型,则调用putString函数将待存储数据存储到文件;
若待存储数据为Int型数据,则调用putInt函数将待存储数据存储到文件;
若待存储数据为Boolean型数据,则调用putBoolean函数将待存储数据存储到文件;
若待存储数据为Float型数据,则调用putFloat函数将待存储数据存储到文件;
若待存储数据为Long型数据,则调用putLong函数将待存储数据存储到文件。
4.根据权利要求1所述的方法,其特征在于,该方法还包括以下步骤:
调用SharedPreferences工具的数据获取接口getValue获取数据,该数据获取接口getValue与存储接口setValue相匹配,该数据获取接口getValue封装有多个获取函数,根据数据类型的不同调用不同的获取函数。
5.一种基于SharedPreferences工具的数据处理方法,其特征在于,包括以下步骤:
调用SharedPreferences工具的存储接口setValueAES进行数据存储,该存储接口setValueAES封装有多个存储函数;
该存储接口setValueAES根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储。
6.根据权利要求5所述的方法,其特征在于,步骤“该存储接口setValueAES根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储”具体包括:
获取待存储数据的数据类型名称;
获取SharedPreferences工具接口变量sp;
通过接口变量sp获取编辑器变量editor;
根据数据类型名称判断待存储数据的数据类型;
获取密钥并对待存储数据进行加密;
编辑器变量editor根据待存储数据的数据类型,调用不同的存储函数将加密后的待存储数据分类型存储。
7.根据权利要求5所述的方法,其特征在于,该方法中加密的密钥存储在C或者C++代码层中,获取密钥的过程具体如下:
调用获取密钥的请求;
获取密钥的请求进入静态加载C或者C++层的代码到内存中;
通过JNI技术将获取密钥的请求传到C或者C++代码层中;
从C或者C++代码层中将密钥存取出来;
将取出的密钥通过JNI技术返回给Java代码;
Java代码获取到密钥。
8.根据权利要求5所述的方法,其特征在于,调用SharedPreferences工具的数据获取接口getValueAES获取数据,该数据获取接口getValueAES与存储接口setValueAES相匹配,该数据获取接口getValueAES封装有多个获取函数,根据数据类型的不同调用不同的获取函数,并通过AES算法对数据进行解密。
9.一种基于SharedPreferences工具的数据处理系统,其特征在于,包括:
存储接口setValue模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型存储;
数据获取接口getValue模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,以获取通过存储接口setValue模块存储的数据。
10.根据权利要求9所述的系统,其特征在于,该系统还包括:
存储接口setValueAES模块,封装有多个存储函数,用于根据待存储数据的类型调用不同的存储函数对其进行分类型并加密存储;
数据获取接口getValueAES模块,封装有多个获取函数,根据数据类型的不同调用不同的获取函数,并通过AES算法对数据进行解密,以获取通过存储接口setValueAES模块存储的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610900936.9A CN106547543A (zh) | 2016-10-13 | 2016-10-13 | 基于SharedPreferences工具的数据处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610900936.9A CN106547543A (zh) | 2016-10-13 | 2016-10-13 | 基于SharedPreferences工具的数据处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106547543A true CN106547543A (zh) | 2017-03-29 |
Family
ID=58368962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610900936.9A Pending CN106547543A (zh) | 2016-10-13 | 2016-10-13 | 基于SharedPreferences工具的数据处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106547543A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109787945A (zh) * | 2017-11-15 | 2019-05-21 | 武汉斗鱼网络科技有限公司 | 一种Android系统中用户组件的实现方法及装置 |
CN109886034A (zh) * | 2019-02-27 | 2019-06-14 | 北京智游网安科技有限公司 | 一种apk数据加密处理方法、智能终端及存储介质 |
CN110968368A (zh) * | 2018-09-30 | 2020-04-07 | 武汉斗鱼网络科技有限公司 | 一种直播数据的处理方法及其相关设备 |
CN112364085A (zh) * | 2020-11-20 | 2021-02-12 | 浙江百应科技有限公司 | 一种基于MapReduce思想的特征抽取计算方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929783A (zh) * | 2012-10-25 | 2013-02-13 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN104765840A (zh) * | 2015-04-16 | 2015-07-08 | 成都睿峰科技有限公司 | 一种大数据分布式存储的方法和装置 |
CN105825143A (zh) * | 2016-03-07 | 2016-08-03 | 乐视移动智能信息技术(北京)有限公司 | 一种应用程序写入和读取数据的方法及装置 |
-
2016
- 2016-10-13 CN CN201610900936.9A patent/CN106547543A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929783A (zh) * | 2012-10-25 | 2013-02-13 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN104765840A (zh) * | 2015-04-16 | 2015-07-08 | 成都睿峰科技有限公司 | 一种大数据分布式存储的方法和装置 |
CN105825143A (zh) * | 2016-03-07 | 2016-08-03 | 乐视移动智能信息技术(北京)有限公司 | 一种应用程序写入和读取数据的方法及装置 |
Non-Patent Citations (2)
Title |
---|
QQ_19740679: "android安全之—文件加密jni实现", 《HTTPS://BLOG.CSDN.NET/QQ_19740679/ARTICLE/DETAILS/48160721》 * |
XIAANMING: "Android分享一个SharedPreferences的工具类", 《HTTPS://BLOG.CSDN.NET/XIAANMING/ARTICLE/DETAILS/9339515》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109787945A (zh) * | 2017-11-15 | 2019-05-21 | 武汉斗鱼网络科技有限公司 | 一种Android系统中用户组件的实现方法及装置 |
CN109787945B (zh) * | 2017-11-15 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种Android系统中用户组件的实现方法及装置 |
CN110968368A (zh) * | 2018-09-30 | 2020-04-07 | 武汉斗鱼网络科技有限公司 | 一种直播数据的处理方法及其相关设备 |
CN110968368B (zh) * | 2018-09-30 | 2022-05-13 | 武汉斗鱼网络科技有限公司 | 一种直播数据的处理方法及其相关设备 |
CN109886034A (zh) * | 2019-02-27 | 2019-06-14 | 北京智游网安科技有限公司 | 一种apk数据加密处理方法、智能终端及存储介质 |
CN112364085A (zh) * | 2020-11-20 | 2021-02-12 | 浙江百应科技有限公司 | 一种基于MapReduce思想的特征抽取计算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106547543A (zh) | 基于SharedPreferences工具的数据处理方法及系统 | |
CN103617401B (zh) | 一种数据文件保护方法及装置 | |
CN106599628B (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
CN110826031B (zh) | 加密方法、装置、计算机设备及存储介质 | |
CN104182662B (zh) | 隐藏应用程序的隐藏和打开方法、系统以及移动终端 | |
US10541982B1 (en) | Techniques for protecting electronic data | |
US20220019678A1 (en) | Method, apparatus, and computer-readable medium for automated construction of data masks | |
EP2897074A1 (en) | Application code obfuscation device based on self-conversion and method therefor | |
CN106126981A (zh) | 基于虚拟函数表替换的软件安全防护方法 | |
CN106599723A (zh) | 一种文件加密方法及装置、文件解密方法及装置 | |
CN106788995A (zh) | 文件加密方法及装置 | |
EP3465508B1 (en) | Method, apparatus, and computer-readable medium for masking data | |
CN106250104A (zh) | 一种针对服务器的远程操作系统、方法及装置 | |
CN103647636B (zh) | 安全访问数据的方法及装置 | |
CN205901794U (zh) | 一种对大数据内容进行选择性加密的系统 | |
CN106610995A (zh) | 一种创建密文索引的方法、装置及系统 | |
CN108183796A (zh) | 利用白盒库文件和白盒密钥文件进行加解密的方法及装置 | |
CN108089880A (zh) | 对应用程序安装文件进行预处理的方法、装置和服务器 | |
CN107947917A (zh) | 一种生成白盒密钥的方法及装置 | |
WO2020177430A1 (zh) | 应用加固的方法、装置、计算设备及计算机存储介质 | |
CN101877700A (zh) | 在应用与数据库之间传递机密信息 | |
CN107305606A (zh) | 应用文件的处理方法及装置和文件的访问方法及装置 | |
CN114285551A (zh) | 量子密钥分发方法、装置、可读存储介质及电子设备 | |
CN110489992A (zh) | 基于大数据平台的脱敏方法及系统 | |
CN114154123B (zh) | 应用于Python项目的加密保护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170329 |