разрешение запроса Android не работает при нажатии кнопки в первый раз.Снова нажмите кнопку, она не создает папку во внешнем хранилище.Я выхожу из приложения, а затем возвращаюсь в приложение, оно работает после нажатия кнопки и создания папки во внешней.в первый раз Log name and name_ = null
.возврат в приложение, Log name = null & name_ = william
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String name = xxxx; // select name from External Storage
if (name != null) {
Log.e("name", name);
} else {
Log.e("name", "name_null");
}
findViewById(R.id.btn_send).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isPermissionGranted()) {
action();
}
}
});
}
public boolean isPermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Log.e("TAG", "Permission is granted");
return true;
} else {
Log.e("TAG", "Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return false;
}
} else {
Log.e("TAG", "Permission is granted");
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getApplicationContext(), "Permission granted", Toast.LENGTH_SHORT).show();
action();
} else {
Toast.makeText(getApplicationContext(), "Permission denied", Toast.LENGTH_SHORT).show();
}
return;
}
}
}
private void action() {
// retorfit api here
@Override
public void onResponse(@NonNull Call<User> call, @NonNull Response<User> response) {
if (response.body() != null && response.isSuccessful()) {
// save name into External Storage (response.body().getName())
// after save, when i log
String name = xxxx; // select name from External Storage
if (name != null) {
Log.e("name_", name);
} else {
Log.e("name_", "name_null");
}
}
}
}
}