Přístupové fotografií z obrázků aplikace v mé aplikace pro Android

hlasů
41

Stejně jako iPhone má UIImagePickerController nechat obrázky uživateli přístup uložené v přístroji, máme podobný ovládací prvek v Android SDK?

Dík.

Položena 15/02/2009 v 14:57
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
83

Můžete použít startActivityForResult, procházející v záměru, který popisuje akci, které chcete vyplněný aa zdroj dat provést nějakou akci.

Naštěstí pro vás, Android obsahuje akci pro sběr věci: Intent.ACTION__PICKa zdroj dat obsahující snímky: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URIpro obrázky v místním zařízení nebo android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URIpro snímků na SD kartě.

Zavolat startActivityForResultpředáním akce pick a obrazů, které chcete uživateli vybrat z takto:

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

Pak přepsat onActivityResultk poslechu pro uživatele, který učinil nabídku.

@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
    } 
}

Jakmile budete mít obraz Uri můžete použít pro přístup k obrazu a dělat, co je třeba udělat s ním.

Odpovězeno 15/02/2009 v 17:26
zdroj uživatelem

hlasů
22

Můžete si také udělat:

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

To bude vybírat obrázky ve všech zásobníků.

Odpovězeno 08/10/2011 v 13:10
zdroj uživatelem

hlasů
1

Jen aktualizace na odpověď od Reto. Dalo by se to měřítko obrázku:

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);
}
Odpovězeno 30/01/2013 v 14:46
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more