2011-08-17 51 views
0

我試圖在我的主根目錄下創建一個外部存儲公共目錄並寫下了以下幾行代碼。代碼編譯正確,共享首選項已正確更新,但未在設備中創建根文件夾。爲什麼不創建我的根文件夾?

我使用Atrix(它有這個內部存儲和沒有SD卡)。我也嘗試下載Gingerbread的Atrix插件,我嘗試在模擬器中編譯這個,程序崩潰。 (但它在真實設備中工作得很好)。

  1. 爲什麼模擬器崩潰(我在模擬器中有1 GB SD卡)? (它與空指針異常崩潰)

  2. 爲什麼該文件夾不是在真實設備中創建的?

設備配置:

MinSDK - 8 SDK版本 - 10

代碼段

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ixfer_main); 

     File rootDirectory = new File(getExternalFilesDir(null),"/AppRoot"); 
     rootDirectory.mkdirs(); // also tried using mkdir() - still no good 

編輯:這是權限問題。現在修復並運行。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

嘗試從「/ AppRoot」中刪除前導「/」。 – mportuesisf

+0

@mportuesisf - 沒有,也不起作用,我也試過, – devgp

+0

你有在清單中的外部存儲權限? –

回答

0

爲了訪問文件系統,您必須將適當的權限添加到您的android清單xml文件中。沒有適當的權限,你的文件對象將不會被創建,你會得到一個空引用。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.android.app.myapp" > 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
... 
</manifest> 
+0

很棒的捕獲,yeap它是權限..謝謝 – devgp

1

完成前面的答案:

不要忘記它做任何事情之前,檢查外部存儲狀態。

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 
    /* do job on external storage */ 
    } 
+0

好的一點,thanx讓我知道,我沒有這個檢查條件之前。 – devgp

相關問題