3

私は Android 用のメディア ファイル編成プログラムに取り組んでおり、メディア ファイルを root/Artist/Album/Song.flac などのディレクトリ構造に移動したいと考えています。この情報を含むデータ構造をループし、mkdirs() を使用してフォルダーを作成しています。作成したフォルダを (OI File Manager または File Expert を使用して) 参照すると、第 1 レベルのディレクトリに入り、第 2 レベルのディレクトリの名前を確認できますが、それらは 0 バイトのファイルとして示されます。最初は本当に単なるファイルだと思って再試行しましたが、ADB でそれらを参照すると、それらはファイルです。権限が問題です:

たとえば、ルートは /mnt/storage/FLAC にあります。

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
...

2 番目のレベルのディレクトリ (/mnt/storage/FLAC/Artist_1 など) には、Album フォルダーに対する同じ権限があります。

chmod を使用してアクセス許可を手動で編集し、両方のレベル フォルダーを drwxrwxrwx (777) に設定すると、それらに移動して、ファイル マネージャーでファイルを再生できます。これは、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です。このアクセス許可の修正をコードにどのように追加すればよいですか?

4

1 に答える 1

0

アプリ マニフェストで次の権限が必要です。

android.permission.WRITE_EXTERNAL_STORAGE

参照:

保管所

于 2011-12-04T03:47:00.317 に答える