Interstitial Admob ads: "IllegalStateException: Only fullscreen activities can request orientation"
EDIT
Now a newer admob version is available.I confirm that using the latest releases (15.0.1 or newer) the issue doesn't appear anymore, so you can use the latest version of Admob
com.google.firebase:firebase-ads:17.1.2
setting the target version to the latest, if you have used the workaround previously suggested.
----------------------------------------------------------
Set the target to Android API Level to 26 to fix the issue, waiting for Admob update
In build.gradle
targetSdkVersion 26
if targetSdkVersion
is >=27 ( > android.os.Build.VERSION_CODES.O
that is 26) you get this error, they have changed ActivityRecord in latest Android version adding this:
void setRequestedOrientation(int requestedOrientation) { if (ActivityInfo.isFixedOrientation(requestedOrientation) && !fullscreen && appInfo.targetSdkVersion > O) { throw new IllegalStateException("Only fullscreen activities can request orientation"); .... }
The change has been introduced in this commit
Prevent non-fullscreen activities from influencing orientation This changelist enforces that activities targeting O and beyond can only specify an orientation if they are fullscreen.
and probably in admob lib have messed some check
EDIT
the newer (above 16) admob version fixed the issue
Old Answer
try to add this in your manifest
<activityandroid:name="com.google.android.gms.ads.AdActivity"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"tools:replace="android:theme" />
Or, if you are using appcompat:
<style name="TranslucentTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> etc
And in the manifest, make sure the activity is declared with
android:theme="@style/TranslucentTheme"
please do not use any properties in Android Manifest files AdActivity.
please remove this line from AdActivity in Manifest file
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
Just simply add this following line to Android Manifest file.
<activity android:name="com.google.android.gms.ads.AdActivity" />
If you want to set your desired activity as portrait mode please add this following line to your activities onCreate method:
if (android.os.Build.VERSION.SDK_INT != Build.VERSION_CODES.O) { activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}
For firebase ADS 17.0.0 and upper versions use this line to manifest file.
<application...........> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="@string/app_id" /></application>
You can get app id from Admob -> Apps -> your app -> App Settings -> App Id. Please copy and paste this App_Id into your project.