CN105550311B - 一种动态改变应用程序存储路径的方法 - Google Patents

一种动态改变应用程序存储路径的方法 Download PDF

Info

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
Application number
CN201510928910.0A
Other languages
English (en)
Other versions
CN105550311A (zh
Inventor
潘健文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN201510928910.0A priority Critical patent/CN105550311B/zh
Publication of CN105550311A publication Critical patent/CN105550311A/zh
Application granted granted Critical
Publication of CN105550311B publication Critical patent/CN105550311B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details 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。
CN201510928910.0A 2015-12-14 2015-12-14 一种动态改变应用程序存储路径的方法 Active CN105550311B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 上海斐讯数据通信技术有限公司 一种移动终端存储卡扩展方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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
CN102541475B (zh) 数据存储方法和数据存储装置
US9152786B2 (en) Method and device for controlling invocation of an application programming interface
KR101994021B1 (ko) 파일 조작 방법 및 장치
CN104885055B (zh) 一种应用数据同步的方法及装置
JP5869661B2 (ja) ネットワークストレージシステムにリンクされるローカルストレージ
WO2015043420A1 (zh) 权限控制方法和装置
US20120198133A1 (en) Electronic device with expandable memory capacity and an expansion method thereof
CN102760131B (zh) 一种网络相册的展示方法及系统
WO2011140968A1 (zh) 一种在android的菜单中添加菜单项的方法及设备
CN103544031B (zh) 多分区外存储设备的Android系统升级方法和系统
US10768944B2 (en) Method and system for customizing desktop launcher of mobile terminal
WO2019080531A1 (zh) 一种信息采集及内存释放的方法及装置
CN102902566A (zh) 一种应用软件的安装及启动方法和装置
CN109213450B (zh) 一种基于闪存阵列的关联元数据删除方法、装置及设备
AU2014267783A1 (en) Storage processing method, device and terminal
CN103543914A (zh) 照片后期处理方法和装置
WO2014180427A1 (zh) 应用程序管理方法及装置
TW201308193A (zh) 一種文件分配表的資料儲存方法
CN107148612B (zh) 一种扩展用户分区的方法和装置
US9201576B2 (en) Display method and portable device
EP3073360B1 (en) Multi-media data backup method, user terminal and synchronizer
WO2018028321A1 (zh) 一种虚拟外置存储设备的管理方法、装置及终端
CN109358885A (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