yamill/react-native-orientation

How to lock orientation for iPhone: Portrait and for iPad: Landscape. it should not be changed after rotate screen

rskapadiadev opened this issue · 1 comments

This is my code snippet

Orientation.unlockAllOrientations();
if (isTabletOrIpad) Orientation.lockToLandscape()
else Orientation.lockToLandscape()

It compulsory to add all orientation support in Project Target > General > Device Orientation
it works first time but after rotate again and again it goes wrong

If anyone have solution, then add solution here

i got my answer
no need any third party library
follow this link

https://thewidlarzgroup.com/rn-type-dependent-orientation/

In update to this article for Android 4+ (API 14+)
Follow this step


Update MainApplication.java
imports are

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDelegate;

Update onCreate Method

@Override
public void onCreate() {
    super.onCreate();  
    registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
        @Override
        public void onActivityCreated(Activity a, Bundle savedInstanceState) {
            a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
    });
}

and Make class outside of MainApplication class named ActivityLifecycleAdapter by implements ActivityLifecycleCallbacks

class ActivityLifecycleAdapter implements Application.ActivityLifecycleCallbacks {
    @Override
    public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {}
    @Override
    public void onActivityStarted(@NonNull Activity activity) {}
    @Override
    public void onActivityResumed(@NonNull Activity activity) {}
    @Override
    public void onActivityPaused(@NonNull Activity activity) {}
    @Override
    public void onActivityStopped(@NonNull Activity activity) {}
    @Override
    public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {}
    @Override
    public void onActivityDestroyed(@NonNull Activity activity) {}
}