2

我正在嘗試實現文件選擇器。我在我的應用程序中使用Android File Explore作爲文件選擇器。當我運行該應用程序時,它會向我顯示內部存儲並返回文件路徑,但它根本不顯示外部存儲。在文件選取器中訪問外部存儲器

這是我的AndroidManifest.xml文件。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.unicloud.mittal" > 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:logo="@drawable/ic_launcher" 
     android:theme="@style/AppTheme" > 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity 
      android:name=".Splash" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".loginWithGooglePlus" 
      android:label="@string/app_name" 
      android:logo="@drawable/ic_launcher" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".FileExplore" 
      android:label="Pick a file" 
      android:permission="android.permission.MANAGE_DOCUMENTS" > 
      <intent-filter> 
       <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> 
      </intent-filter> 

     </activity> 
    </application> 

</manifest> 

我在哪裏做錯了?

+0

添加您的Java代碼以及?您正在使用哪個API來獲取外部存儲? – VicJordan 2015-03-31 08:12:33

+0

鏈接到我的java文件是在問題的第一行,我使用的是API 21 ... – user2798227 2015-03-31 11:42:02

回答

3

在上面的github鏈接中,您使用的Environment.getExternalStorageDirectory() API正在按預期工作。我想你誤解了這個API的使用。該API將始終返回主外部存儲目錄。以下說明可能對您有所幫助:

首先,內部存儲,外部存儲(又名主外部存儲)和輔助外部存儲之間有什麼區別?

內部存儲:是用戶無法訪問的存儲,除非是通過安裝的應用程序(或通過爲其設備生根)。例如:數據/數據/ app_packageName

主要外部存儲:內置共享存儲,這是「由在插入USB電纜和安裝它作爲一個主計算機上的驅動器的用戶可訪問的」。例如:當我們說Nexus 5 32 GB時。

輔助外部存儲:可移動存儲。例如:SD卡。

下一個問題。如何訪問Lollipop中的SD卡? 要訪問SD卡Android在KitKat中引入了新的Storage Access Framework

這裏有一個答案很好地解釋它:https://stackoverflow.com/a/26765884/631803

+0

我的min sdk是4.0.3,我的編譯和目標sdk是5.0。因此,如果我使用KitKat的這種存儲訪問框架方法,它是否可以在所有使用Android 4.0.3+的設備上工作? – user2798227 2015-04-02 14:04:29

+0

不可以。它只適用於軟件版本> = KitKat的設備 – VicJordan 2015-04-03 00:53:01