2016-05-04 3 views
0

Мне нужно загрузить пару gifs в пользовательский вид галереи. с использованием медиастара предоставляет мне только типы изображений png/jpg. через пару часов googleing я до сих пор не удалось найти ответ ..Как загружать изображения .gif из Android Mediastore

код я использую для загрузки изображений из MediaStore является:

final String sortOrder = mPreferences.getSortMode(); 

    final Uri uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 

    String[] projection = { MediaStore.MediaColumns.DATA, 
      MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.DISPLAY_NAME }; 

    final Cursor cursor = mContext.getContentResolver().query(uri, projection, null, 
      null, sortOrder); 

Thnx!

ответ

1

Try This, It may help you.

использование String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif");

экземпляр

String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf"); 

от этого анс.

+0

это помогло, thnx! – locomain

0

Убедитесь, что ваш каталог, содержащий ваши gifs, проверяется магазином носителей, чтобы получить его содержимое через поставщика контента.

проверить эту ссылку для получения дополнительной информации: http://www.grokkingandroid.com/adding-files-to-androids-media-library-using-the-mediascanner/

+0

Я уже пробовал это, но он не работает, thnx. – locomain

1

Это дало прекрасный результат.

private static final String[] COLUMNS_OF_INTEREST = new String[] 
{ 
     MediaStore.Video.Media._ID, 
     MediaStore.Video.Media.DATA, 
     MediaStore.Video.Media.DISPLAY_NAME, 
     MediaStore.Video.Media.SIZE, 
     MediaStore.Video.Media.WIDTH, 
     MediaStore.Video.Media.HEIGHT, 
     MediaStore.Video.Media.DATE_ADDED 
}; 

public void printGifUri(Context context) 
{ 
    ContentResolver cr = context.getContentResolver(); 

    String selection = MediaStore.Images.Media.MIME_TYPE + "=?"; 
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif"); 
    String[] selectionArgsPdf = new String[]{ mimeType }; 

    Cursor gifCursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, COLUMNS_OF_INTEREST, selection,selectionArgsPdf, 
      MediaStore.Images.Media.DATE_ADDED + " DESC"); 

    gifCursor.moveToFirst(); 
    int columnIndexUri = gifCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
    for (int i = 0; i < gifCursor.getCount(); i++) 
     Log.d("gif file uri -> ", gifCursor.getString(columnIndexUri)); 
} 

Я предпочитаю использовать Android LoaderManager.LoaderCallbacks, как это загружает курсор в фоновом режиме, и мы получим результат, когда закончите.

public class GifListManagerImpl implements LoaderManager.LoaderCallbacks<Cursor> { 

Context mContext; 

private static final String[] COLUMNS_OF_INTEREST = new String[] 
{ 
     MediaStore.Video.Media._ID, 
     MediaStore.Video.Media.DATA, 
     MediaStore.Video.Media.DISPLAY_NAME, 
     MediaStore.Video.Media.SIZE, 
     MediaStore.Video.Media.WIDTH, 
     MediaStore.Video.Media.HEIGHT, 
     MediaStore.Video.Media.DATE_ADDED 
}; 

public GifListManagerImpl(Context context) 
{ 
    mContext = context; 
} 

@Override 
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) { 

    String selection = MediaStore.Images.Media.MIME_TYPE + "=?"; 
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif"); 
    String[] selectionArgsPdf = new String[]{ mimeType }; 
    return new CursorLoader(mContext, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, COLUMNS_OF_INTEREST, selection,selectionArgsPdf, 
      MediaStore.Images.Media.DATE_ADDED + " DESC"); 
} 

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { 
    cursor.moveToFirst(); 
    int columnIndexUri = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
    for (int i = 0; i < cursor.getCount(); i++) 
     Log.d("gif file uri -> ", cursor.getString(columnIndexUri)); 

} 

@Override 
public void onLoaderReset(Loader<Cursor> loader) { 

} 
Смежные вопросы