vendredi 9 octobre 2015

Use DATE_ADDED instead of DATE_TAKEN when DATE_ADDED is 0 to sort a Query

I want to request images and and sort them by DATE_TAKEN. In some cases DATE_TAKEN is not available. In this case I would like to use DATE_ADDED as fallback.

Is it possible to combine this in a single SQL statement. I struggle bit but with this.

My code so far:

String[] projection = {
            MediaStore.MediaColumns._ID,
            MediaStore.MediaColumns.DATA,
            MediaStore.MediaColumns.MIME_TYPE,
            MediaStore.Images.ImageColumns.DATE_ADDED,
            MediaStore.Images.ImageColumns.DATE_TAKEN,

            MediaStore.MediaColumns.TITLE,
    };


    String sortString = MediaStore.Images.ImageColumns.DATE_TAKEN + "  ASC";

    Uri target = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

    Cursor cursor = getContentResolver().query(target, projection, null, null, sortString);

My idea would be something like this:

String sortString = 
" CASE "+ MediaStore.Images.ImageColumns.DATE_TAKEN +" WHEN  "+  
MediaStore.Images.ImageColumns.DATE_TAKEN +" ==  0 THEN "   + 
MediaStore.Images.ImageColumns.DATE_ADDED + " ASC " +
"ELSE " + MediaStore.Images.ImageColumns.DATE_TAKEN + " ASC END";

But I've got an error and I don't even know if it is actually possible to do something like this.

The error:

android.database.sqlite.SQLiteException: near "ASC": syntax error (code 1)

Aucun commentaire:

Enregistrer un commentaire