2011-12-04 6 views
3

のうち、無効な権限、ロック他のアプリは、私はAndroidのためのメディアファイル編成プログラムに取り組んでいると私は、このようなルート/アーティスト/アルバム/ソングとしてディレクトリ構造にメディアファイルを移動したい設定します。フラック私はこの情報を含むデータ構造をループし、mkdirs()を使ってフォルダを作成しています。私が作成したフォルダ(OIファイルマネージャを使用するか、専門家のファイル)を参照するとき、私は最初のレベルのディレクトリを入力し、セカンドレベルディレクトリの名前を参照してください、しかし、彼らは、0バイトのファイルとして表示されていることができます。最初に私は、彼らは本当にただのファイルだったし、再び試みたと思ったが、私はADBでそれらを参照する場合、それらはファイルです。権限が問題となっている:第二レベルのディレクトリ(/ mntに/ストレージ/ FLAC/ARTIST_1など)アンドロイドmkdirs()フォルダ

ls -l 
drwxrw-rw- 4 app_63 app_63 16 Dec 3 20:42 Artist_1 
drwxrw-rw- 3 app_63 app_63 16 Dec 3 20:42 Artist_2 
... 

同じを持っている:例えば

、私はMNT /ストレージ/ FLAC /で私のルートを持っていますアルバムフォルダのアクセス許可。私は手動で(777)drwxrwxrwxするために、両方のレベルのフォルダを設定し、chmodコマンドでパーミッションを編集する場合

、私は彼らの中に移動し、ファイルマネージャでファイルを再生することができます。これはchmod + xで行うことができます。ここで

は、私が使用しているコードです:

public void organizeFiles(String rootDir, ArrayList<libraryElementArtist> libraryData) 
{ 
    for(int i = 0; i < libraryData.size(); i++) 
    { 
     //create artist folder 
     //{ 
     // (new File(rootDir + File.separator + libraryData.get(i).name)).mkdirs(); 
     //} 
     for(int j = 0; j < libraryData.get(i).albums.size(); j++) 
     { 
      //create album folder 
      (new File(rootDir + File.separator + libraryData.get(i).name + File.separator + libraryData.get(i).albums.get(j).name + File.separator)).mkdirs(); 
      for(int k = 0; k < libraryData.get(i).albums.get(j).songs.size(); k++) 
      { 
       //move song into folder 
       FileOperations.moveFile(libraryData.get(i).albums.get(j).songs.get(k).filename, rootDir + "/" + libraryData.get(i).name + "/" + libraryData.get(i).albums.get(j).name); 
      } 
     } 
    } 
} 

これはMOVEFILE機能である:

public static boolean moveFile(String sourcefile, String dest) 
{ 
    File file = new File(sourcefile); 
    File dir = new File(dest); 
    return file.renameTo(new File(dir, file.getName())); 
} 

私は私のマニフェストファイルに次の行を持っている:

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

私のデバイス上のストレージは16GBの内部ext3です。コードにこのアクセス許可の修正をどのように追加する必要がありますか?

+0

この 'rootDir'はSDカードに常にいるのですか? – havexz

答えて

0

あなたはあなたのアプリケーションのマニフェストに次の権限が必要になります。

android.permission.WRITE_EXTERNAL_STORAGE 

参考:

Storage

+0

申し訳ありませんが、私はすでに私のマニフェストファイルでこれを持っていたが、フォーマットは、それは私の質問の中に隠しました。私は私の質問を編集しました。問題は、それが(ディレクトリがうまく作成され、rootシェルにすべてがちょうど他のアプリがそれを使用する権限を持っていない、完全に行きました)間違った権限でそれを作ることだ、それはディレクトリを作ることができないということではありません。 – CalcProgrammer1

関連する問題