/* * Copyright 2015 Kevin Liu * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.github.airk.tool.sobitmap.sample; import android.app.Activity; import android.app.ProgressDialog; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; import android.provider.MediaStore; import android.widget.ArrayAdapter; import android.widget.Spinner; import java.util.ArrayList; import java.util.List; /** * Created by kevin on 15/4/8. * <p/> * AsyncTask for loading MediaStore images on device */ public class MediaStoreTask extends AsyncTask<Void, Void, List<String>> { ProgressDialog progressDialog; final Activity activity; final Spinner target; public MediaStoreTask(Activity activity, Spinner target) { this.activity = activity; this.target = target; progressDialog = new ProgressDialog(activity); progressDialog.setCancelable(false); progressDialog.setCanceledOnTouchOutside(false); } @Override protected void onPreExecute() { super.onPreExecute(); progressDialog.show(); } @Override protected void onPostExecute(List<String> strings) { super.onPostExecute(strings); progressDialog.dismiss(); if (strings != null && target != null) { ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_list_item_1, strings); target.setAdapter(adapter); } } @Override protected List<String> doInBackground(Void... params) { List<String> data = new ArrayList<>(); ContentResolver cr = activity.getContentResolver(); Cursor c = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null); if (c != null) { c.moveToFirst(); do { int id = c.getInt(c.getColumnIndex(MediaStore.Images.Media._ID)); Uri u = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, String.valueOf(id)); data.add(u.toString()); } while (c.moveToNext()); c.close(); return data; } else { return null; } } }