CN105550311B - 一种动态改变应用程序存储路径的方法 - Google Patents
一种动态改变应用程序存储路径的方法 Download PDFInfo
- Publication number
- CN105550311B CN105550311B CN201510928910.0A CN201510928910A CN105550311B CN 105550311 B CN105550311 B CN 105550311B CN 201510928910 A CN201510928910 A CN 201510928910A CN 105550311 B CN105550311 B CN 105550311B
- Authority
- CN
- China
- Prior art keywords
- application program
- attribute value
- path
- storage
- store path
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4081—Live connection to bus, e.g. hot-plugging
-
- 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/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种动态改变应用程序存储路径的方法,包括步骤:A1、设置存储路径***属性;A2、如果属性值为第二属性值,则获取内部存储路径并传递给应用程序;A3、如果属性值为第一属性值,判断外部存储卡是否***设备,如果外部存储卡没有***设备,则将的属性值修改为第二属性值,获取内部存储路径并传递给应用程序;A4、如果外部存储卡已***设备,则判断应用程序是否属于特定应用程序或者第三方可卸载程序,如果是则获取外部存储路径并传递给应用程序,否则将存储路径***属性的属性值修改为第二属性值,获取内部存储路径并传递给应用程序。本发明提高了动态选择存储路径的效率和用户友好性。
Description
技术领域
本发明涉及Android***技术领域,具体涉及一种动态改变应用程序存储路径的方法。
背景技术
Android***内部存储是用户不***外部存储卡都可以使用的存储介质。这部分存储空间是从Android Flash存储器(相当于电脑的硬盘)划分出来的一块存储区,用户可以用来保存照片,音乐等文件。Android开机通过调用标准Linux***函数mount,把内存存储区域挂载到目录/mnt/sdcard,用户可以通过/mnt/sdcard目录读取内部存储区域内容。Android***外部存储卡就是用户为扩充存储空间加***的一种存储介质,就是常见的TF卡,俗称内存卡。Android开机通过调用标准Linux***函数mount,把外部存储卡挂载到目录/mnt/extsd,用户可以通过/mnt/extsd目录读取外部存储卡的内容。Android***应用程序从存储角度包含三个部分:应用程序安装文件:就是程序的可执行文件,这部分数据可以保存到外部存储卡。应用程序内部数据:程序运行数据,包括数据库,缓存等文件。保存到目录/data/data/包名。这部分数据只能保存到/data/data目录下面,无法保存到外部存储卡。应用程序外部数据:包括游戏数据,图片等等,主要保存到挂载点的Android目录。这部分数据可以保存到外部存储卡。Android***开机时在内部存储挂载点/mnt/sdcard创建.android_secure隐藏目录,用于保存内部存储卡的应用程序安装文件。但是Android***不是直接操作.android_secure目录,而是把.android_secure目录挂载到/mnt/secure/asec,这样Android***就通过操作/mnt/secure/asec挂载点保存内部存储卡的应用程序安装文件,以上是Android原生态的处理流程。
现有技术中手机或者平板选择应用程序数据默认存储路径的方法是交换挂载点,即选择应用程序数据保存到外部存储器时,交换外部存储器和内部内存器的挂载点,不过这个过程中需要对手机或者平板重启,而且不支持外部存储卡的热插拔。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种动态改变应用程序存储路径的方法,克服现有技术选择应用程序存储路径的方法需要重启设备才能予以确认的缺陷以及不支持外部存储卡热插拔的缺陷。
本发明为解决上述技术问题所采用的技术方案为:
一种动态改变应用程序存储路径的方法,包括步骤:
A1、设置存储路径***属性,如果需要选取外部存储路径则所述存储路径***属性的属性值设为第一属性值,如果需要选取内部存储路径则所述存储路径***属性的属性值设为第二属性值;
A2、如果所述属性值为第二属性值,则获取内部存储路径并传递给应用程序;
A3、如果所述属性值为第一属性值,判断外部存储卡是否***设备,如果所述外部存储卡没有***设备,则将所述存储路径***属性的属性值修改为第二属性值,获取内部存储路径并传递给所述应用程序;
A4、如果所述外部存储卡已***设备,则判断所述应用程序是否属于可以使用外部存储卡存取数据的特定应用程序或者第三方可卸载程序,如果是则获取外部存储路径并传递给所述应用程序,否则将所述存储路径***属性的属性值修改为第二属性值,获取内部存储路径并传递给所述应用程序。
根据本发明的实施例,所述步骤A2包括步骤:读取***文件init.rc中***属性EXTERNAL_STORAGE的属性值,该属性值为内部存储路径。
根据本发明的实施例,所述步骤A3包括步骤:调用***服务MountService的接口函数getVolumeState,如果获取的状态值为MEDIA_MOUNTED,则判定外部存储卡已***设备,否则判定所述外部存储卡没有***设备。
根据本发明的实施例,所述步骤A3包括步骤:如果所述属性值为第二属性值,读取***文件init.rc中***属性EXTERNAL_STORAGE的属性值,该属性值为内部存储路径。
根据本发明的实施例,所述步骤A4包括步骤:读取配置文件install_location_pkg.conf,如果所述应用程序的进程名位于其中则判定所述应用程序为特定应用程序。
根据本发明的实施例,所述步骤A4包括步骤:读取RunningAppProcessInfo类对象的实例,如果其成员变量flags的值不是ApplicationInfo.FLAG_SYSTEM,则判定所述应用程序为第三方可卸载程序。
根据本发明的实施例,所述步骤A4包括步骤:读取***文件init.rc中***属性SECNDARY_STORAGE的属性值,该属性值为外部存储路径。
根据本发明的实施例,所述存储路径***属性设为persist.sys.default.storage。
实施本发明的技术方案,具有以下有益效果:本发明在Android***中增加***属性persist.sys.default.storage,以该***属性的属性值作为内部存储路径和外部存储路径的标识符,使得不同的应用程序可以依据该标识符快速确定当前的存储路径,本发明在支持动态选择存储路径的同时支持外部存储卡的热插拔,并根据应用程序的类型确定是否可以使用外部存储卡,本发明因此提高了动态选择存储路径的效率和用户友好性。
附图说明
下面通过参考附图并结合实例具体地描述本发明,本发明的优点和实现方式将会更加明显,其中附图所示内容仅用于对本发明的解释说明,而不构成对本发明的任何意义上的限制,在附图中:
图1为本发明流程图。
具体实施方式
如图1所示,本发明动态改变应用程序存储路径的方法,包括步骤:
S101、设置存储路径***属性,如果需要选取外部存储路径则存储路径***属性的属性值设为第一属性值,如果需要选取内部存储路径则存储路径***属性的属性值设为第二属性值;
S102、如果属性值为第二属性值,则获取内部存储路径并传递给应用程序;
S103、如果属性值为第一属性值,判断外部存储卡是否***设备,如果外部存储卡没有***设备,则将存储路径***属性的属性值修改为第二属性值,获取内部存储路径并传递给应用程序;
S104、如果外部存储卡已***设备,则判断应用程序是否属于可以使用外部存储卡存取数据的特定应用程序或者第三方可卸载程序,如果是则获取外部存储路径并传递给应用程序,否则将存储路径***属性的属性值修改为第二属性值,获取内部存储路径并传递给应用程序。
本发明在Android***中增加***属性persist.sys.default.storage,并根据该***属性的属性值来确定选择内部存储路径或者外部存储路径。具体来说,当***属性persist.sys.default.storage的属性值为“external”(第一属性值)时,本发明通过函数getExternalStorageDirectory()获取外部存储路径并返回给上层应用程序,当***属性persist.sys.default.storage的属性值为“internal”(第二属性值)时,本发明通过函数getExternalStorageDirectory()获取内部存储路径并返回给上层应用程序。Android***文件init.rc中的***属性EXTERNAL_STORAGE的属性值是存储内部存储路径,本发明将其设置为“/mnt/sdcard”,根据本发明的实施例,步骤S102包括步骤:通过函数getExternalStorageDirectory()读取***文件init.rc中***属性EXTERNAL_STORAGE的属性值,并将获取的内部存储路径返回上层应用程序。根据本发明的实施例,步骤S103包括步骤:调用Android***服务MountService的接口函数getVolumeState,如果获取的状态值为MEDIA_MOUNTED,则判定外部存储卡已***设备,否则判定外部存储卡没有***设备。本发明增加配置文件install_location_pkg.conf,并将其存放到具有system可读权限的***目录中,如system/etc,该配置文件install_location_pkg.conf用来记录特定应用程序的进程名,特定应用程序应当满足三个条件:1、内置到Andriod***中;2、用户不可以卸载;3、能产生数据保存到外部存储卡,录音,照相就属于这类应用程序。根据本发明的实施例,步骤S104包括步骤:读取配置文件install_location_pkg.conf,如果应用程序的进程名位于其中则判定应用程序为特定应用程序。根据本发明的实施例,步骤S104包括步骤:读取Android***RunningAppProcessInfo类对象的实例,如果其成员变量flags的值不是ApplicationInfo.FLAG_SYSTEM,则判定应用程序为第三方可卸载程序。本发明在Android***文件init.rc中添加***属性SECNDARY_STORAGE,其属性值设为外部存储路径(“/mnt/extsd”),根据本发明的实施例,步骤S104包括步骤:通过函数getExternalStorageDirectory()读取***文件init.rc中***属性SECNDARY_STORAGE的属性值,并将获取的外部存储路径返回上层应用程序。
本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。
Claims (8)
1.一种动态改变应用程序存储路径的方法,其特征在于,包括步骤:
A1、设置存储路径***属性,如果需要选取外部存储路径则所述存储路径***属性的属性值设为第一属性值,如果需要选取内部存储路径则所述存储路径***属性的属性值设为第二属性值;
A2、如果所述属性值为第二属性值,则获取内部存储路径并传递给应用程序;
A3、如果所述属性值为第一属性值,判断外部存储卡是否***设备,如果所述外部存储卡没有***设备,则将所述存储路径***属性的属性值修改为第二属性值,获取内部存储路径并传递给所述应用程序;
A4、如果所述外部存储卡已***设备,则判断所述应用程序是否属于可以使用外部存储卡存取数据的特定应用程序或者第三方可卸载程序,如果是则获取外部存储路径并传递给所述应用程序,否则将所述存储路径***属性的属性值修改为第二属性值,获取内部存储路径并传递给所述应用程序。
2.根据权利要求1所述的动态改变应用程序存储路径的方法,其特征在于,所述步骤A2包括步骤:读取***文件init.rc中***属性EXTERNAL_STORAGE的属性值,该属性值为内部存储路径。
3.根据权利要求1所述的动态改变应用程序存储路径的方法,其特征在于,所述步骤A3包括步骤:调用***服务MountService的接口函数getVolumeState,如果获取的状态值为MEDIA_MOUNTED,则判定外部存储卡已***设备,否则判定所述外部存储卡没有***设备。
4.根据权利要求3所述的动态改变应用程序存储路径的方法,其特征在于,所述步骤A2包括步骤:如果所述属性值为第二属性值,读取***文件init.rc中***属性EXTERNAL_STORAGE的属性值,该属性值为内部存储路径。
5.根据权利要求1所述的动态改变应用程序存储路径的方法,其特征在于,所述步骤A4包括步骤:读取配置文件install_location_pkg.conf,如果所述应用程序的进程名位于其中则判定所述应用程序为特定应用程序。
6.根据权利要求1所述的动态改变应用程序存储路径的方法,其特征在于,所述步骤A4包括步骤:读取RunningAppProcessInfo类对象的实例,如果其成员变量flags的值不是ApplicationInfo.FLAG_SYSTEM,则判定所述应用程序为第三方可卸载程序。
7.根据权利要求5或6所述的动态改变应用程序存储路径的方法,其特征在于,所述步骤A4包括步骤:读取***文件init.rc中***属性SECNDARY_STORAGE的属性值,该属性值为外部存储路径。
8.根据权利要求1所述的动态改变应用程序存储路径的方法,其特征在于:所述存储路径***属性设为persist.sys.default.storage。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510928910.0A CN105550311B (zh) | 2015-12-14 | 2015-12-14 | 一种动态改变应用程序存储路径的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510928910.0A CN105550311B (zh) | 2015-12-14 | 2015-12-14 | 一种动态改变应用程序存储路径的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550311A CN105550311A (zh) | 2016-05-04 |
CN105550311B true CN105550311B (zh) | 2019-03-12 |
Family
ID=55829500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510928910.0A Active CN105550311B (zh) | 2015-12-14 | 2015-12-14 | 一种动态改变应用程序存储路径的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550311B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107589904B (zh) * | 2016-07-08 | 2021-09-03 | 中兴通讯股份有限公司 | Sd卡的读写方法和装置 |
CN106250065A (zh) * | 2016-08-22 | 2016-12-21 | 贵州万臻时代通讯技术有限公司 | 一种存储路径管理方法及装置 |
CN107122211A (zh) * | 2017-04-25 | 2017-09-01 | 努比亚技术有限公司 | 应用软件安装方法、终端和计算机可读存储介质 |
CN107247560A (zh) * | 2017-05-23 | 2017-10-13 | 努比亚技术有限公司 | 数据存储方法及移动终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831173A (zh) * | 2012-07-27 | 2012-12-19 | Tcl集团股份有限公司 | 基于Android***的内存扩展方法、装置及终端设备 |
CN102902488A (zh) * | 2012-08-06 | 2013-01-30 | 广东欧珀移动通信有限公司 | 一种手持设备的存储卡及其动态挂载方法 |
CN103793256A (zh) * | 2014-03-03 | 2014-05-14 | 联想(北京)有限公司 | 管理存储卡的方法以及电子设备 |
US8843921B1 (en) * | 2005-11-02 | 2014-09-23 | Parallels IP Holdings GmbH | System and method for controlling installed third party software components |
CN104408053A (zh) * | 2014-10-29 | 2015-03-11 | 上海斐讯数据通信技术有限公司 | 一种移动终端存储卡扩展方法 |
-
2015
- 2015-12-14 CN CN201510928910.0A patent/CN105550311B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843921B1 (en) * | 2005-11-02 | 2014-09-23 | Parallels IP Holdings GmbH | System and method for controlling installed third party software components |
CN102831173A (zh) * | 2012-07-27 | 2012-12-19 | Tcl集团股份有限公司 | 基于Android***的内存扩展方法、装置及终端设备 |
CN102902488A (zh) * | 2012-08-06 | 2013-01-30 | 广东欧珀移动通信有限公司 | 一种手持设备的存储卡及其动态挂载方法 |
CN103793256A (zh) * | 2014-03-03 | 2014-05-14 | 联想(北京)有限公司 | 管理存储卡的方法以及电子设备 |
CN104408053A (zh) * | 2014-10-29 | 2015-03-11 | 上海斐讯数据通信技术有限公司 | 一种移动终端存储卡扩展方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105550311A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550311B (zh) | 一种动态改变应用程序存储路径的方法 | |
US10877640B2 (en) | Application interface management method and apparatus | |
US9152786B2 (en) | Method and device for controlling invocation of an application programming interface | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
WO2015043420A1 (zh) | 权限控制方法和装置 | |
US20120198133A1 (en) | Electronic device with expandable memory capacity and an expansion method thereof | |
CN103577567A (zh) | 一种Android***卸载应用删除垃圾文件的方法 | |
CN104391725A (zh) | 页面展示方法和页面展示装置 | |
WO2015139246A1 (zh) | 一种应用数据同步的方法及装置 | |
CN103412822B (zh) | 操作非易失性内存和数据操作的方法和相关装置 | |
US20130227085A1 (en) | Terminal and method for using cloud services | |
KR20140025523A (ko) | 애플리케이션 데이터를 저장하는 방법 및 단말 기기 | |
CN102760131B (zh) | 一种网络相册的展示方法及*** | |
JP2014518575A (ja) | ネットワークストレージシステムにリンクされるローカルストレージ | |
CN103544031B (zh) | 多分区外存储设备的Android***升级方法和*** | |
CN106933935B (zh) | 任务存储方法和装置 | |
CN106484719B (zh) | 一种扩展手机存储的方法及终端 | |
CN109213450B (zh) | 一种基于闪存阵列的关联元数据删除方法、装置及设备 | |
KR20160048173A (ko) | 기억 처리 방법, 장치 및 단말 | |
WO2014180427A1 (zh) | 应用程序管理方法及装置 | |
TW201308193A (zh) | 一種文件分配表的資料儲存方法 | |
WO2017096521A1 (zh) | 一种扩展用户分区的方法和装置 | |
US9201576B2 (en) | Display method and portable device | |
EP3073360B1 (en) | Multi-media data backup method, user terminal and synchronizer | |
CN106843921B (zh) | 资源加载方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |