【发布时间】:2013-09-10 04:28:34
【问题描述】:
更新 Logcat 和 Java 代码。
您好,我想从 sd 卡上的指定文件夹中获取所有图像 ID、完整路径。
这是我的代码。
private void Gallery() {
ImageList = new ArrayList<GalleryDetail>();
final String[] columns = { MediaStore.Images.Media.DATA,
MediaStore.Images.Media._ID };
Cursor image_cursor;
image_cursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
new String[] {currentDir.toString()}, null);
if (image_cursor != null) {
while (image_cursor.moveToNext()) {
GalleryDetail img = new GalleryDetail();
String image_id = image_cursor.getString(image_cursor
.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
String image_path = image_cursor.getString(image_cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
Log.e("get Path.", image_path);
img.setImageId(image_id);
img.setImagePath(image_path);
ImageList.add(img);
}
// List of file path
FilePathStrings = new String[ImageList.size()];
for (int i = 0; i < ImageList.size(); i++) {
FilePathStrings[i] = ImageList.get(i).getImagePath();
}
}
}
但这对我不起作用,并且 log cat 向我显示此消息。
09-11 11:17:21.698:E/AndroidRuntime(1204):致命异常:AsyncTask #1 09-11 11:17:21.698: E/AndroidRuntime(1204): java.lang.RuntimeException: 执行 doInBackground() 时发生错误 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.os.AsyncTask$3.done(AsyncTask.java:200) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.util.concurrent.FutureTask.setException(FutureTask.java:125) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.lang.Thread.run(Thread.java:1019) 09-11 11:17:21.698:E/AndroidRuntime(1204):原因:android.database.sqlite.SQLiteException:绑定或列索引超出范围:句柄 0x2475a8 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.content.ContentProviderProxy.query(ContentProviderNative.java:366) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.content.ContentResolver.query(ContentResolver.java:262) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.app.Activity.managedQuery(Activity.java:1644) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 com.mimi.ngsbusproject.GalleryActivity.Gallery(GalleryActivity.java:166) 09-11 11:17:21.698: E/AndroidRuntime(1204): at com.mimi.ngsbusproject.GalleryActivity.access$0(GalleryActivity.java:159) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 com.mimi.ngsbusproject.GalleryActivity$LoadGallery.doInBackground(GalleryActivity.java:85) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 com.mimi.ngsbusproject.GalleryActivity$LoadGallery.doInBackground(GalleryActivity.java:1) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 android.os.AsyncTask$2.call(AsyncTask.java:185) 09-11 11:17:21.698: E/AndroidRuntime(1204): 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 09-11 11:17:21.698: E/AndroidRuntime(1204): ... 4 更多
请帮忙。我该如何解决这个问题?
对不起,我的语言技能很差。在此先感谢 :)
【问题讨论】:
-
你在哪里初始化
ImageList? -
在这里发布你的 logcat..在哪一行得到 nullPointer
-
嗨,对不起,我忘记复制给你看。现在我被编辑了。
标签: android sd-card mediastore