الوصول إلى الصور من تطبيقات الصور في تطبيق Android الخاص بي

StackOverflow https://stackoverflow.com/questions/550905

  •  23-08-2019
  •  | 
  •  

سؤال

تماما مثل iPhone لديه uiimagePickerController للسماح للمستخدم الوصول إلى الصور المخزنة على الجهاز، هل لدينا عنصر تحكم مماثل في Android SDK؟

شكرا.

هل كانت مفيدة؟

المحلول

يمكنك استخدامstartActivityForResult, ، يمر في نية تصف الإجراء الذي تريد إكماله ومصدر البيانات لأداء الإجراء.

لحسن الحظ بالنسبة لك، يتضمن Android إجراء لاختيار الأشياء: Intent.ACTION__PICK ومصدر بيانات تحتوي على صور:android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI للصور على الجهاز المحلي أوandroid.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI للصور على بطاقة SD.

يتصل startActivityForResult تمر في إجراء الاختيار والصور التي تريد أن يختارها المستخدم من هذا النحو:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

ثم تجاوز onActivityResult للاستماع للمستخدم بعد أن قدمت اختيارا.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == SELECT_IMAGE)
    if (resultCode == Activity.RESULT_OK) {
      Uri selectedImage = data.getData();
      // TODO Do something with the select image URI
    } 
}

بمجرد أن يكون لديك الصورة URI، يمكنك استخدامها للوصول إلى الصورة والقيام بكل ما عليك فعله به.

نصائح أخرى

يمكنك أيضا القيام به:

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);

هذا سيختار الصور عبر جميع المخازن.

مجرد تحديث للإجابة المقدمة من ريتو. يمكنك القيام بذلك لتوسيع نطاق الصورة:

private String getPath(Uri uri) {
String[]  data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top