Entferne die Zeile: bildfile.mkdirs(); und lösche den Ordner "bild.png" vom Gerät.
Berechtigungen für eine App die ein Foto macht und anzeigt
-
-
Benutze bildfile. createNewFile() dafür.
Aber mal ehrlich das hat nicht viel mit android zu tun sondern ist reines Java.
Das erstellen von Ordnern, Dateien, Schreiben u lesen in Datein solltest du eigentlich bringen und kennen. Ansonsten schau dir das noch mal bei Java an -
Wenn ich da bildfile.createNewFile() einesetze kommt der Fehler Unhandled Exception:java.io.IOException. Und dann scheu ich mir das mit den Ordnern lieber nochmal an.
-
Hi läuft den deine App jetzt?
-
so das solte laufen.
nur wnn du ein zweites bild machen willst soltest du voher die datei löschen und wieder erstellen.
Java
Alles anzeigenpublic class AalBild extends AppCompatActivity { Button btn1; ImageView iv1; Intent bildintent; int RQ = 45; int RQ2 =23; int RQ3 =22; File bildfile; Uri bilduri; int Kameracode = 15; Bitmap bm1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_aal_bild); if (ContextCompat.checkSelfPermission(AalBild.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){ if1(); }else { ActivityCompat.requestPermissions(AalBild.this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},RQ); } File dir = new File(Environment.getExternalStorageDirectory(), "FotoApp"); dir.mkdirs(); bildfile = new File(dir, "bild.png"); try { bildfile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } bilduri = Uri.fromFile(bildfile); StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); btn1 = (Button) findViewById(R.id.btn2); iv1 = (ImageView) findViewById(R.id.imageView4); if (bildfile.exists()){ bm1 = BitmapFactory.decodeFile(bildfile.getAbsolutePath()); iv1.setImageBitmap(bm1); } btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { foto(); } }); } private void if1(){ if (ActivityCompat.checkSelfPermission(AalBild.this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){ if2(); }else { ActivityCompat.requestPermissions(AalBild.this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE},RQ2); } } protected void if2(){ if (ActivityCompat.checkSelfPermission(AalBild.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED){ }else{ ActivityCompat.requestPermissions(AalBild.this, new String[] {Manifest.permission.CAMERA},RQ3); } } private void foto(){ try{ bildintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); bildintent.putExtra(MediaStore.EXTRA_OUTPUT, bilduri); startActivityForResult(bildintent, Kameracode); }catch(Exception e) { e.printStackTrace(); Toast.makeText(getApplicationContext(), "Kamera nicht unterstützt!", Toast.LENGTH_SHORT).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK){ if(requestCode == Kameracode){ Toast.makeText(getApplicationContext(), "Bild gespeichert unter: " + bildfile.getAbsolutePath(), Toast.LENGTH_SHORT).show(); bm1 = BitmapFactory.decodeFile(bildfile.getAbsolutePath()); iv1.setImageBitmap(bm1); } } super.onActivityResult(requestCode, resultCode, data); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == RQ && grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && requestCode == RQ2 && grantResults.length >0 && grantResults[0] ==PackageManager.PERMISSION_GRANTED && requestCode == RQ3 && grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ } } }
-
Vielen Dank jetzt funktioniert es:D
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!