画像作成時のContentResolverの更新

ContentResolverは端末にインストールされている画像や音声や動画ファイルをまとめて調べるために使われるクラスです。

このクラスを使えば画像ファイルだけを調べたりなどメディアファイルの検索に便利です。

ただし、ContentResolverは端末の起動時に更新されるので端末起動中に追加した画像は再起動するまでContentResolverには認識されません。

そこで画像などのメディアファイルを作成してからその情報を更新させるには次のようなコードを書きます。

public class MainActivity extends Activity 
{

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        String externalPath = getExternalStorageDirectory().getAbsolutePath();
        File imageFile = new File(externalPath, "empty_image.png");
            //空の画像ファイルの作成
        
        /*画像ファイルを作る処理(省略)*/
        
        String imagePath = imageFile.getAbsolutePath();
        String imageName = imageFile.getName();
        String imageTitle = imageName.substring(0, imageName.indexOf("."));
        
        ContentResolver cr = getContentResolver();
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.ImageColumns.DATA, imagePath);
            //画像パス
        values.put(MediaStore.Images.ImageColumns.DISPLAY_NAME, imageName);
            //拡張子を含む画像名
        values.put(MediaStore.Images.ImageColumns.> TITLE, imageTitle);
            //拡張子抜きの画像名
        values.put(MediaStore.Images.ImageColumns.SIZE, imageFile.length());
            //ファイルの大きさ
        values.put(MediaStore.Images.ImageColumns.MIME_TYPE, mimeType);
            //マイムタイプ
        values.put(MediaStore.Images.ImageColumns.DATE_TAKEN, System.currentTimeMillis());
            //ファイルが作られた時間(ミリ秒)
        cr.insert(Images.Media.EXTERNAL_CONTENT_URI, values);
            //画像情報を追加
    }
}

ContentValuesに画像名や画像パスなどの必要な情報を書き込んで、それをContentResolverクラスのinsertメソッドで追加しています。

関連項目
プライバシーポリシー