コンテンツ プロバイダーを介して電話の画像/メディアにアクセスするためのサンプル コードまたはチュートリアルが必要ですか?
私は次のことを知っています。次は何ですか?
ContentResolver cr = mContext.getContentResolver();
Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
コンテンツ プロバイダーを介して電話の画像/メディアにアクセスするためのサンプル コードまたはチュートリアルが必要ですか?
私は次のことを知っています。次は何ですか?
ContentResolver cr = mContext.getContentResolver();
Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
ユーザーのデバイスからすべての画像パスを収集するヘルパー クラスを作成しました。必要に応じて使用できます。参考までに、画像の読み込みが遅い場合があるので、バックグラウンド スレッドまたはローダー経由で読み込むとよいでしょう。
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import java.util.ArrayList;
/**
* @author hendrawd on 10/26/16
*/
public class ImagePathProvider {
/**
* Getting All Images Path.
*
* @param context the activity
* @return ArrayList with images Path
*/
public static ArrayList<String> getAllImagesPath(Context context) {
ArrayList<String> listOfAllImages = new ArrayList<>();
listOfAllImages.addAll(getExternalImagesPath(context));
listOfAllImages.addAll(getInternalImagesPath(context));
return listOfAllImages;
}
/**
* Getting All External Images Path.
*
* @param context the context
* @return ArrayList with external images Path
*/
private static ArrayList<String> getExternalImagesPath(Context context) {
return getImagesPathFromUri(context, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
/**
* Getting All Internal Images Path.
*
* @param context the context
* @return ArrayList with internal images Path
*/
private static ArrayList<String> getInternalImagesPath(Context context) {
return getImagesPathFromUri(context, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
}
private static ArrayList<String> getImagesPathFromUri(Context context, Uri uri) {
Cursor cursor;
int column_index_data;
ArrayList<String> listOfAllImages = new ArrayList<>();
String absolutePathOfImage;
String[] projection = {MediaStore.MediaColumns.DATA, MediaStore.Images.Media.BUCKET_DISPLAY_NAME};
cursor = context.getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) {
column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
while (cursor.moveToNext()) {
absolutePathOfImage = cursor.getString(column_index_data);
listOfAllImages.add(absolutePathOfImage);
}
cursor.close();
}
return listOfAllImages;
}
}