【发布时间】:2022-11-20 10:43:43
【问题描述】:
I make an audio player app and while debugging this app on my phone showing exception sqllite exception and this audio player it was crashed I'm searching more times and try more solutions but its error still remain and this app its needs external storage permission but Im don't have sd memory card I want help to resolve this error
this is out put full SQliteEXCEPTION exception:
android.database.sqlite.SQLiteException: no such column: date_addedDESC (Sqlite code 1 SQLITE_ERROR): , while compiling: SELECT _id, _display_name, duration, _size, album_id FROM audio WHERE ((is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' ))) AND (date_addedDESC), (OS error - 2:No such file or directory)
and this main activity code for this problem :
private void fetchPlayer() {
//define a list to carry players
List<player> mPlayer = new ArrayList<> ();
Uri mediaStoreUri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
mediaStoreUri = MediaStore.Audio.Media.getContentUri (MediaStore.VOLUME_EXTERNAL);
}
else{
mediaStoreUri = MediaStore.Audio.Media. EXTERNAL_CONTENT_URI;
}
// define projection
String[] projection = new String[]{
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.SIZE,
MediaStore.Audio.Media.ALBUM_ID,
};
// order
String sortOrder = MediaStore.Audio.Media.DATE_ADDED + " DESC ";
// get the players
try (Cursor cursor = getContentResolver ().query (mediaStoreUri,projection,sortOrder,null,null)) {
// cache cursor indices
int idColumn = cursor.getColumnIndexOrThrow (MediaStore.Audio.Media._ID);
int nameColumn = cursor.getColumnIndexOrThrow (MediaStore.Audio.Media.DISPLAY_NAME);
int durationColumn = cursor.getColumnIndexOrThrow (MediaStore.Audio.Media.DURATION);
int sizeColumn = cursor.getColumnIndexOrThrow (MediaStore.Audio.Media.SIZE);
int albumColumn = cursor.getColumnIndexOrThrow (MediaStore.Audio.Media.ALBUM_ID);
//clear the previous loaded before adding loading again
while (cursor.moveToNext ()){
//get the values of a column for a given audio file
long id = cursor.getLong(idColumn );
String name = cursor.getString (nameColumn);
int duration = cursor.getInt (durationColumn);
int size = cursor.getInt (sizeColumn);
long albumId = cursor.getLong (albumColumn);
// player Uri
Uri uri = ContentUris.withAppendedId (MediaStore.Audio.Media.EXTERNAL_CONTENT_URI , id );
// album artwork uri
Uri albumArtWorkUri = ContentUris.withAppendedId (Uri.parse("content:// media/external/audio/albumart") , albumId);
// remove mp3 extension from players name
name = name.substring (0 , name.lastIndexOf ("."));
//player item
player player = new player (name , uri , albumArtWorkUri , size , duration , id );
//add player item to play list
mPlayer.add(player);
}
//display player
showPlayers(mPlayer);
}
}
private void showPlayers(List<player> mPlayer){
if(mPlayer.size () == 0){
Toast.makeText (this , "No Players" , Toast.LENGTH_SHORT ).show ();
return;
}
// save players
allPlayer.clear ();
allPlayer.addAll (mPlayer);
//update the tools bar title
String title = getResources ().getString (R.string.app_name) + "." + mPlayer.size ();
Objects.requireNonNull (getSupportActionBar ()).setTitle (title);
//layout manager
LinearLayoutManager layoutManager = new LinearLayoutManager (this);
recyclerView.setLayoutManager (layoutManager);
//players adapter
playerAdapter = new playerAdapter (this , mPlayer);
//set the adapter to recycleView
recyclerView.setAdapter (playerAdapter);
}
}
【问题讨论】:
-
Please elaborate about date_addedDESC. Where is it in you code?
-
String sortOrder = MediaStore.Audio.Media.DATE_ADDED + " DESC "; its error about this code
-
and when I add this line code like column showing other error private static final String COLUMN_DATE_ADDED = "DESC"; and pass this column as string column in to while (cursor.moveToNext ()){ show error in log : android.database.sqlite.SQLiteException: near "DESC": syntax error (Sqlite code 1 SQLITE_ERROR):
-
Well please comment on the error first. What happened? You see that you did not program date_addedDESC but ..
-
I do not understand your last comment.
标签: java android sqlite android-studio sqliteexception