2017-08-08 14 views
0

** EDITは、AndroidのSDカード

ではなくSDカードにアクセスできません、私は、USBポートを介してアダプタ経由でアクセスしていますので、USBドライブとしてそれを考慮した方が良いかもしれません。

多くの苦労と研究の後、私は作業していたsdcard(USBドライブ)のパスに到達する方法を見つけることができました。一般的に、パスは/ mnt/media_rw/XXXX-XXXXです(XXXX-XXXXはsdcard(USBドライブ)のコードです)。

事は、私はそこにあるいくつかのファイルを読み込むしようとしていますが、私は

new File("/mnt/media_rw/XXXX-XXXX").listFiles(); 

を呼び出すとき、私はヌル配列を返すことを取得します。私はそれが内部にファイルを持っていることは確かです。私はこの電話機が動作する電話機を持っているので、電話機は「mnt/media_rw/XXXX-XXXX」ではありません。その電話機と同じパスを使用しても機能しません。 READ_EXTERNAL_STORAGEとREAD_PHONE_STATE:

は、私は2つの権限を持っているこのポストHow can I get the list of mounted external storage of android device

て、そのパスに達しました。マニフェストとプログラムでボットを追加しなければなりませんでした。

**

public static String findFileInStorages(String filename) throws Exception { 
    List<StorageUtils.StorageInfo> storageList = StorageUtils.getStorageList(); // Here i get 2 paths: 1) /storage/emulated/0; 2) /mnt/media_rw/XXXX-XXXX 
    for(int i = 0; i < storageList.size(); i++) { 
     String pathToFile = findFileWithBasePath(new File(storageList.get(i).path, filename); 
     if (pathToFile != null) return pathToFile; 
    } 
    throw new Exception("Couldn't find file"); 
} 

public static String findFileWithBasePath(File file, String fileName) throws Exception { 
    File listFile[] = file.listFiles(); 
    String outputFile = null; 
    if (listFile != null && listFile.length > 0) { 
     for (int i = 0; i < listFile.length; i++) { 
      if (listFile[i].isDirectory()) { 
       outputFile = findFileWithBasePath(listFile[i], fileName); 
      } else { 
       if(listFile[i].getName().contains(fileName)) { 
        return listFile[i].getAbsolutePath(); 
       } 
      } 
      if (outputFile != null) return outputFile; 
     } 
    } 
    return null; 
} 

"getStorageList()" メソッドと "StorageUtils" および "StorangeInfo" クラスを追加したが、上記のリンクにあります。私はそれのコードのものを変更しませんでした。

追加できるものがあれば、尋ねてください。

おかげ

+0

コードを投稿..... –

+0

あなたは[リムーバブルメディア](https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage)上の任意の場所へのファイルシステムアクセス権を持っていません。 .html)をAndroid 4.4以降でご利用いただけます。 – CommonsWare

+0

これはあなたに役立つと思いますか? https://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory(java.lang.String) – notsopopularguy

答えて

0

context.getExternalFilesDirs(null) 

返しにすべてのSDカードへのアプリケーションが持続的に置くことができ、すべての共有/外部ストレージデバイス上のアプリケーション固有のディレクトリへの絶対パスをパスを取得するためのコンテキストメソッドがありますそれが所有するファイル。

+0

私はこれをうまくやったと思う。私が読んでみたいファイルはアプリからではなく、外部のSDカードに入っています。 これで、ここに表示されているフォルダ内のファイル、またはその親を探す –

関連する問題