Last active
October 18, 2016 10:50
-
-
Save crgarridos/6e2bb91b87b078da036c2e9b14196b29 to your computer and use it in GitHub Desktop.
A BaseActivity to manage easily the storage permissions in Android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
abstract public class BaseActivity extends AppCompatActivity { | |
// Storage Permissions variables | |
private static final int REQUEST_CODE_EXTERNAL_STORAGE = 1; | |
private static String[] PERMISSIONS_STORAGE = { | |
Manifest.permission.READ_EXTERNAL_STORAGE, | |
Manifest.permission.WRITE_EXTERNAL_STORAGE | |
}; | |
private Runnable mOnWritePermissionGranted; | |
public void verifyStoragePermissions(Runnable onPermissionGranted) { | |
// Check if we have read or write permission | |
mOnWritePermissionGranted = onPermissionGranted; | |
int writePermission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); | |
int readPermission = ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE); | |
if (writePermission != PackageManager.PERMISSION_GRANTED || readPermission != PackageManager.PERMISSION_GRANTED) { | |
// We don't have permission so prompt the user | |
ActivityCompat.requestPermissions( | |
this, | |
PERMISSIONS_STORAGE, | |
REQUEST_CODE_EXTERNAL_STORAGE | |
); | |
} | |
else | |
callOnWritePermissionGranted(); | |
} | |
@Override | |
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { | |
super.onRequestPermissionsResult(requestCode, permissions, grantResults); | |
if (requestCode == REQUEST_CODE_EXTERNAL_STORAGE) { | |
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |
callOnWritePermissionGranted(); | |
} else { | |
Toast.makeText(this, "Action cancelled", Toast.LENGTH_LONG).show(); | |
} | |
} | |
} | |
private void callOnWritePermissionGranted() { | |
if(mOnWritePermissionGranted != null){ | |
mOnWritePermissionGranted.run(); | |
mOnWritePermissionGranted = null; //reset to prevent future calls issues... | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment