Auswahldialog für Bildquelle

  • Antworten:2
Johannes
  • Forum-Beiträge: 49

16.11.2011, 14:15:32 via Website

hey leute!
also ich hab in meinem App einen selbst erstellten auswahldialog wo der Benutzer auswählen kann ob er das bild von der Kamera oder Gallerie holen möchte! Allerdings hab ich da schonmal was bei nem anderen App gesehn wo das so ausgesehn hat als wenn das system gefragt hätte ob man von kamera oder gallerie wählen möchte... gibts denn sowas??

Antworten
Tobias Eckert
  • Forum-Beiträge: 155

17.11.2011, 10:36:54 via Website

Und hier noch mit Beispielcode:

So startest Du den Intent:
1private final int SELECT_IMAGE = 100;
2Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
3intent.setType("image/*");
4startActivityForResult(intent, SELECT_IMAGE);

Bei diesem Intent kann der Nutzer auswählen ob er einen klassischen Picture Viewer starten möchte (wie z.B. die Gallery), oder einen File Browser. Das Problem ist, dass die Gallery Dir eine content:// URI zurückgibt, während der File-Selektor Dir eine Datei (file://) zurückgibt. Das musst Du dann entsprechend abfangen.

Mit dieser Methode kannst Du die Auswahl behandeln:
1protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
2 super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
3
4 switch(requestCode) {
5 case SELECT_IMAGE:
6 if(resultCode == RESULT_OK){
7 Uri selectedImage = imageReturnedIntent.getData();
8
9 String filePath="";;
10
11 if (selectedImage.toString().contains("content://")) {
12 String[] projection = { MediaStore.Images.Media.DATA };
13 Cursor cursor = managedQuery(selectedImage, projection, null, null, null);
14 int column_index = cursor
15 .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
16 cursor.moveToFirst();
17 filePath=cursor.getString(column_index);
18 cursor.close();
19 }
20 else if (selectedImage.toString().contains("file://")) {
21 filePath=selectedImage.toString().substring(7);
22 }
23
24 //Die Variable filePath enthält jetzt den kompletten Pfad zu Deiner Bilddatei
25 }
26 }
27 }

Ansgar M

Antworten