B
Binbose
Ambitioniertes Mitglied
- 0
Hallo Leute,
ich versuche mich momentan daran, ein Profilbild in meine App zu implementieren. Man soll das Bild aus der Gallerie des Smartphones auswählen können. Dazu haben ich im Internet diesen Code-Snippet gefunden:
Der Dialog zum Auswählen eines Bildes öffnet sich auch Prima, aber
jetzt habe ich 3 Probleme.
1. Wenn ich ein Bild auswähle (aus der emulierten Gallerie) und selectedImagePath zur Probe mit System.out.println oder Log ausgeben lasse,
dann sürzt die App jedesmal ab. Dabei ist es selcetedImagePath ja eigentlich ein String und müsste damit gehen, oder verpasse ich da was?
2.Wie kann ich das Bild auf das der Path zeigt dann in einem eigenen Dateisystem abspeichern und in einer ImageView
anzeigen lassen? Ich bin in dem Thema leider überhaupt nicht drin, vlt. habt ihr für sowas ja einen schönen Beispielcode oder ein gutes Tutorial
(habe leider nichts passendes bei Google gefunden)
3. Würdet ihr das überhaupt so machen für ein Profilbild oder wähle ich da schon den falschen Ansatz?^^
danke schonmal im Vorraus für eure Hilfe,
mfg Binbose
ich versuche mich momentan daran, ein Profilbild in meine App zu implementieren. Man soll das Bild aus der Gallerie des Smartphones auswählen können. Dazu haben ich im Internet diesen Code-Snippet gefunden:
Code:
public class BrowsePictureActivity extends Activity {
// this is the action code we use in our intent,
// this way we know we're looking at the response from our own action
private static final int SELECT_PICTURE = 1;
private String selectedImagePath;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button) findViewById(R.id.Button01))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// in onCreate or any event where your want the user to
// select a file
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data){
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
}
}
}
/**
* helper to retrieve the path of an image URI
*/
public String getPath(Uri uri) {
// just some safety built in
if( uri == null ) {
// TODO perform some logging or show user feedback
return null;
}
// try to retrieve the image from the media store first
// this will only work for images selected from gallery
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
if( cursor != null ){
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
// this is our fallback here
return uri.getPath();
}
}
jetzt habe ich 3 Probleme.
1. Wenn ich ein Bild auswähle (aus der emulierten Gallerie) und selectedImagePath zur Probe mit System.out.println oder Log ausgeben lasse,
dann sürzt die App jedesmal ab. Dabei ist es selcetedImagePath ja eigentlich ein String und müsste damit gehen, oder verpasse ich da was?
2.Wie kann ich das Bild auf das der Path zeigt dann in einem eigenen Dateisystem abspeichern und in einer ImageView
anzeigen lassen? Ich bin in dem Thema leider überhaupt nicht drin, vlt. habt ihr für sowas ja einen schönen Beispielcode oder ein gutes Tutorial
(habe leider nichts passendes bei Google gefunden)
3. Würdet ihr das überhaupt so machen für ein Profilbild oder wähle ich da schon den falschen Ansatz?^^
danke schonmal im Vorraus für eure Hilfe,
mfg Binbose