android判斷文件類型是否為音頻文件
創(chuàng)新互聯(lián)公司主營(yíng)梨林網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開(kāi)發(fā),梨林h5小程序定制開(kāi)發(fā)搭建,梨林網(wǎng)站營(yíng)銷推廣歡迎梨林等地區(qū)企業(yè)咨詢
android中判斷音頻文件類型,通常有兩種做法。一種是根據(jù)音頻文件擴(kuò)展名,這是最常用、最簡(jiǎn)單的方法;另一種是判斷音頻文件頭信息,也是最準(zhǔn)確的辦法。 在Android系統(tǒng)內(nèi)部提供了根據(jù)文件名判斷的類,具體查看/frameworks/base/media/java/android/media/MediaFile.java。下面提供根據(jù)音頻文件路徑直接判斷的方法,默認(rèn)的沒(méi)有提供。代碼如下:
原文地址:android判斷文件類型是否為音頻文件 |
不是,本地文件的讀寫是指手機(jī)內(nèi)部文件(手機(jī)本身自帶的文件或內(nèi)存卡的文件)讀寫!你說(shuō)的配置文件的讀寫可以理解成其中的一部分。而且android對(duì)不同文件的讀取方式也有不同,如果是工程內(nèi)的配置文件讀寫的話會(huì)有專門的api去讀取,如果是工程外文件直接使用JAVA中FILE類加載手機(jī)路徑進(jìn)行讀寫!在讀寫時(shí)應(yīng)該給該工程加上讀寫文件的權(quán)限?。?!
目前Android有兩種主流的判斷方式,第一種是根據(jù)程序包的名稱(packageName)來(lái)判斷。另外一種就是根據(jù)intent來(lái)判斷,具體代碼如下:
根據(jù)包名判斷,以下為判斷代碼:
public boolean checkApkExist(Context context, String packageName) {
if (packageName == null || “”.equals(packageName))
return false;
try {
ApplicationInfo info = context.getPackageManager()
.getApplicationInfo(packageName,
PackageManager.GET_UNINSTALLED_PACKAGES);
return true;
} catch (NameNotFoundException e) {
return false;
}
}
2. 根據(jù)Intent判斷,以下為判斷代碼:
public boolean checkApkExist(Context context, Intent intent) {
ListResolveInfo list = context.getPackageManager().queryIntentActivities(intent, 0);
if(list.size() 0){
return true;
}
return false;
}
public boolean checkApkExist(Context context, String packageName) {
if (packageName == null || “”.equals(packageName)) return false;
try {
ApplicationInfo info = context.getPackageManager() .getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); return true;
} catch (NameNotFoundException e) { return false; }
}?
public boolean checkApkExist(Context context, Intent intent) {
ListResolveInfo list = context.getPackageManager()
.queryIntentActivities(intent, 0);
if (list.size() 0) {
return true;
}
return false;
}
以上代碼只是基于安卓系統(tǒng)來(lái)判斷,對(duì)于ios系統(tǒng)無(wú)效。
Android應(yīng)用的發(fā)布形式apk中包含的簽名加密方法除了RSA還有DSA,所以不能只從apk中提取常見(jiàn)的META-INF/CERT.RSA,應(yīng)該是檢查apk中具體的簽名文件。
FILE="yourapp.apk"
cert_XSA=`jar tf $FILE | grep SA`
此時(shí)得到的cert_XSA可能是META-INF/*.RSA或者M(jìn)ETA-INF/*.DSA。
2.apk中提取具體的簽名文件。
jar xf $FILE $cert_XSA
此時(shí)會(huì)在當(dāng)前目錄得到cert_XSA文件。
3.對(duì)于得到的簽名文件,提取其中簽名的MD5值
keytool -printcert -file $cert_XSA | grep MD5 "$FILE.certMD5"
這時(shí)候yourapp.certMD5這個(gè)文件中就保存了yourapp.apkk中的簽名MD5值。
4.最后比較兩個(gè)app的簽名可以用diff
FILE1="yourapp1.apk"
FILE2="yourapp2.apk"
//經(jīng)過(guò)上述步驟得到$FILE1.certMD5和$FILE2.certMD5
certMD5_diff=`diff $FILE1.certMD5 $FILE2.certMD5`
if [ "$certMD5_diff" = "" ]; then
echo "$FILE1.certMD5 == $FILE2.certMD5"
fi
若輸出yourapp1.apk.certMD5 == yourapp2.apk.certMD5那么這兩個(gè)應(yīng)用的簽名就一致。