Folgendes problem:
Ich hole Fotos aus der Gallerie und die werden auch sofort angezeigt.
Beim zweiten Versuch werden die Fotos nicht mehr angezeigt. Erst wenn ich über Einstellungen die Dateifreigabe für die APP einschalte.
Ich würde es besser finden, wenn ich bei dem Versuch der Anzeige wenigstens nach der Berechtigung gefragt werde !
Was muss ich dazu noch wo eintragen ? Muss ich eventuell beim rotatebitmap die permissions noch mal abfragen ?
Manifest
Code
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
Alles anzeigen
Anzeige:
Code
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
name1 = c1.getString(0); // Foto Dateiverzeichnis
bitmap = BitmapFactory.decodeFile(name1);
bitmap = rotateBitmap(bitmap, name1);
bitmapGallery = bitmap;
foto_image1.setImageBitmap(bitmap); // im Layout anzeigen
} else {
ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, 100);
name1 = c1.getString(0);
try {
bitmap = BitmapFactory.decodeFile(name1);
bitmapGallery = bitmap;
bitmap = rotateBitmap(bitmap, name1);
foto_image1.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
public Bitmap rotateBitmap(Bitmap input, String path) {
Bitmap returnBitmap = input;
int orientation = 0;
try {
ExifInterface exif = new ExifInterface(path);
int rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
int rotationInDegrees = exifToDegrees(rotation);
Matrix matrix = new Matrix();
if (rotation != 0f) {
matrix.preRotate(rotationInDegrees);
}
rotatedBitmap = Bitmap.createBitmap(input, 0, 0,
input.getWidth(), input.getHeight(), matrix, true);
returnBitmap = rotatedBitmap;
} catch (IOException e) {
e.printStackTrace();
}
return returnBitmap;
}
Alles anzeigen