Разрешение записи на карту

По правилам безопасности Android приложение должно запрашивать у пользователя разрешение записи на карту, интернету, контактам и т. д. Но если при запросе доступа приложения к интернету подтверждения от пользователя не требуется, то при запросе к карте памяти это разрешение должен подтвердить пользователь. Если разрешение не будет запрошено или не будет подтверждено, то при обращение к карте памяти вы получите ошибку.

В следующем методе производится проверка наличия разрешения. Это нужно на случай, если пользователь разрешит доступ к карте, а потом зайдет в настройки приложения и отменит своё разрешение. Как вы уже догадались, если это не проверить то произойдет ошибка при обращении к карте памяти.

Если Разрешение записи на карту памяти нет, то запрашиваем его
ActivityCompat.requestPermissions(activity, new String[]
{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Constants
.MY_PERMISSIONS_REQUEST_WRITE);       
Можно ещё повторно обратится к этому же методу permisson и если выход будет, через else то мы будем уверены, что разрешение точно получено, но в этом методе я этого не делаю, т. к. пока пользователь не даст разрешения на запись к карте памяти он будет повторно до бесконечности получать запрос, пока не закроет приложение.

Обратите внимание, что Manifest.permission.WRITE_EXTERNAL_STORAGE получает доступ к карте и на запись и на чтение, если доступ на запись не нужен то можно воспользоваться Manifest.permission.READ_EXTERNAL_STORAGE. И все эти разрешения нужно обязательно прописать в манифесте.

// Разрешение записи на карту памяти

public static void permisson(Context context, Activity activity){
    
// Проверка наличия разрешения записи на карту памяти
    if (ContextCompat.checkSelfPermission(context,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager
.PERMISSION_GRANTED) {
        
// Разрешение не предоставлено
        Toast.makeText(context, "Разрешения на запись нет",
 Toast.LENGTH_LONG).show();
        ActivityCompat.requestPermissions(activity, new String[]
{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Constants
.MY_PERMISSIONS_REQUEST_WRITE);
} 

else {
// Разрешение предоставлено
        Toast.makeText(context, "Разрешение на запись есть",
Toast.LENGTH_LONG).show();
    }
}
Поделись с друзьями:

Оставьте комментарий