Interstitial Admob ads: "IllegalStateException: Only fullscreen activities can request orientation" Interstitial Admob ads: "IllegalStateException: Only fullscreen activities can request orientation" android android

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.Othat 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.