- Forum-Beiträge: 7
08.06.2017, 21:00:12 via Website
08.06.2017 21:00:12 via Website
Mein Layout sieht folgendermaßen aus:
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:text="Upload Image"
android:onClick="**onClickUpload**"
android:layout_marginBottom="30dp" />
<ImageView
android:id="@+id/imgPicker"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="15dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:onClick="**onClickShow**"
app:srcCompat="@android:color/holo_orange_dark" />
Mein Ziel: über den Button kommt der User zu seiner Image Gallery und kann ein Foto auswählen. Das wird dann im internen Speicher unter einem bestimmten Dateinamen abgelegt.
Wenn der Nutzer dann auf den ImageView drückt, soll das zuvor abgespeicherte Image die Bitmap Resource des ImageViews ersetzen und dem User angezeigt werden.
Upload:
public void onClickUpload(View view) {
startActivityForResult(new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), GET_FROM_GALLERY);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Detects request codes
if(requestCode==GET_FROM_GALLERY && resultCode == Activity.RESULT_OK) {
Uri selectedImage = data.getData();
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,"profile.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
directory.getAbsolutePath();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Bitmap ersetzen:
public void onClickImage (View view)
{
String p = getFilesDir().toString();
String path = p+"/imageDir/";
try {
File f=new File(path, "profile.jpg");
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
ImageView img=(ImageView)findViewById(R.id.imgPicker);
img.setImageBitmap(b);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
Kann mir vielleicht wer sagen was ich falsch mache? Ich weiß leider auch absolut nicht wie ich auf meinem Emulator Bilder zur Gallerie hinzufügen kann und wenn ich die App über das Android Phone laufen lass, kann ich mir (meine ich zumindest) keine Fehlermeldungen anzeigen lassen. Das macht das ganze noch etwas schwieriger.
Freu mich auf euren Rat
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.