2013-04-13 56 views
0

幾個星期前,我在HTC One V上測試了我的應用程序。當我的應用程序在第一次運行時檢查外部存儲的可用性時,發現沒有。 (我用getExternalStorageState()並根據結果,getExternalFilesDir(null))。外部存儲和HTC One V

我閱讀了相關的stackoverflow線程(和Android文檔),所以我得出結論,任何支持Google Play的設備都必須提供某種外部存儲(SD卡或其他)。 Android官方主頁還暗示getExternalFilesDir必須始終返回一個有效的地方(除非未安裝或裝入PC等)。

讓我進行測試的HTC One V的擁有者告訴我,他沒有拿到任何SD卡給他的手機。 (我知道外部存儲器也可以是其他的東西,但正如你上面看到的,標準的getExternalStorageState調用返回沒有,即它沒有返回HTC One V的內部存儲器。)

如果我轉身關閉我的應用程序的外部存儲使用情況(而不是依靠手機內存),一切都運行正常。問題是,它是一個遊戲,它將超過50MB,所以我不得不使用Google的APK擴展文件的可能性 - 這需要外部存儲。

供應商/移動運營商是否有權在沒有外部存儲的情況下銷售手機(在這種情況下,沒有SD卡)?我知道這不是一個真正的開發問題,但正如你所看到的,這裏一定是錯誤的。據我所知,One V有一個很大的內部存儲器,所以我想知道爲什麼getExternalStorageState沒有報告它可用。

回答

1

我設計了一個application,雖然它不需要外部存儲器與「外部存儲」中的文件一起使用。 Whatsapp也適用於HTC One V,所以很明顯,您的代碼存在問題。

事情是,在我的申請中,雖然minSdkVersion="8"我沒有使用getExternalFilesDir(null)。相反,我用getExternalStorageDirectory(),這不是因爲選擇。我在開發應用程序時並不知道getExternalFilesDir()函數。然而,該應用程序的作品應該在朋友的HTC One V上。所以我建議你使用getExternalStorageDirectory()

示例代碼:

String mountStatus = Environment.getExternalStorageState(); 
       if (mountStatus.equalsIgnoreCase("mounted")) { 
        Toast.makeText(MainActivity.this, 
          Environment.getExternalStorageDirectory().getAbsolutePath(), Toast.LENGTH_SHORT).show(); 
       } 
+0

我沒有測試的代碼,但這是它的精神,以獲取外部存儲目錄。 –

+0

我使用官方的谷歌代碼,我懷疑我的代碼有問題。我想,它一定是那個特定的一個V的東西。 –

+0

對不起,我的意思是帶有內部存儲的設備對getExternalFilesDir()有問題,而不是你特定的代碼。沒有冒犯:) –