разрешение Android-запроса не работает при нажатии кнопки - PullRequest
0 голосов
/ 24 декабря 2018

разрешение запроса 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");
                }
            }
        }
}

}
...