Android 2.3.3
Eclipse Version: 3.7.0
LogCat
LogCat 報錯信息:
02-14 11:54:12.834: ERROR/(2525): statfs htc failed, errno: 2
02-14 11:54:12.844: WARN/System.err(2525): java.lang.IllegalArgumentException
02-14 11:54:12.853: WARN/System.err(2525): at android.os.StatFs.native_setup(Native Method)
02-14 11:54:12.873: WARN/System.err(2525): at android.os.StatFs.(StatFs.java:32)
02-14 11:54:12.873: WARN/System.err(2525): at com.taobao.util.Devices.getBlock(Devices.java:161)
02-14 11:54:12.884: WARN/System.err(2525): at com.taobao.util.Devices.getUsedRatio(Devices.java:199)
02-14 11:54:12.884: WARN/System.err(2525): at com.taobao.htc.Check.checkSDBlock(Check.java:271)
02-14 11:54:12.884: WARN/System.err(2525): at com.taobao.htc.Check.run(Check.java:332)
02-14 11:54:12.895: WARN/System.err(2525): at java.lang.Thread.run(Thread.java:1019)
發生錯誤原因分析:
分析發生錯誤部分代碼,發現在構建StatFs對象時出錯
sdpath = "htc/";
StatFs sf = new StatFs(sdpath);
StatFs用於對系統的存儲容量進行檢測。報錯是因爲構建StatFs對象時使用了非法參數。"htc/"不是一個合法有效的參數,合法參數應該形如“"/mnt/sdcard”。
解決辦法:
使用默認的路徑及名稱是最好的方法
sdpath = Environment.getExternalStorageDirectory().getPath();// sdpath ="/mnt/sdcard"
//sdpath = Environment.getExternalStorageDirectory().getName();// sdpath ="sdcard"
StatFs sf = new StatFs(sdpath);
如果一定需要自定義路徑作爲參數,也應使用類似下列格式的有效自定義路徑
sdpath = "/mnt/sdcard/htc/";
sdpath = "/sdcard/htc/";
sdpath = "sdcard/htc/";
以合法的路徑及名稱作爲參數,一般類似以"/mnt/sdcard" 或"sdcard/"開頭的路徑都是正確的。具體情況需要在編程中測試一下。