ContentResolverで画像を取得する方法

2019年6月12日

ContentResolverとは

ContentResolverは音声や画像、動画等のファイルを端末で自動認識して、それらの情報を抽出してくれる機能です。

この機能を使えば端末内に保存されている画像や音声等のファイルを全て取り出すことが可能です。

 

 

ContentResolverの使用方法

ここでは例としてSDカード内に保存されている画像を取得する方法をコードで記載致します。

public class MainActivity extends Activity 
{
private final String LOG_TAG = "MainActivity : ";
    
    @Override
protected void onCreate(Bundle savedInstanceState) 
    {
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        searchExternalImages();
    }
/**SDカード内のすべての画像のパス名と名前をログ表示する。*/
private void searchExternalImages()
    {
        ContentResolver cr = getContentResolver();
        
        String[] projection = 
        { 
            MediaStore.Images.Media.DATA,
            MediaStore.Images.Media.DISPLAY_NAME
        };
//ファイルのパスと名前
        Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
                    projection, null, null, null);
if(cursor == null)
return;
int pathIndex = cursor.getColumnIndex(
                MediaStore.Images.Media.DATA);
int nameIndex = cursor.getColumnIndex(
                MediaStore.Images.Media.DISPLAY_NAME);
        
        cursor.moveToFirst();
while(!cursor.isAfterLast()){
            Log.i(LOG_TAG, "画像パス = " + cursor.getString(pathIndex));
            Log.i(LOG_TAG, "画像名 = " + cursor.getString(nameIndex));
            cursor.moveToNext();
        }
    }
}