Use Run time permission for Android Version 6.0.0 and more
 Click here for more information
    public boolean isStoragePermissionGranted() {
                if (Build.VERSION.SDK_INT >= 23) {
                    if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)
                            == PackageManager.PERMISSION_GRANTED) {
                        Log.v("======>", "Permission is granted");
                        return true;
                    } else {
                        Log.v("======>", "Permission is revoked");
    //1 is request code
                        ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
                        return false;
                    }
                } else { //permission is automatically granted on sdk<23 upon installation
                    Log.v("======>", "Permission is granted");
                    return true;
                }
            }
            @Override
            public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                                   int[] grantResults) {
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                switch (requestCode) {
    //1 is request code
                    case 1: {
                        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                            Log.v("======>", "Permission: " + permissions[0] + "was " + grantResults[0]);
                            openFileAttachDialog();
                        }
                    return;
                    }
                }