use this class :
public class permissionModule {
final public static int STORAGE_PERMISSION_CODE = 23;
private Activity activity;
public permissionModule(Activity activity) {
    this.activity = activity;
}
public void startGetPermission(){
    if (isStorageReadable()){
        Toast.makeText(activity,"you Already have the permission to access storage",Toast.LENGTH_SHORT).show();
    }else {
        requestStoragePermission();
    }
}
private void requestStoragePermission() {
    ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);
}
private boolean isStorageReadable() {
    int result = ContextCompat.checkSelfPermission(activity, 
Manifest.permission.READ_EXTERNAL_STORAGE);
        return result == PackageManager.PERMISSION_GRANTED;
    }
}
and in your activity call :
new permissionModule(MainActivity.this).startGetPermission();
finally for result , override this in your activity :
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == permissionModule.STORAGE_PERMISSION_CODE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Snackbar permissionWarning = Snackbar.make(rootLayout, "tnk", Snackbar.LENGTH_INDEFINITE);
            permissionWarning.setAction("ok", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //...
                }
            });
            permissionWarning.show();
        } else {
            boolean showRationale = shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE);
            if (showRationale) {
                Snackbar permissionWarning = Snackbar.make(rootLayout, "Permission Required to access storage", Snackbar.LENGTH_INDEFINITE);
                permissionWarning.setAction("ok", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //requestStoragePermission();
                    }
                });
                permissionWarning.show();
            } else {
                Snackbar snackbar = Snackbar.make(rootLayout, "you denied the permission for ever pleas fix it in setting", Snackbar.LENGTH_INDEFINITE);
                snackbar.setAction("setting", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent();
                        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                        Uri uri = Uri.fromParts("package", MainActivity.this.getPackageName(), null);
                        intent.setData(uri);
                        MainActivity.this.startActivity(intent);
                    }
                });
                snackbar.show();
            }
        }
    }
}