0

私は自分のコードの振る舞いについて何か奇妙なことに気づき、誰かが光を当てることができることを望んでいます。

        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を使用するとすべてが正常に実行され、曲のタイトルを取得できることです。ただし、一時的にmusiccursorは毎回nullになるため、nullpointerexceptionをスローします。ここでの違いは何ですか?エンコードされたバージョンのtemp(スペースを%20などに変換)を試しましたが、機能しません。temp2で作成されたURIを使用して、問題なくインテントを使用して曲を再生できます...ここで何が欠けているのかわかりません。

前もって感謝します!

4

1 に答える 1

2

file://はコンテンツプロバイダーによって管理されるスキームではないため(のみcontent://)、aContentResolverはそれを使用して何もできなくなります。

于 2011-07-15T22:36:03.493 に答える