1. 程式人生 > >Android手機如何獲取手機記憶體路徑和sd卡路徑

Android手機如何獲取手機記憶體路徑和sd卡路徑

/**
     * 獲取手機自身記憶體路徑
     * 
     */

public static String getPhoneCardPath(){
return Environment.getDataDirectory().getPath();
}
/**
     * 獲取sd卡路徑
     * 雙sd卡時,根據”設定“裡面的資料儲存位置選擇,獲得的是內建sd卡或外接sd卡
     * @return
     */
public static String getNormalSDCardPath(){
return Environment.getExternalStorageDirectory().getPath();

}
/**
     * 獲取sd卡路徑
     * 雙sd卡時,獲得的是外接sd卡
     * @return
     */

    public static String getSDCardPath() {
        String cmd = "cat /proc/mounts";
        Runtime run = Runtime.getRuntime();// 返回與當前 Java 應用程式相關的執行時物件
        BufferedInputStream in=null;
        BufferedReader inBr=null;
        try {
            Process p = run.exec(cmd);// 啟動另一個程序來執行命令

            in = new BufferedInputStream(p.getInputStream());
            inBr = new BufferedReader(new InputStreamReader(in));


            String lineStr;
            while ((lineStr = inBr.readLine()) != null) {
                // 獲得命令執行後在控制檯的輸出資訊
Log.i("CommonUtil:getSDCardPath", lineStr);
                if (lineStr.contains("sdcard")

                        && lineStr.contains(".android_secure")) {
                    String[] strArray = lineStr.split(" ");
                    if (strArray != null && strArray.length >= 5) {
                        String result = strArray[1].replace("/.android_secure",
                                "");
                        return result;
                    }
                }
                // 檢查命令是否執行失敗。
                if (p.waitFor() != 0 && p.exitValue() == 1) {
                    // p.exitValue()==0表示正常結束,1:非正常結束
Log.e("CommonUtil:getSDCardPath", "命令執行失敗!");
                }
            }
        } catch (Exception e) {
            Log.e("CommonUtil:getSDCardPath", e.toString());
            //return Environment.getExternalStorageDirectory().getPath();
        }finally{
            try {
if(in!=null){
                    in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
            try {
if(inBr!=null){
inBr.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        }
        return Environment.getExternalStorageDirectory().getPath();
    }
  //檢視所有的sd路徑
    public String getSDCardPathEx(){
String mount = new String();
try {
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("mount");
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
String line;
BufferedReader br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
if (line.contains("secure")) continue;
if (line.contains("asec")) continue;

if (line.contains("fat")) {
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
mount = mount.concat("*" + columns[1] + "\n");
}
} else if (line.contains("fuse")) {
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
mount = mount.concat(columns[1] + "\n");
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mount;
    }
  //獲取當前路徑,可用空間
    public static long getAvailableSize(String path){
try{
File base = new File(path);
StatFs stat = new StatFs(base.getPath());
long nAvailableCount = stat.getBlockSize() * ((long) stat.getAvailableBlocks());
return nAvailableCount;
}catch(Exception e){
e.printStackTrace();
}
return 0;

    }

相關推薦

Android手機如何獲取手機記憶體路徑sd路徑

/**      * 獲取手機自身記憶體路徑      *       */public static String getPhoneCardPath(){return Environment.getDataDirectory().getPath();}/**     *

Android 6.0區別U盤SD裝置

public static boolean isSdcardExists(Context context) { StorageManager storageManager =

android平臺獲取手機IMSI,IMEI ,序列號, 手機號的方法

/** * 獲取android當前可用記憶體大小 */ private String getAvailMemory() {// 獲取android當前可用記憶體大小 ActivityManager am = (ActivityMa

Android 非同步載入圖片-LruCacheSD手機快取-三級快取原理載入圖片

非同步載入圖片的例子,網上也比較多,大部分用了HashMap<String, SoftReference<Drawable>> imageCache ,但是現在已經不再推薦使用這種方式了,因為從 Android 2.3 (API Level 9)開始,垃圾回

獲取手機SD路徑之爬坑解決方案

  android 系統是開源的,於是各種產商各種瞎改android系統 ,導致不同版本的手機的SD卡的路徑千奇百怪。三星,HTC…等比較特殊。有時候讓我們Android程式設計師感到很迷茫,不得不懷疑自己的人生。為什麼總是坑我們這些Android程式設計師?抱

Android獲取手機上的圖片視訊縮圖thumbnails

【0】大家都知道Android從1.5開始剛插入SD卡時系統會呼叫MediaScanner服務進行後臺掃描,索引新的歌曲、圖片和視訊等資訊,如果我們需要快速提取圖片和視訊縮圖可以直接訪問 android.provider.MediaStore.Images.Thumbn

QT之Android獲取手機感測器資料學習筆記

QT += core gui sensors positioning 其中sensors是獲取手機上感測器資料的元件,positioning是獲取位置資訊的元件 1、獲取陀螺儀感測器資料 #include <QGyroscope> QGyroscope *gyrosco

Android筆記: 獲取手機的品牌、型號、Android系統版本號、IMEI、當前系統語言等工具類

最近在開發中,需要用到一些系統資訊,這裡我把這些方法寫成一個工具類方便以後複用,該工具類有以下6個功能: 1、獲取手機制造廠商 2、獲取手機型號 3、獲取手機系統當前使用的語言 4、獲取Andr

Android獲取手機中已安裝apk檔案資訊(PackageInfo、ResolveInfo)(應用圖片、應用名、包名等)

眾所周知,通過PackageManager可以獲取手機端已安裝的apk檔案的資訊,具體程式碼如下 PackageManager packageManager = this.getPackageManager();  List<PackageInfo> pac

Unity3D各平臺路徑(包括手機內建儲存路徑SD等等)

  關於Unity3D在各平臺上的路徑問題,網上有好多的資料,如下是比較好的參考資料: 1、http://www.manew.com/thread-23491-1-1.html 2、http://www.xuanyusong.com/archives/2656   這裡我不詳

Android程式碼獲取手機品牌、手機型號、手機唯一序列號

獲取手機品牌:phone_brand = (TextView) findViewById(R.id.mobile_phone_brand); String brand = android.os.Build.BRAND; phone_brand.setText(brand);獲

Android 應用獲取手機的虛擬機器型別

Dalvik虛擬機器,是Google等廠商合作開發的Android移動裝置平臺的核心組成部分之一。它可以支援已轉換為.dex(即“Dalvik Executable”)格式的Java應用程式的執行。

Android如何獲取手機各項資訊

1、使用Build獲取架構屬性 下面我們來根據原始碼看看通過Build這個類可以得到哪些配置資訊,具體就不解釋了,從命名基本可以理解其代表的屬性。 public class Build { //當一個版本屬性不知道時所設定的值。 publ

Android獲取手機UDID

最近做的一個專案中需要用到Android裝置唯一碼(UUID)來標識一臺裝置,Android中裝置唯一碼有很多,如:MAC地址、IMEI號(DeviceId)、IMSI號、ANDROID_ID、序列號(SerialNumber)等,但並不是所有裝置上都能穩定獲取到這些值。

android如何獲取手機聯絡人的資料庫

很多人在做手機聯絡人的apk時會遇到,如何獲取手機聯絡人資料庫的問題,在這裡我就簡單的將程式碼寫一下 package com.example.song.lx_day14_contacts; import android.content.ContentResolver; i

Android 實時獲取手機充電狀態

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = mCont

SD路徑問題以及如何獲取SDCard 記憶體

 0、獲取sd卡路徑 方法一: private String folder = "/sdcard/DCIM/Camera/"(SD卡上拍照程式的圖片儲存路徑); //寫死絕對路徑,不贊成使用 方法二: public String getSDPath(){     

Android studio 獲取手機簡訊內容並輸出顯示

初學Android studio 需要做一個功能,獲取簡訊內容輸出到顯示屏上。 使用Android studio版本:3.2  JDK版本: jdk1.8.0_151   首先在清單檔案新增許可權,獲取簡訊讀寫許可權 <uses-permission an

Android獲取ROMSD剩餘可用空間大小

//獲取記憶體可用剩餘空間 long romFreeSpace = Environment.getDataDirectory().getFreeSpace(); //獲

[Android] 程式碼獲取手機系統型別(小米MIUI、華為EMUI、魅族FLYME)

我們都知道,現在Android系統手機各式各樣,包括三星、華為、小米、魅族等等,它們的系統都不是原生的Android系統,都是經過手機廠商修改過的,並且通過刷機可以在不同手機刷各式各樣的系統,在一些應用中需要根據不同的系統做不同的處理,因此我們就需要獲取手機使用的什麼系統,現