Uri с File: /// vs Content: // - Получение информации о музыкальном файле - PullRequest
0 голосов
/ 16 июля 2011

Я заметил что-то странное в поведении моего кода и надеюсь, что кто-нибудь сможет пролить свет.

        String temp = "file:///sdcard/music/05 Folsom Prison Blues.mp3";
        String temp2 = "content://media/external/audio/media/10";

        Uri uri = Uri.parse(temp);

        Cursor musiccursor = null;
        musiccursor = managedQuery(uri, null, null, null, null);

        try {
        if (musiccursor.moveToFirst()) {
            String title; 
            int titleColumn = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 
                title = musiccursor.getString(titleColumn);
            item.setText(title);
        }

Проблема, которую я замечаю, в том, что с temp2 все работает нормально, я могу получить название песни. Но с temp musiccursor каждый раз равен нулю, поэтому мы бросаем nullpointerexception. Есть идеи, какая здесь разница? Я пробовал закодированную версию temp (конвертирует пробелы в% 20 и т. Д.), И это не работает. Я могу использовать URI, созданный с помощью temp2, чтобы воспроизвести песню, используя намерение без проблем ... Не уверен, что мне здесь не хватает.

Заранее спасибо!

1 Ответ

1 голос
/ 16 июля 2011

file:// не является схемой, управляемой поставщиком контента (только content:// есть), и поэтому ContentResolver не сможет ничего с этим поделать.

...