onRequestPermissionsResult автоматически дает отрицательный ответ при запросе разрешения
Я пытаюсь получить ответ от разрешения "WRITE_EXTERNAL_STORAGE" через onRequestPermissionsResult и все бы ничего но пользователь ничего не выбрал а уже сработал ответ NO .(Так только первый раз ) потом все работает как нужно .
public class MainActivity2_3 extends AppCompatActivity {
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2_3);
}
public void onClick_download(View v) {
if (ActivityCompat.checkSelfPermission(MainActivity2_3.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(MainActivity2_3.this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
// Здесь thisActivity - текущая активность.
if (ContextCompat.checkSelfPermission(MainActivity2_3.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// Разрешение не предоставляется
// Должны ли мы показать объяснение?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity2_3.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// показать объяснение пользователю * асинхронно * - не блокировать
// эта тема ждет ответа пользователя! После пользователя
// видит объяснение, попробуйте еще раз запросить разрешение.
} else {
// Объяснение не требуется; запросить разрешение
ActivityCompat.requestPermissions(MainActivity2_3.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_EXTERNAL_STORAGE);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS является
// определенная в приложении константа int Метод обратного вызова получает
// результат запроса.
}
} else {
// Разрешение уже предоставлено
}
}
else
{
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_EXTERNAL_STORAGE: {
// Если запрос отменен, результирующие массивы пусты.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// разрешение было предоставлено, Сделать
// связанное с контактами задание, которое вам нужно сделать.
Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_LONG ).show();
} else {
// разрешение отклонено, Отключить
// функциональность, которая зависит от этого разрешения.
Toast.makeText(getApplicationContext(), "NO", Toast.LENGTH_LONG ).show();
}
return;
}
// другие строки 'case' для проверки других
// разрешения это приложение может запросить.
}
}
}