У нас есть приложение, в котором в какой-то момент мы хотим сохранить картинку.Мы реализовали методы, чтобы запросить разрешение.
На моем устройстве (Galaxy S9, обновление новостей) все работает нормально.Он запрашивает разрешение и сохраняет изображение.И устройство (Galaxy A7) моего gf тоже.
На других устройствах не запрашивает разрешения и поэтому не сохраняет картинку.Я уже несколько раз удалял приложение, чтобы убедиться, что на моем телефоне еще нет разрешений.
addPicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
if (ContextCompat.checkSelfPermission(adding.this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
picintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
picintent.putExtra(MediaStore.EXTRA_OUTPUT, picuri);
startActivityForResult(picintent, cameracode);
} else {
requestStoragePermission();
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
picintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
picintent.putExtra(MediaStore.EXTRA_OUTPUT, picuri);
startActivityForResult(picintent, cameracode);
}} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Kamera nicht unterstützt", Toast.LENGTH_SHORT).show();
}
}
});
private void requestStoragePermission(){
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)){
new AlertDialog.Builder(this)
.setTitle("Berechtigung benötigt")
.setMessage("Diese Bereichtigunjg wird zum speichern des Bildes benötigt")
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(adding.this,new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);
}
})
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create().show();
}else {
ActivityCompat.requestPermissions(this,new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == STORAGE_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "Berechtigung erteilt", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Berechtigung nicht erteilt", Toast.LENGTH_SHORT).show();
}
}
};