精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

內置與外置的存儲卡如何在Android應用中獲取

這篇文章將為大家詳細講解有關內置與外置的存儲卡如何在Android應用中獲取,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

創新互聯公司專注于成都做網站、網站設計、外貿營銷網站建設、網頁設計、網站制作、網站開發。公司秉持“客戶至上,用心服務”的宗旨,從客戶的利益和觀點出發,讓客戶在網絡營銷中找到自己的駐足之地。尊重和關懷每一位客戶,用嚴謹的態度對待客戶,用專業的服務創造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

以前的Android(4.1之前的版本)中,SDcard跟路徑通過“/sdcard”或者“/mnt/sdcard”來表示存儲卡,而在Jelly Bean系統中修改為了“/storage/sdcard0”,以后可能還會有多個SDcard的情況。

目前為了保持和之前代碼的兼容,sdcard路徑做了link映射。

為了使您的代碼更加健壯并且能夠兼容以后的Android版本和新的設備,請通過Environment.getExternalStorageDirectory().getPath()來獲取sdcard路徑,如果您需要往sdcard中保存特定類型的內容,可以考慮使用Environment.getExternalStoragePublicDirectory(String type)函數,該函數可以返回特定類型的目錄,目前支持如下類型:

DIRECTORY_ALARMS //警報的鈴聲
DIRECTORY_DCIM //相機拍攝的圖片和視頻保存的位置
DIRECTORY_DOWNLOADS //下載文件保存的位置
DIRECTORY_MOVIES //電影保存的位置, 比如 通過google play下載的電影
DIRECTORY_MUSIC //音樂保存的位置
DIRECTORY_NOTIFICATIONS //通知音保存的位置
DIRECTORY_PICTURES //下載的圖片保存的位置
DIRECTORY_PODCASTS //用于保存podcast(博客)的音頻文件
DIRECTORY_RINGTONES //保存鈴聲的位置

如果您的應用需要下載以上類型的文件,則可以放到上面對應的目錄中去來幫助用戶查找,比如最常用的就是下載文件了。如果您開發了一個瀏覽器,在下載文件的時候把文件下載到Download目錄則方便用戶以后查找該文件,當然如果你希望用戶需要通過啟動您的程序來查看他們下載的文件,您也可以不這么做 ^_^。

在使用這些目錄保存文件的時候,需要注意一點:其他程序也有可能在使用這些目錄,在保存文件前,注意判斷下文件是否已經存在,不要覆蓋了用戶之前的數據。

Android4.1之后Android增加了多存儲卡的支持,一般手機會存在內置存儲卡和外置存儲卡,也可能有多個外置存儲卡。如何獲取存儲卡路徑呢?

特別是各種android設備的存儲器路徑,是不一樣的,比如T卡路徑,可能是/mnt/sdcard、/mnt/extsd、/mnt/external_sd 或者/mnt/sdcard2。有時內置存儲器的路徑也可能是/mnt/sdcard,而host usb存儲器的路徑也是各種各樣的。

下面方法是通過反射,調用StorageManager的隱藏接口getVolumePaths(),實現獲取存儲器列表。

package ckl.storage.list;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import android.app.Activity;
import android.os.storage.StorageManager;

public class StorageList {
private Activity mActivity;
private StorageManager mStorageManager;
private Method mMethodGetPaths;

public StorageList(Activity activity) {
mActivity = activity;
if (mActivity != null) {
mStorageManager = (StorageManager)mActivity
.getSystemService(Activity.STORAGE_SERVICE);
try {
mMethodGetPaths = mStorageManager.getClass()
.getMethod("getVolumePaths");
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}

public String[] getVolumePaths() {
String[] paths = null;
try {
paths = (String[]) mMethodGetPaths.invoke(mStorageManager);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return paths;
}
}

在android2.3中,判斷內置SD卡是否掛載:

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
//為true的話,內置sd卡存在
}

判斷外置SD卡是否掛載:

if(Environment.getStorageState(Environment.STORAGE_PATH_SD2).equals(Environment.MEDIA_MOUNTED))
{
//為true的話,外置sd卡存在
}

順帶描述怎么取得sdcard的空間大小:

File sdcardDir = Environment.getExternalStorageDirectory();
StatFs sf = new StatFs(sdcardDir.getPath()); 
//sdcardDir.getPath())值為/mnt/sdcard,想取外置sd卡大小的話,直接代入/mnt/sdcard2
long blockSize = sf.getBlockSize(); //總大小
long blockCount = sf.getBlockCount();
long availCount = sf.getAvailableBlocks(); //有效大小

關于內置與外置的存儲卡如何在Android應用中獲取就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享題目:內置與外置的存儲卡如何在Android應用中獲取
標題網址:http://m.jcarcd.cn/article/ggdeij.html
主站蜘蛛池模板: 国产日韩无 | 日韩精品在线第二页 | 欧美三级在线播放 | 日韩a草 | 韩国日本午 | 日本天堂免费观看 | 国语精品 | 97视频在线| 乱婬真视频| 国产两性色午夜视频 | 日本中文字幕免费 | 成人国产综合三级 | 最新免费电影大全 | 精品日韩欧美 | 99惹99| 激情欧美视频 | 国产免费观看视频 | 欧美性爱一区二区 | 国产一区二区色淫 | 日本成年视频操场 | 精品亚洲国产 | 成人精品。。。 | 欧美另类日韩成人 | 日本一道久高清 | 精品理论片 | 国产精品视频美女网 | 精品福利日韩欧 | 欧美日韩性视频 | 精品综合在线观看! | 国产高清极品美女 | 国产一区二在线不卡 | 日本成年视频操场 | 国产玖玖玖九九精 | 精品亚洲中文免费 | 国产福利写真视 | 91欧美尤物精品 | 国产最新一区二区 | 欧美性爱二区 | 日韩中文字幕网站 | 日本韩国午夜福利店 | 午夜影院c绿象 |