一种检索外部sd卡的方法及装置制造方法

文档序号:6526368阅读:161来源:国知局
一种检索外部sd卡的方法及装置制造方法
【专利摘要】本发明公开一种检索外部SD卡的方法及装置,涉及计算机领域,该方法包括:获取加载路径列表;判断加载路径列表中的每一条加载路径是否满足过滤条件,如满足条件则以空格拆分当前加载路径为多个路径,判断每一个路径中是否包含预设字符串,是则记录当前路径并作为疑似外部SD卡路径;判断记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。本发明通过对文件系统表和mount命令进行分析,实现在不同版本不同定制的Android平台上来获取外部SD卡的挂载路径,使得在Android操作系统下实现对外部SD卡的检索可不再依懒于API函数来实现,兼容性较好。
【专利说明】一种检索外部SD卡的方法及装置
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种检索外部SD卡的方法及装置。
【背景技术】
[0002]Android平台支持Java和C/C++语言,是由Google公司开发维护、基于移动设备之上的操作系统,由于移动设备自身的存储空间有限,且移动设备的存储空间越大需要的硬件组件成本越高,大量应用数据的输入输出就只能依赖SD卡来实现,目前很多手机厂商把SD卡集成到手机中,当然有的手机同时支持可插拔的SD卡,对于该手机而言就出现了内置SD卡和外置SD卡。当手机同时支持内置和外置SD卡时,调用Android系统API得到的是SD卡路径为内置的SD卡路径。由于Android系统的“碎片化”,很多手机厂商处理SD卡的路径都不相同,从而增加了获取自己所需SD的难度,如何在Android平台下找到自己所要操作的外部SD卡是现有技术亟待解决的问题。

【发明内容】

