Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode

I am writing an application where Activity A launches Activity B using

startActivityForResult(intent, -101); 

but when called, it responded back with following error log:

E/AndroidRuntime( 1708): java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode E/AndroidRuntime( 1708):    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:837) 

Probably it could be -101 but I am not sure. Does any one have any idea on this?

like image 301
CoDe Avatar asked Aug 27 '14 14:08

CoDe


2 Answers

You get this exception only in android.support.v4.app.FragmentActivity and not when you use android.app.Activity.

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 16 bits, meaning the range is from 0 to 65535.

For more info(if you want to see the source code) : https://stackoverflow.com/a/33331459/4747587

like image 187
Henry Avatar answered Sep 26 '22 09:09

Henry


If you're using ActivityResult APIs, add this dependency to fix this issue:

implementation "androidx.fragment:fragment:1.3.4" 
like image 29
Saurabh Thorat Avatar answered Sep 25 '22 09:09

Saurabh Thorat