2012-10-06 83 views
1

所以我有一個紮根的android 4.0.3設備。每當我將某些東西安裝到實際上是內部的'sd卡'時,它也會創建這個/ mnt/secure/asec分區。以下是df的部分輸出。file.getTotalSpace()返回實際值的兩倍

/mnt/sdcard    1G 65M  1G 4096 
    /mnt/secure/asec   1G 65M  1G 4096 

現在,如果我嘗試執行下面的代碼。

File f = new File("/mnt/sdcard"); 
    long div = (1024*1024); 
    long d = f.getTotalSpace()/div; 
      Log.i("Capacity",String.valueOf(d)); 

它給我看的數值是2Gb。這裏發生了什麼?爲什麼Android 4.0.3爲這些apks創建一個安全的掛載點安裝在'sd卡'呢?這不是一個軟糖只有功能?

回答

1

這是怎麼回事?

嘗試使用StatFs而不是getTotalSpace(),看看你是否得到更好的結果。

爲什麼Android 4.0.3爲這些apks創建安全掛載點安裝在'sd卡'呢?

因爲這一直是由於特徵是在API級別8.

+0

的statfs SF =新的statfs( 「/ MNT/SD卡」)介紹了安裝到SD中Android部分; long div = 1024 * 1024; long statcap = sf.getBlockCount()* sf.getBlockSize()/ div; 這會導致與getTotalSpace()完全相同的值; 感謝您使我意識到安裝到SD的事情。對不起格式化.. – Sojurn

+0

@ user16357:嗯。我不知道爲什麼你會得到這些值,並且我在http://b.android.com上沒有看到提到這些方法的問題。如果你有機會,發佈一個重現問題的項目,我會嘗試在這裏運行一些東西。 – CommonsWare