Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Android Mediastore加载.gif图像_Android_Image_Gif_Mediastore - Fatal编程技术网

如何从Android Mediastore加载.gif图像

如何从Android Mediastore加载.gif图像,android,image,gif,mediastore,Android,Image,Gif,Mediastore,我需要加载到一个自定义画廊视图几个GIF。 使用mediastore只能为我提供png/jpg图像类型。 在谷歌搜索了几个小时后,我仍然找不到答案 我用于从mediastore加载图像的代码是: final String sortOrder = mPreferences.getSortMode(); final Uri uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String

我需要加载到一个自定义画廊视图几个GIF。 使用mediastore只能为我提供png/jpg图像类型。 在谷歌搜索了几个小时后,我仍然找不到答案

我用于从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

确保媒体商店扫描包含GIF的目录,以便通过内容提供商检索其内容

有关详细信息,请查看此链接:

确保媒体商店扫描包含GIF的目录,以便通过内容提供商检索其内容

有关详细信息,请查看此链接:

使用
String mimeType=MimeTypeMap.getSingleton().getMimeTypeFromExtension(“gif”)

实例

String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
从这里开始。

使用
String mimeType=MimeTypeMap.getSingleton().getMimeTypeFromExtension(“gif”)

实例

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

从这个答案来看。

这给出了完美的结果

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));
}
private static final String[]感兴趣的列=new String[]
{
MediaStore.Video.Media.\u ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY\u名称,
MediaStore.Video.Media.SIZE,
MediaStore.Video.Media.WIDTH,
MediaStore.Video.Media.HEIGHT,
添加了MediaStore.Video.Media.DATE\u
};
public void printGifUri(上下文)
{
ContentResolver cr=context.getContentResolver();
字符串选择=MediaStore.Images.Media.MIME_TYPE+“=?”;
字符串mimeType=MimeTypeMap.getSingleton().getMimeTypeFromExtension(“gif”);
字符串[]selectionArgsPdf=新字符串[]{mimeType};
Cursor gifCursor=cr.query(MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI、感兴趣的列、选择、selectionargsfd、,
MediaStore.Images.Media.DATE_已添加+“DESC”);
gifCursor.moveToFirst();
int columnIndexUri=gifCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
对于(int i=0;i”,gifCursor.getString(columnIndexUri));
}
我更喜欢使用Android,因为这会在后台加载光标,完成后我们会得到结果

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) {

}
公共类GifListManagerImpl实现LoaderManager.LoaderCallbacks{
语境;
私有静态最终字符串[]列\u兴趣=新字符串[]
{
MediaStore.Video.Media.\u ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY\u名称,
MediaStore.Video.Media.SIZE,
MediaStore.Video.Media.WIDTH,
MediaStore.Video.Media.HEIGHT,
添加了MediaStore.Video.Media.DATE\u
};
公共GifListManagerImpl(上下文)
{
mContext=上下文;
}
@凌驾
公共加载器onCreateLoader(inti,Bundle){
字符串选择=MediaStore.Images.Media.MIME_TYPE+“=?”;
字符串mimeType=MimeTypeMap.getSingleton().getMimeTypeFromExtension(“gif”);
字符串[]selectionArgsPdf=新字符串[]{mimeType};
返回新的游标装入器(mContext、MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI、感兴趣的列、选择、SelectionArcGSPDF、,
MediaStore.Images.Media.DATE_已添加+“DESC”);
}
@凌驾
public void onLoadFinished(加载器,光标){
cursor.moveToFirst();
int columnIndexUri=cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
对于(int i=0;i”,cursor.getString(columnIndexUri));
}
@凌驾
公共void onLoaderReset(加载器){
}

这给出了完美的结果

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));
}
private static final String[]感兴趣的列=new String[]
{
MediaStore.Video.Media.\u ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY\u名称,
MediaStore.Video.Media.SIZE,
MediaStore.Video.Media.WIDTH,
MediaStore.Video.Media.HEIGHT,
添加了MediaStore.Video.Media.DATE\u
};
public void printGifUri(上下文)
{
ContentResolver cr=context.getContentResolver();
字符串选择=MediaStore.Images.Media.MIME_TYPE+“=?”;
字符串mimeType=MimeTypeMap.getSingleton().getMimeTypeFromExtension(“gif”);
字符串[]selectionArgsPdf=新字符串[]{mimeType};
Cursor gifCursor=cr.query(MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI、感兴趣的列、选择、selectionargsfd、,
MediaStore.Images.Media.DATE_已添加+“DESC”);
gifCursor.moveToFirst();
int columnIndexUri=gifCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
对于(int i=0;i”,gifCursor.getString(columnIndexUri));
}
我更喜欢使用Android,因为这会在后台加载光标,完成后我们会得到结果

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) {

}
公共类GifListManagerImpl实现LoaderManager.LoaderCallbacks{
语境;
私有静态最终字符串[]列\u兴趣=新字符串[]
{
MediaStore.Video.Media.\u ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY\u名称,
MediaStore.Video.Media.SIZE,
MediaStore.Video.Media.WIDTH,
MediaStore.Video.Media.HEIGHT,
添加了MediaStore.Video.Media.DATE\u
};
公共GifListManagerImpl(上下文)
{
mContext=上下文;
}
@凌驾
公共加载器onCreateLoader(inti,Bundle){
字符串选择=MediaStore.Images.Media.MIME_TYPE+“=?”;
字符串mimeType=MimeTypeMap.getSingleton().getMimeTypeFromExtension(“gif”);
字符串[]selectionArgsPdf=新字符串[]{mimeType};
返回新的游标装入器(mContext、MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI、感兴趣的列、选择、SelectionArcGSPDF、,
MediaStore.Images.Media.DATE_已添加+“DESC”);
}
@凌驾
public void onLoadFinished(加载器,光标){
cursor.moveToFirst();
int columnIndexUri=cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
对于(int i=0;i<光标)。