Ich habe ein Problem beim Laden eines Bildes aus der Galerie in meiner Android App. Ich habe etwas Code, der ein Bild im Emulator auswählt. Wenn ich eine Auswahl treffe, wird eine Ausnahme ausgelöst und abgefangen, was bedeutet, dass das Bild nicht geladen wird, aber ich bin mir nicht sicher, wie ich feststellen soll, was passiert.Image kann nicht in ImageView geladen werden
Hier ist meine Java-Code-Datei:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
galleryImage = (ImageView) findViewById(R.id.imageView);
pick_btn = (Button)findViewById(R.id.button);
pick_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i,RESULT_LOAD_IMG);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
Log.i("Image Column Index..", "hoiiii");
assert cursor != null;
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
picturePath = cursor.getString(columnIndex);
cursor.close();
galleryImage.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}catch (Exception e)
{
Toast.makeText(getApplicationContext(),"You haven't picked any image",Toast.LENGTH_LONG).show();
}
}
}
Sie können einige Berechtigungsproblem sein müssen. Deshalb wirft es eine Ausnahme. Können Sie auch Ausnahmeprotokolle hinzufügen? – Passiondroid
1) Überprüfen Sie, ob es Bilder im Emulator gibt? 2) Überprüfen Sie das reale Gerät anstelle des Emulators. 3) Stellen Sie sicher, dass Sie die Berechtigungen android.permission.WRITE_EXTERNAL_STORAGE und android.permission.READ_EXTERNAL_STORAGE in der Manifestdatei angegeben haben. 4) Wenn Ihre Zielversion 23 ist, müssen Sie die Laufzeitberechtigung verwenden, um auf diese zuzugreifen. – Piyush
Haben Sie eine Zugriffsberechtigung für Ihren externen Speicher definiert? – GrIsHu