startActivityForResult と onActivityResult を別々に呼び出す 2 つのボタンがあります。1 つ目は連絡先ピッカー、2 つ目は画像ピッカーです。最初のものは正しく動作し、必要に応じて適切な連絡先番号を編集テキストに返します。2 番目は正常に開始され、ギャラリーから画像を選択できますが、画像が imagview に返されません。最初のデータからデータを返そうとしていると思いますが、最初のデータと2番目のデータを区別する方法がわかりません。私はアンドロイドに不慣れで、まだ学んでおり、間違いを犯しています。どこでどのように間違ったのかについての助けをいただければ幸いです。問題の私のコードは以下です。
Button.OnClickListener buttonClickListener3 = new Button.OnClickListener() {
public void onClick(View contact) {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 1);
}};
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor cur = managedQuery(contactData, null, null, null, null);
ContentResolver contect_resolver = getContentResolver();
if (cur.moveToFirst()) {
String id = cur.getString(cur.getColumnIndexOrThrow(BaseColumns._ID));
String name = "";
String no = "";
Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
if (phoneCur.moveToFirst()) {
name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
Log.e("Phone no & name :***: ", name + " : " + no);
txt.append(name + " : " + no + "/n");
id = null;
name = null;
no = null;
phoneCur = null;
}
contect_resolver = null;
cur = null;
}
}
Button.OnClickListener buttonClickListener4 = new Button.OnClickListener() {
public void onClick(View ChoosePictureButton) {
Intent choosePictureIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(choosePictureIntent, 2);
}};
public void onActivityResult2(int requestCode2, int resultCode2, Intent intent) {
super.onActivityResult(requestCode2, resultCode2, intent);
if (resultCode2 == RESULT_OK) {
Uri imageFileUri = intent.getData();
try {
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri), null, bmpFactoryOptions);
bmpFactoryOptions.inSampleSize = 2;
bmpFactoryOptions.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(
imageFileUri), null, bmpFactoryOptions);
ChosenImageView.setImageBitmap(bmp);
} catch (FileNotFoundException e) {
Log.v("ERROR", e.toString());
}
}
}