Documenting the findings for future reference:
The following are code from
RANGE
Also,
see: http://stackoverflow.com/questions/33331073/android-what-to-choose-for-requestcode-values
The following are code from
android.support.v4.app.FragmentActivity
/**
* Modifies the standard behavior to allow results to be delivered to fragments.
* This imposes a restriction that requestCode be <= 0xffff.
*/
@Override
public void startActivityForResult(Intent intent, int requestCode) {
if (requestCode != -1 && (requestCode&0xffff0000) != 0) {
throw new IllegalArgumentException("Can only use lower 16 bits for requestCode");
}
super.startActivityForResult(intent, requestCode);
}
@Override
public final void validateRequestPermissionsRequestCode(int requestCode) {
// We use 8 bits of the request code to encode the fragment id when
// requesting permissions from a fragment. Hence, requestPermissions()
// should validate the code against that but we cannot override it as
// we can not then call super and also the ActivityCompat would call
// back to this override. To handle this we use dependency inversion
// where we are the validator of request codes when requesting
// permissions in ActivityCompat.
if (mRequestedPermissionsFromFragment) {
mRequestedPermissionsFromFragment = false;
} else if ((requestCode & 0xffffff00) != 0) {
throw new IllegalArgumentException("Can only use lower 8 bits for requestCode");
}
}
RANGE
startActivityForResult()
in FragmentActivity
requires the requestCode to be of 16 bits, meaning the range is from 0 to 65535.Also,
validateRequestPermissionsRequestCode
in FragmentActivity
requires requestCode to be of 8 bits, meaning the range is from 0 to 255.see: http://stackoverflow.com/questions/33331073/android-what-to-choose-for-requestcode-values
No comments:
Post a Comment