[0003]本发明的目的是为了克服现有技术的不足,提供一种检索外部SD卡的方法及装置。
[0004]本发明提供了一种检索外部SD卡的方法,包括:
[0005]步骤S1:获取加载路径列表;
[0006]步骤S2:将所述加载路径列表中的第一条加载路径作为当前信息记录;
[0007]步骤S3:判断当前信息记录是否满足过滤条件,是则执行步骤S4,否则执行步骤S9 ;
[0008]步骤S4:以空格将当前信息记录拆分为多个路径,将第一个路径作为当前信息记录的当前路径;
[0009]步骤S5:判断当前路径中是否包含预设字符串,是则执行步骤S6,否则执行步骤S7 ;
[0010]步骤S6:记录当前路径并作为疑似外部SD卡路径,执行步骤S7 ;
[0011]步骤S7:判断当前信息记录中是否还有未处理的路径,是则执行步骤S8,否则执行步骤S9 ;
[0012]步骤S8:将下一个路径作为当前信息记录的当前路径,返回步骤S5 ;
[0013]步骤S9:判断所述加载路径列表中是否还有未处理的加载路径,是则执行步骤S10,否则执行步骤Sll ;
[0014]步骤是SlO:将所述加载路径列表中的下一条加载路径作为当前信息记录,返回步骤S3 ;
[0015]步骤Sll:判断是否记录有疑似外部SD卡路径,是则执行步骤S12,否则未找到最终的外部SD卡;
[0016]步骤S12:判断所述记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。
[0017]进一步地,所述步骤SI具体为:通过mount命令从文件系统表中获取所有加载路径,获取Linux文件系统表中的所有加载路径,根据所述获取到的所有加载路径得到加载路径列表。
[0018]进一步地,所述步骤S3具体为:判断当前信息记录中是否包含第一预设字符串和第二字符串,是则满足过滤条件,否则不满足过滤条件;
[0019]所述步骤S5具体为:判断当前路径中是否包含所述第一预设字符串,是则执行步骤S6,否则执行步骤S7。
[0020]进一步地,所述步骤S12具体为:
[0021]步骤S12-1:将所述记录的第一条疑似外部SD卡路径作为当前疑似外部SD卡路径;
[0022]步骤S12-2:判断当前疑似外部SD卡路径是否为最终的外部SD卡路径,是则找到最终的外部SD卡,否则执行步骤S12-3 ;
[0023]步骤S12-3:判断是否处理完所有的疑似外部SD卡路径,是则未找到最终的外部SD卡,否则将所述记录的下一条疑似外部SD卡路径作为当前疑似外部SD卡路径,返回步骤S12-2。
[0024]进一步地,所述步骤SI具体为:通过mount命令从文件系统表中获取所有加载路径得到加载路径列表;
[0025]所述步骤S12判断为否时还包括:
[0026]步骤S13:获取Linux文件系统表中的所有加载路径;
[0027]步骤S14:将获取的第一条加载路径作为当前信息记录;
[0028]步骤S15:判断当前信息记录是否满足所述过滤条件,是则执行步骤S16,否则执行步骤S21 ;
[0029]步骤S16:以空格拆分当前信息记录为多个路径,将第一个路径作为当前信息记录的当前路径;
[0030]步骤S17:判断当前路径中是否包含所述预设字符串,是则执行步骤S18,否则执行步骤S19 ;
[0031]步骤S18:记录当前路径并作为疑似外部SD卡路径,执行步骤S19 ;步骤S19:判断当前信息记录中是否还有未处理的路径,是则执行步骤S20,否则执行步骤S21 ;
[0032]步骤S20:将下一个路径作为当前信息记录的当前路径,返回步骤S17 ;
[0033]步骤S21:判断是否还有未处理的获取到的加载路径,是则执行步骤S22,否则执行步骤S21 ;
[0034]步骤S22:将获取到的下一条加载路径作为当前信息记录,返回步骤S15 ;
[0035]步骤S23:判断是否记录有疑似外部SD卡路径,是则执行步骤S24,否则未找到最终的外部SD卡;
[0036]步骤S24:判断所述记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。本发明又提供了一种检索外部SD卡的装置,包括:
[0037]获取模块,用于获取加载路径列表;[0038]第一指向模块,用于将所述加载路径列表中的第一条加载路径作为当前信息记录,还用于将所述加载路径列表中的下一条加载路径作为当前信息记录;
[0039]第一判断模块,用于判断当前信息记录是否满足过滤条件,是则拆分模块工作,否则第四判断模块工作;
[0040]所述拆分模块,用于以空格将当前信息记录拆分为多个路径;
[0041]第二指向模块,用于将第一个路径作为当前信息记录的当前路径,还用于将下一个路径作为当前信息记录的当前路径;
[0042]第二判断模块,用于判断当前路径中是否包含预设字符串,是则记录模块工作,否则第三判断模块工作;
[0043]所述记录模块,用于记录当前路径并作为疑似外部SD卡路径;
[0044]所述第三判断模块:用于判断当前信息记录中是否还有未处理的路径,是则所述第二指向模块工作,否则第四判断模块工作;
[0045]所述第四判断模块,用于判断所述加载路径列表中是否还有未处理的加载路径,是则所述第一指向模块工作,否则第五判断模块工作;
[0046]所述第五判断模块,用于判断是否记录有疑似外部SD卡路径,是则第六判断模块工作,否则未找到最终的外部SD卡;
[0047]所述第六判断模块,用于判断所述记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。
[0048]进一步地,所述获取模块包括:
[0049]第一获取单元,用于通过mount命令从系统文件中获取所有加载路径;
[0050]第二获取单元,用于获取Linux文件系统表中的所有加载路径;
[0051]生成单元,用于根据所述第一获取单元获取到的所有加载路径和所述第二获取单元获取到的所有加载路径得到加载路径列表。
[0052]进一步地,所述第一判断模块具体用于判断当前信息记录中是否包含第一预设字符串和第二字符串,是则所述拆分模块工作,否则所述第四判断模块工作;
[0053]所述第二判断模块具体用于判断当前路径中是否包含所述第一预设字符串,是则所述记录模块工作,否则所述第三判断模块工作。
[0054]进一步地,所述第六判断模块包括:
[0055]第一指向单元,用于将所述记录的第一条疑似外部SD卡路径作为当前疑似外部SD卡路径,还用于将所述记录的下一条疑似外部SD卡路径作为当前疑似外部SD卡路径;
[0056]第一判断单元,用于判断当前疑似外部SD卡路径是否为最终的外部SD卡路径,是则找到最终的外部SD卡,否则第二判断单元工作;
[0057]所述第二判断单元,用于判断是否处理完所有的疑似外部SD卡路径,是则未找到最终的外部SD卡,否则所述第一指向单元工作。
[0058]本发明与现有技术相比,具有以下优点:
[0059]本发明的技术方案是通过Linux的mount命令从文件系统表(void, fstab)中获取所有加载路径,再判断这些加载路径中是否有外部SD卡的加载路径,或直接分析Linux文件系统表来获得外部SD卡的加载路径。通过对文件系统表和mount命令进行分析,使用Linux的传统管道技术,在不同版本不同定制的Android平台上来获取外部SD卡的挂载路径,使得在Android操作系统下实现对外部SD卡的检索可不再依懒于API函数来实现,兼容性较好。
【专利附图】

