我有这样的代码:
public List<Track> getAllSdCardTracks(Context context) {
List<Track> tracks = new List<Track>();
Cursor c = context //this is the problem
.getContentResolver()
.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.ALBUM_ID }, "1=1",
null, null);
if (c.moveToFirst()) {
do {
String mArtist = c
.getString(c
.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
String mTitle = c
.getString(c
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));
String mId = c.getString(c
.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
String mAlbumName = c
.getString(c
.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
String mAlbumID = c
.getString(c
.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
String mPath = c
.getString(c
.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
long mDuration = c
.getLong(c
.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
String mFormattedDuration = DateUtils
.formatElapsedTime(mDuration / 1000);
Track track = new SDTrack(mAlbumID, mAlbumName, mArtist, mId, mTitle, mPath , mFormattedDuration);
tracks.add(track);
} while (c.moveToNext());
if (c != null)
c.close();
}
return tracks;
}
当我想制作这个prj时,xamarin说“无法找到类型或命名空间'Cursor'等等”我想声明Cursor。 有人说我: 试试这个docs.xamarin.com/guides/android/platform_features/…“Cursor”是一个Android类..听起来你应该用ICursor接口声明它然后得到它:
var loader = new CursorLoader(activity, uri, projection, null, null, null);
var cursor = (ICursor)loader.LoadInBackground();
但我不会动摇,我该怎么办!! :/ 任何人都可以帮我解释一下吗?! (请在c#中键入代码,我无法使用java)
答案 0 :(得分:2)
好像你错过了一个使用指令?
编辑: 根据Xamarin-Example here
using Android.App;
using Android.Database;
using Android.OS;
using Android.Widget;
using Android.Content;
using Android.Net;
您需要声明ICursor
答案 1 :(得分:2)
应该相当简单:
var cursor = context.ContentResolver.Query(
MediaStore.Audio.Media.ExternalContentUri,
new string[]
{
/* insert fields here */
},
"1=1",
null,
null);
返回的'光标'将是ICursor。