それでも、これらは私の問題を解決しなかったので、新しい質問を投稿しています。
これは、写真アプリで選択された画像のパスを取得するための私のコードです。しかし、私はcursor.getColumnIndexOrThrow(column);を取得していません。値を0に、cursor.getString(column_index) 値をnullにします。
Cursor cursor = null;
final String column = "_data";
final String[] projection = {
column
};
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} finally {
if (cursor != null)
cursor.close();
}
誰でもこの問題を解決するのを手伝ってくれますか? 私の質問が広すぎる場合は、お知らせください。質問を更新します。
更新: 開始意図:
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, getString(R.string.selectPhoto)), RESULT_LOAD_IMAGE);
onActivityResult で:
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentURI, projection, null, null, null);
if (cursor == null) {
return contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(projection[0]);
return cursor.getString(idx);
}
}
よろしく