編輯:關於Android編程
Android的智能手機各不相同,現在很多Android智能手機都是自帶存儲,有的還帶有擴展內存的Sdcard卡槽。
在Android開發中,很多時候根據Android提供的獲取SdCard存儲方法獲取不到不到存儲目錄的位置,由於Android的系統是linux系統,所以我想到使用linux命令mouunt來獲取linux的掛載目錄。
這樣呢,基本上在Android上都可以獲取到應用數據存放的目錄。
使用命令獲取到的目錄我並沒有遍歷,如果你還是獲取不到,可以把mount獲去到的所有目錄都遍歷一次。
File sdcard ;
@SuppressLint(SdCardPath)
public File getSdCardFile() {
if (sdcard != null) {
return sdcard;
}
List list = getExtSDCardPath();
boolean isRun = true;
if (list.size() > 0) {
sdcard = new File(list.get(list.size() - 1));
if (sdcard.isDirectory()) {
if (sdcard.getFreeSpace() == 0) {
isRun = true;
} else {
isRun = false;
}
}
}
if (isRun) {
sdcard = Environment.getExternalStorageDirectory();
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
sdcard = new File(/sdcard/);
log.e(sdcard spance: + sdcard.getFreeSpace());
if (sdcard.getFreeSpace() == 0) {
sdcard = new File(/sdcard1/);
log.e(sdcard1 space: + sdcard.getFreeSpace());
}
if (sdcard.getFreeSpace() == 0) {
sdcard = new File(/sdcard2/);
log.e(sdcard2 space: + sdcard.getFreeSpace());
}
}
}
log.e(data: + sdcard.getAbsolutePath());
return sdcard;
}
public List getExtSDCardPath() {
List lResult = new ArrayList();
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(mount);
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
if (line.contains(extSdCard)) {
String[] arr = line.split( );
String path = arr[1];
if (path.lastIndexOf(extSdCard) == path.length() - 9) {
File file = new File(path);
if (file.isDirectory()) {
lResult.add(path);
}
}
} else if (line.contains(/sdcard)) {
String[] arr = line.split( );
String path = arr[1];
if (path.lastIndexOf(/sdcard) == path.length() - 6) {
File file = new File(path);
if (file.isDirectory()) {
lResult.add(path);
}
} else {
String number = path.substring(path.lastIndexOf(/sdcard) + 7);
try {
Integer.parseInt(number);
File file = new File(path);
if (file.isDirectory()) {
lResult.add(path);
}
} catch (Exception e) {
}
}
}
}
isr.close();
} catch (Exception e) {
}
return lResult;
}
不過,首選獲取存儲還是先使用Android提供的方法,判斷並獲取Sdcard目錄。
//判斷sdcard是否存在
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
//如果存在,獲取存儲File目錄
Environment.getExternalStorageDirectory();
Android應用開發時,自定義控件時少不了和View的觸摸點擊事件打交道。針對View的事件分發原理,也看過網上的一些博客,但是看歸看,看了之後時間一長就又忘記了,因此
ProgressBar 簡介ProgressBar是一種很常用的Ui,用於給復雜的操作顯示進度,提供更好的用戶相應。使用setProgress()incrementPro
最近無意中看到釘釘這個App,發現聯系人詳情這個界面的效果還是蠻好看的。正好最近在看Material Design,所以想看看可不可用Android系統原生的來實現這種效
簡單的說下反編譯apk的流程:我們一般想要反編譯一個apk,無非就是想獲得三樣東西圖片資源 ,XML資源,和代碼資源一.圖片資源獲取、這個最簡單啦, &nbs