【附图说明】
[0060]图1为本发明实施例一提供的一种检索外部SD卡的方法流程图;
[0061]图2和图3为本发明实施例二提供的一种检索外部SD卡的方法流程图;
[0062]图4和图5为本发明实施例二提供的一种检索外部SD卡的方法的另一种实现方式流程图;
[0063]图6为本发明实施例三提供的一种检索外部SD卡的装置方框图;
[0064]图7为本发明实施例三中的第六判断模块的具体实现方框图。
【具体实施方式】
[0065]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0066]Android操作系统包括两大块,底层与硬件之间的通讯是通过Linux基金会发布的标准Linux内核的Android剪裁版来实现的,Android剪裁版不仅能运行dalvik程序,以便dalvik程序能够更好的通过Linux内核来管理硬件,而且还能将一些不开放的源代码所涉及商业版权的第三方厂商的硬件驱动映射给Linux内核来管理。Android操作系统与用户实际操作的交互功能都是基于dalvik虚拟机之上的Java语言实现和/或通过C/C++共享库来辅助实现。
[0067]实施例一
[0068]本发明实施例一提供一种检索外部SD卡的方法,如图1所示,包括:
[0069]步骤S1:获取加载路径列表;
[0070]在本实施例中,通过mount命令从文件系统表中获取所有加载路径,获取Linux文件系统表中的所有加载路径,根据上述获取到的所有加载路径得到加载路径列表;
[0071]步骤S2:将加载路径列表中的第一条加载路径作为当前信息记录;
[0072]步骤S3:判断当前信息记录是否满足过滤条件,是则执行步骤S4,否则执行步骤S9 ;
[0073]具体的,本实施例中的过滤条件为:信息记录中包含第一预设字符串和第二预设字符串,优选的,第一预设字符串为mnt或storage,第二预设字符串为vfat ;
[0074]步骤S4:以空格将当前信息记录拆分为多个路径,将第一个路径作为当前信息记录的当前路径;
[0075]步骤S5:判断当前路径中是否包含预设字符串,是则执行步骤S6,否则执行步骤S7 ;
[0076]具体的,本实施例中的预设字符串为第一预设字符串,优选的为mnt或storage ;
[0077]步骤S6:记录当前路径并作为疑似外部SD卡路径,执行步骤S7 ;
[0078]步骤S7:判断当前信息记录中是否还有未处理的路径,是则执行步骤S8,否则执行步骤S9 ;
[0079]步骤S8:将下一个路径作为当前信息记录的当前路径,返回步骤S5 ;
[0080]步骤S9:判断加载路径列表中是否还有未处理的加载路径,是则执行步骤S10,否则执行步骤Sii ;
[0081]步骤SlO:将加载路径列表中的下一条加载路径作为当前信息记录,返回步骤S3 ;
[0082]步骤Sll:判断是否记录有疑似外部SD卡路径,是则执行步骤S12,否则未找到最终的外部SD卡;
[0083]步骤S12:判断所述记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。
[0084]具体的,本实施例中,步骤S12包括:将记录的疑似外部SD卡路径作为参数,调用接口函数,判断接口函数返回的结果,如为第一预设值则找到最终的外部SD卡,将当前疑似外部SD卡路径确定为最终的外部SD卡路径,如为第二预设值则未找到最终的外部SD卡;
[0085]具体的,在本实施例中,如疑似外部SD卡路径有多条,则依次调用接口函数,以上述疑似外部SD卡路径中一条路径为参数,尝试与疑似外部SD卡路径所对应的SD卡进行通信并返回相应的结果,如返回的结果为第一预设值则通信成功,如返回的结果为第二预设值则通讯不成功;优选的,第一预设值为True,第二预设值为False ;尝试与疑似外部SD卡路径所对应的SD卡进行通信具体为:向疑似外部SD卡路径所对应的设备发送初始化指令,并判断是否接收到设备返回的响应,如接收到则通讯成功,否则通讯不成功;
[0086]本实施例中也可以在获取到一条疑似外部SD卡路径后就将其作为参数调用接口函数尝试与对应的设备进行通讯,即去掉步骤S11,步骤S6执行完后执行步骤S12,步骤S12判断为否时执行步骤S7,步骤S9判断为否时未找到最终的外部SD卡路径。
[0087]在本实施例中,找到最终的外部SD卡后还可设置该SD卡所对应的标识或者保存对应的句柄。
[0088]实施例二
[0089]本发明实施例二提供一种检索外部SD卡的方法,首先通过popen函数打开mount命令,popen()函数通过创建一个管道,调用fork产生一个子进程,执行一个shell以运行命令来开启应用程序;如图2和图3所示,本实施例方法包括:
[0090]步骤101:应用程序启动,通过调用mount命令获取文件系统表中的加载路径;
[0091]例如,本实施例中获取的加载路径如下:
[0092]
【权利要求】
1.一种检索外部SD卡的方法,其特征在于,包括: 步骤S1:获取加载路径列表; 步骤S2:将所述加载路径列表中的第一条加载路径作为当前信息记录; 步骤S3:判断当前信息记录是否满足过滤条件,是则执行步骤S4,否则执行步骤S9 ;步骤S4:以空格将当前信息记录拆分为多个路径,将第一个路径作为当前信息记录的当iu路径; 步骤S5:判断当前路径中是否包含预设字符串,是则执行步骤S6,否则执行步骤S7 ; 步骤S6:记录当前路径并作为疑似外部SD卡路径,执行步骤S7 ; 步骤S7:判断当前信息记录中是否还有未处理的路径,是则执行步骤S8,否则执行步骤S9 ; 步骤S8:将下一个路径作为当前信息记录的当前路径,返回步骤S5 ; 步骤S9:判断所述加载路径列表中是否还有未处理的加载路径,是则执行步骤S10,否则执行步骤Sll ; 步骤是SlO:将所述加载路径列表中的下一条加载路径作为当前信息记录,返回步骤S3 ; 步骤Sll:判断是否记录有疑似外部SD 卡路径,是则执行步骤S12,否则未找到最终的外部SD卡; 步骤S12:判断所述记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。
2.如权利要求1所述的方法,其特征在于,所述步骤SI具体为:通过mount命令从文件系统表中获取所有加载路径,获取Linux文件系统表中的所有加载路径,根据所述获取到的所有加载路径得到加载路径列表。
3.如权利要求1所述的方法,其特征在于, 所述步骤S3具体为:判断当前信息记录中是否包含第一预设字符串和第二字符串,是则满足过滤条件,否则不满足过滤条件; 所述步骤S5具体为:判断当前路径中是否包含所述第一预设字符串,是则执行步骤S6,否则执行步骤S7。
4.如权利要求1所述的方法,其特征在于,所述步骤S12具体为: 步骤S12-1:将所述记录的第一条疑似外部SD卡路径作为当前疑似外部SD卡路径;步骤S12-2:判断当前疑似外部SD卡路径是否为最终的外部SD卡路径,是则找到最终的外部SD卡,否则执行步骤S12-3 ; 步骤S12-3:判断是否处理完所有的疑似外部SD卡路径,是则未找到最终的外部SD卡,否则将所述记录的下一条疑似外部SD卡路径作为当前疑似外部SD卡路径,返回步骤S12-2。
5.如权利要求1所述的方法,其特征在于,所述步骤SI具体为:通过mount命令从文件系统表中获取所有加载路径得到加载路径列表; 所述步骤S12判断为否时还包括: 步骤S13:获取Linux文件系统表中的所有加载路径; 步骤S14:将获取的第一条加载路径作为当前信息记录;步骤S15:判断当前信息记录是否满足所述过滤条件,是则执行步骤S16,否则执行步骤 S21 ; 步骤S16:以空格拆分当前信息记录为多个路径,将第一个路径作为当前信息记录的当iu路径; 步骤S17:判断当前路径中是否包含所述预设字符串,是则执行步骤S18,否则执行步骤 S19 ; 步骤S18:记录当前路径并作为疑似外部SD卡路径,执行步骤S19 ;步骤S19:判断当前信息记录中是否还有未处理的路径,是则执行步骤S20,否则执行步骤S21 ; 步骤S20:将下一个路径作为当前信息记录的当前路径,返回步骤S17 ; 步骤S21:判断是否还有未处理的获取到的加载路径,是则执行步骤S22,否则执行步骤 S21 ; 步骤S22:将获取到的下一条加载路径作为当前信息记录,返回步骤S15 ; 步骤S23:判断是否记录有疑似外部SD卡路径,是则执行步骤S24,否则未找到最终的外部SD卡; 步骤S24:判断所述记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。
6.一种检索外部SD卡的装置,其特征在于,包括: 获取模块,用于获取加载路径列表; 第一指向模块,用于将所述加载路径列表中的第一条加载路径作为当前信息记录,还用于将所述加载路径列表中的下一条加载路径作为当前信息记录; 第一判断模块,用于判断当前信息记录是否满足过滤条件,是则拆分模块工作,否则第四判断模块工作; 所述拆分模块,用于以空格将当前信息记录拆分为多个路径; 第二指向模块,用于将第一个路径作为当前信息记录的当前路径,还用于将下一个路径作为当前信息记录的当前路径; 第二判断模块,用于判断当前路径中是否包含预设字符串,是则记录模块工作,否则第三判断模块工作; 所述记录模块,用于记录当前路径并作为疑似外部SD卡路径; 所述第三判断模块:用于判断当前信息记录中是否还有未处理的路径,是则所述第二指向模块工作,否则第四判断模块工作; 所述第四判断模块,用于判断所述加载路径列表中是否还有未处理的加载路径,是则所述第一指向模块工作,否则第五判断模块工作; 所述第五判断模块,用于判断是否记录有疑似外部SD卡路径,是则第六判断模块工作,否则未找到最终的外部SD卡; 所述第六判断模块,用于判断所述记录的疑似外部SD卡路径中是否有最终的外部SD卡路径,是则找到最终的外部SD卡,否则未找到最终的外部SD卡。
7.如权利要求6所述的装置,其特征在于,所述获取模块包括: 第一获取单元,用于通过mount命令从系统文件中获取所有加载路径; 第二获取单元,用于获取Linux文件系统表中的所有加载路径;生成单元,用于根据所述第一获取单元获取到的所有加载路径和所述第二获取单元获取到的所有加载路径得到加载路径列表。
8.如权利要求6所述的装置,其特征在于, 所述第一判断模块具体用于判断当前信息记录中是否包含第一预设字符串和第二字符串,是则所述拆分模块工作,否则所述第四判断模块工作; 所述第二判断模块具体用于判断当前路径中是否包含所述第一预设字符串,是则所述记录模块工作,否则所述第三判断模块工作。
9.如权利要求6所述的装置,其特征在于,所述第六判断模块包括: 第一指向单元,用于将所述记录的第一条疑似外部SD卡路径作为当前疑似外部SD卡路径,还用于将所述记录的下一条疑似外部SD卡路径作为当前疑似外部SD卡路径; 第一判断单元,用于判断当前疑似外部SD卡路径是否为最终的外部SD卡路径,是则找到最终的外部SD卡,否则第二判断单元工作; 所述第二判断单元,用于判断是否处理完所有的疑似外部SD卡路径,是则未找到最终的外部SD卡,否则所述第一 指向单元工作。
【文档编号】G06F9/445GK103699418SQ201310741343
【公开日】2014年4月2日 申请日期:2013年12月27日 优先权日:2013年12月27日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1