2015-12-09 7 views
0

Я пытаюсь получить доступ к системным папкам на Android, /Music, если быть точным. Я нашел в документации то, что getExternalFilesDir(Environment.DIRECTORY_MUSIC) предоставит доступ к музыкальной папке, связанной с моим приложением, которая является ее частью, и в конечном итоге будет удалена после удаления приложения с устройства. Итак, мой вопрос заключается в том, как получить доступ к содержимому папки системной музыки? У меня будут необходимые разрешения для захвата этих файлов и отправки по Bluetooth позже?Доступ к системным папкам

То, что я сделал до сих пор, но это, очевидно, перечисляет каталог приложения:

File path = getExternalFilesDir(Environment.DIRECTORY_MUSIC); 

Log.d("Files", "Path: " + path); 
File f = new File(path,""); 
File file[] = f.listFiles(); 

for (int i=0; i < file.length; i++) 
{ 
    filesList.setText("FileName:" + file[i].getName()); 
} 

ответ

1

Чтобы получить список всей музыки на устройстве, вы хотите, чтобы посмотреть в использовании Content Providers и MediaStore

Отметьте этот код от Google's sample code, как получить музыку с устройства. Он показывает вам, как это сделать.

Важный бит эта часть ...

Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 

// Perform a query on the content resolver. The URI we're passing specifies that we 
// want to query for all audio media on external storage (e.g. SD card) 
Cursor cur = mContentResolver.query(uri, null, 
     MediaStore.Audio.Media.IS_MUSIC + " = 1", null, null); 

if (cur == null) { 
    // Query failed... 
    return; 
} 

if (!cur.moveToFirst()) { 
    // Nothing to query. There is no music on the device. How boring. 
    return; 
} 

// retrieve the indices of the columns where the ID, title, etc. of the song are 
int artistColumn = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST); 
int titleColumn = cur.getColumnIndex(MediaStore.Audio.Media.TITLE); 
int albumColumn = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM); 
int durationColumn = cur.getColumnIndex(MediaStore.Audio.Media.DURATION); 
int idColumn = cur.getColumnIndex(MediaStore.Audio.Media._ID); 
+0

Ваш ответ был ват я искал: курсор. Единственная проблема заключается в том, что создание объекта contentResolver очень хорошо работает в классе MainActivity, но как только я создаю метод для выполнения операции курсора в другом классе, он выдает исключение nullpointer. Не знаю, почему это происходит на данный момент: ContentResolver musicResolver = getContentResolver(); –