Frage

Genau wie das iPhone einen UIImagePickerController hat der Benutzer Zugriff Bilder auf dem Gerät gespeichert zu lassen, haben wir eine ähnliche Kontrolle im Android SDK haben?

Danke.

War es hilfreich?

Lösung

Sie können usestartActivityForResult, in einer Intent vorbei, die eine Aktion beschreibt, die Sie abgeschlossen werden sollen und und Datenquelle auf die Aktion auszuführen.

Zum Glück für Sie, enthält Android eine Aktion für die Kommissionierung Dinge: Intent.ACTION__PICK und eine Datenquelle mit Bildern: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI für Bilder auf dem lokalen Gerät oder android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI für Bilder auf der SD-Karte.

Anrufweitergabe startActivityForResult in der Aufnahmeaktion und die Bilder möchten Sie den Benutzer aus, so wählen:

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

Dann onActivityResult außer Kraft setzen zu hören für den Benutzer eine Auswahl getroffen zu haben.

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

Wenn Sie das Bild Uri haben, können Sie es verwenden, um das Bild für den Zugriff auf und tun, was Sie brauchen, damit zu tun.

Andere Tipps

Sie können auch tun:

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

Dies wird Bilder in allen Speichern wählen.

Nur ein Update auf die Antwort von Reto gegeben. Sie können dies tun, um das Bild zu skalieren:

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top