本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種保證獲取各種安卓手機(jī)外部存儲(chǔ)卡路徑的方法。
背景技術(shù):
隨著智能手機(jī)的普及,市場(chǎng)上出現(xiàn)了各種品牌和類(lèi)型的手機(jī),而這些手機(jī)大部分都是安卓系統(tǒng)的智能手機(jī)。由于廠商不同,不同的品牌所用的操作系統(tǒng)也都各不相同,而且各自定義文件夾路徑都有很大的區(qū)別,這就導(dǎo)致了用谷歌提供的普通方法獲取不到有效的外部存儲(chǔ)卡路徑,本發(fā)明就是為了解決這個(gè)問(wèn)題,通過(guò)多種方法去獲取手機(jī)的外部存儲(chǔ)卡路徑,保證找到有效的外置存儲(chǔ)卡的路徑。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提出一種保證獲取各種安卓手機(jī)外部存儲(chǔ)卡路徑的方法。
為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
一種保證獲取各種安卓手機(jī)外部存儲(chǔ)卡路徑的方法,包括如下步驟:
步驟一:獲取sd卡路徑列表的步驟
a、高于4.3系統(tǒng)獲取路徑:
若安卓系統(tǒng)高于4.3時(shí),通過(guò)安卓系統(tǒng)自帶的sdk獲取外部存儲(chǔ)卡路徑;
b、默認(rèn)方法獲取路徑:
針對(duì)各種安卓手機(jī),通過(guò)手機(jī)api提供的默認(rèn)方法獲取通用的外部存儲(chǔ)卡路徑;
c、讀取系統(tǒng)配置文件獲取路徑:
獲取手機(jī)系統(tǒng)配置文件信息,得到外部存儲(chǔ)卡路徑;
d、獲取系統(tǒng)文件異常:
實(shí)施上述步驟a、b和c后,路徑獲取不成功則判斷為出現(xiàn)異常,出現(xiàn)異常則執(zhí)行e和f,否則執(zhí)行g(shù);
e、獲取系統(tǒng)的路徑map:
獲取手機(jī)系統(tǒng)配置文件,獲得鍵值對(duì),依照每個(gè)關(guān)鍵詞的值獲取系統(tǒng)的路徑;
f、根據(jù)文件夾獲取指定路徑:
根據(jù)常見(jiàn)的外部存儲(chǔ)卡路徑匹配當(dāng)前系統(tǒng)的sd卡路徑;
個(gè)別手機(jī)針對(duì)性設(shè)置特定路徑:
針對(duì)個(gè)別手機(jī)采取逐個(gè)指定的方式獲得sd卡路;
g、列表小于2:
生成可能sd卡路徑的列表,列表中只提供2個(gè)可用的sd卡路徑;
h、返回列表:
當(dāng)獲取到可用的sd卡列表時(shí),返回給用戶使用;
步驟二:驗(yàn)證sd卡路徑列表的步驟
a、得到sd卡路徑:
以步驟一中獲取的sd卡路徑列表為驗(yàn)證目標(biāo),向sd卡路徑寫(xiě)入用于區(qū)別的特定文件;步驟a—f每一步獲到路徑后就必需寫(xiě)入這個(gè)文件,這個(gè)文件作為一個(gè)唯一標(biāo)識(shí);
b、查看特定文件:
查看sd卡路徑是否含步驟a寫(xiě)入的特定文件,含該特定文件說(shuō)明該路徑已存在于列表中;
c、向得到的目錄寫(xiě)入特定文件:
沒(méi)有含有特定文件,則向該目錄寫(xiě)入特定文件;
d、有效路徑,加入列表:
寫(xiě)入成功,則路徑是可讀寫(xiě)路徑,即為有效路徑,加入列表。
e、無(wú)效目錄:
寫(xiě)入失敗,則該路徑不可讀寫(xiě),視為無(wú)效任務(wù),丟棄路徑。
步驟f中所述關(guān)鍵字包括storage、secure、asec、firmware、shell或obb。
本發(fā)明通多種方式獲取外部存儲(chǔ)卡路徑,確保了不同的品牌手機(jī)都能獲得可用的外部存儲(chǔ)卡路徑,供開(kāi)發(fā)人員使用,便于對(duì)應(yīng)用程序的優(yōu)化,以及手機(jī)系統(tǒng)內(nèi)存的保護(hù)。
附圖說(shuō)明
圖1是本發(fā)明的步驟一的流程圖;
圖2是本發(fā)明的步驟二的流程圖。
具體實(shí)施方式
下面結(jié)合附圖并通過(guò)具體實(shí)施方式來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。
一種保證獲取各種安卓手機(jī)外部存儲(chǔ)卡路徑的方法,包括如下步驟:
步驟一:獲取sd卡路徑列表的步驟
a、高于4.3系統(tǒng)獲取路徑:
若安卓系統(tǒng)高于4.3時(shí),通過(guò)安卓系統(tǒng)自帶的sdk(softwaredevelopmentkit軟件開(kāi)發(fā)工具包)獲取外部存儲(chǔ)卡路徑;高于4.3系統(tǒng)的sdk版本具有獲取外部存儲(chǔ)卡路徑的工具。
b、默認(rèn)方法獲取路徑:
針對(duì)各種安卓手機(jī),通過(guò)手機(jī)api(applicationprogramminginterface應(yīng)用程序編程接口)提供的默認(rèn)方法獲取通用的外部存儲(chǔ)卡路徑;任何版本安卓手機(jī)的api里面都有一個(gè)獲取外部存儲(chǔ)卡路的工具,但不一定能獲取成功
c、讀取系統(tǒng)配置文件獲取路徑:
獲取手機(jī)系統(tǒng)配置文件信息,得到外部存儲(chǔ)卡路徑;
d、獲取系統(tǒng)文件異常:獲取異常只是針對(duì)步驟c方法,因?yàn)樽x取系統(tǒng)文件個(gè)別手機(jī)沒(méi)有開(kāi)放權(quán)限,或者沒(méi)有這個(gè)文件,又或者打開(kāi)出錯(cuò),這時(shí)系統(tǒng)就會(huì)報(bào)錯(cuò),為了讓我們的方法能夠正確的執(zhí)行下去,我們會(huì)捕獲這些異常,d步驟就是在捕獲后執(zhí)行的操作。
實(shí)施上述步驟a、b和c后,路徑獲取不成功則判斷為出現(xiàn)異常,出現(xiàn)異常則執(zhí)行e和f,否則執(zhí)行g(shù);
e、獲取系統(tǒng)的路徑map:
獲取手機(jī)系統(tǒng)配置文件,獲得鍵值對(duì),依照每個(gè)關(guān)鍵詞的值獲取系統(tǒng)的路徑;
f、根據(jù)文件夾獲取指定路徑:這里的匹配是用cmd命令獲取一個(gè)關(guān)于系統(tǒng)目錄的所有文件流,再?gòu)倪@些文件流中匹配(storage、secure、asec、firmware、shell或obb)含有這些字段的相關(guān)路徑作為外部存儲(chǔ)卡路徑。
根據(jù)常見(jiàn)的外部存儲(chǔ)卡路徑匹配當(dāng)前系統(tǒng)的sd卡路徑;
個(gè)別手機(jī)針對(duì)性設(shè)置特定路徑:
針對(duì)個(gè)別手機(jī)采取逐個(gè)指定的方式獲得sd卡路;
某些手機(jī)例如華為、小米改寫(xiě)了谷歌原生安卓系統(tǒng),并定義了自己的文件目錄體系,因此獲得手機(jī)產(chǎn)商型號(hào)后可給于指定特定外部存儲(chǔ)卡路徑。
g、列表小于2:
生成可能sd卡路徑的列表,列表中只提供2個(gè)可用的sd卡路徑;
h、返回列表:
當(dāng)獲取到可用的sd卡列表時(shí),返回給用戶使用;
步驟二:驗(yàn)證sd卡路徑列表的步驟
a、得到sd卡路徑:
以步驟一獲取的sd卡路徑列表為驗(yàn)證目標(biāo),向sd卡路徑寫(xiě)入用于區(qū)別的特定文件;
步驟a—f中,每一步獲到路徑后就必需寫(xiě)入這個(gè)文件,這個(gè)文件作為一個(gè)唯一標(biāo)識(shí),作用有兩個(gè),第一確認(rèn)這個(gè)路徑是可以讀寫(xiě)的,即是可用的。第二,保證獲取到的路徑不會(huì)重復(fù),得到一個(gè)無(wú)重的外部存儲(chǔ)卡路徑的列表;
b、查看特定文件:
查看sd卡路徑是否含步驟a寫(xiě)入的特定文件,含該特定文件說(shuō)明該路徑已存在于列表中;
c、向得到的目錄寫(xiě)入特定文件:
沒(méi)有含有特定文件,則向該目錄寫(xiě)入特定文件;
d、有效路徑,加入列表:
寫(xiě)入成功,則路徑是可讀寫(xiě)路徑,即為有效路徑,加入列表。
e、無(wú)效目錄:
寫(xiě)入失敗,則該路徑不可讀寫(xiě),視為無(wú)效任務(wù),丟棄路徑。
步驟f中所述關(guān)鍵字包括storage、secure、asec、firmware、shell或obb。
對(duì)于市場(chǎng)眾多不同廠商,不同品牌的手機(jī),修改過(guò)后的安卓系統(tǒng)并不能成功地獲取有效的外部存儲(chǔ)卡路徑,本發(fā)明針對(duì)市場(chǎng)上各類(lèi)型的手機(jī)系統(tǒng)作出對(duì)應(yīng)的方法去獲取有效的手機(jī)外部存儲(chǔ)卡路徑,為的就是保存任何一臺(tái)安卓手機(jī),都可以拿到可讀或可讀寫(xiě)的外部存儲(chǔ)卡路徑。
獲取手機(jī)外部存儲(chǔ)卡路徑的優(yōu)點(diǎn)有以下幾點(diǎn):
(1)手機(jī)存儲(chǔ)如果沒(méi)有獲取管理員的權(quán)限不能對(duì)其進(jìn)行讀寫(xiě)。
(2)應(yīng)用數(shù)據(jù)儲(chǔ)存在內(nèi)置儲(chǔ)存有可能被內(nèi)存清理工具清理掉導(dǎo)致數(shù)據(jù)丟失。
(3)應(yīng)用數(shù)據(jù)存在手機(jī)儲(chǔ)存時(shí),當(dāng)應(yīng)用卸載時(shí),應(yīng)用的數(shù)據(jù)將全部門(mén)清除,只有。
(4)將數(shù)存在外部存儲(chǔ)卡,才能再次安裝應(yīng)用時(shí),重用應(yīng)用的舊數(shù)據(jù)。
以上結(jié)合具體實(shí)施例描述了本發(fā)明的技術(shù)原理。這些描述只是為了解釋本發(fā)明的原理,而不能以任何方式解釋為對(duì)本發(fā)明保護(hù)范圍的限制。基于此處的解釋?zhuān)绢I(lǐng)域的技術(shù)人員不需要付出創(chuàng)造性的勞動(dòng)即可聯(lián)想到本發(fā)明的其它具體實(shí)施方式,這些方式都將落入本發(fā)明的保護(hù)范圍之內(nèi)。