2015-04-01 67 views
0

嗨我想創建一個文件選擇器從設備中選擇文件,然後將其上傳到服務器。所以我嘗試了一些相同的示例,但每次我都堅持它僅顯示設備的內部存儲驅動器而非外部存儲器。 我試過這裏的例子File Explorer Example如何在andorid中從內部和外部存儲中選擇文件

但我只顯示內部SD卡。當

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    currentDir = new File("/sdcard/"); 
    fill(currentDir); 
} 

,如果我改變mnt然後顯示選擇外部存儲按返回鍵後..

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    currentDir = new File("/mnt/"); 
    fill(currentDir); 
} 

我想是時候點擊瀏覽按鈕,它應該顯示只有兩個選項的根據設備配置一個內部存儲器和第二個外部存儲器。即如果它有這些驅動器。

在此先感謝....

+0

參考http://developer.android.com/guide/topics/data/data-storage.html#filesInternal – 2015-04-01 07:13:52

+1

每個設備都有內部和外部存儲。如果存在微型SD卡,我們稱之爲可移動存儲。所以可以有三種存儲。大多數情況下,您找不到可移動媒體的路徑。請不要再製作另一個文件管理器來限制用戶可以從文件系統中看到的內容。 (我恨他們)。只需從/ mnt或/ storage開始,並允許所有/到/。 – greenapps 2015-04-01 08:57:12

+0

/存儲/工作知道它顯示內部以及erternal存儲設備。謝謝@greenapps – 2015-04-01 09:07:07

回答

0

對於外部存儲。

String path = null; 

    if (Build.VERSION.SDK_INT < 8) { 
     path = root.getAbsolutePath() + "/Android/data/com.packagename/files/"; 
    } else { 
     File file = getExternalFilesDir(null);//getAbsolutePath(); 
     if (file == null) { 
      path = root.getAbsolutePath() + "/Android/data/com.packagename/files/"; 
     } else { 
      path = file.getAbsolutePath(); 
     } 
    } 

內部存儲可以使用

FileInputStream stream = context.openFileInput("sp_key_file"); 
相關問題