关键方法
?
相关链接:Android4.1 Rotation 小结_tianruxishui的专栏-CSDN博客_android:rotation?
案例分析
在连接特定WIFI的情况下强制竖屏显示
WifiNetworkDetailsFragment2.java? ? WifiSettings2.java
导包:import com.android.internal.view.RotationPolicy; 在两个方法加入以下条件
onResume() boolean locked = ?RotationPolicy.isRotationLocked(getContext()); if (!locked){RotationPolicy.setRotationLock(getContext(),true);} onDestroy() if(isDeviceLocked(getContext())){RotationPolicy.setRotationLock(getContext(),false);}?
ConfigureWifiEntryFragment.java
导包:
import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.content.pm.ActivityInfo; import android.annotation.Nullable; import com.android.internal.view.RotationPolicy;
方法加入以下条件
? ?@Override ? ? public void onResume() { ? ? ? ? super.onResume(); ? ? ? ? final Activity activity = getActivity(); ? ? ? ? if (isDeviceLocked(getContext())){ ? ? ? ? ? ? if (activity != null && activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { ? ? ? ? ? ? ? ? activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); ? ? ? ? ? ? ? ? boolean locked = ?RotationPolicy.isRotationLocked(getContext()); ? ? ? ? ? ? ? ? if (!locked){ ? ? ? ? ? ? ? ? ? ? RotationPolicy.setRotationLock(getContext(),true); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? }
新增方法 ? ? public static boolean isDeviceLocked(@Nullable Context context) { ? ? ? ? ActivityTaskManager atm = (ActivityTaskManager) context.getSystemService(Context.ACTIVITY_TASK_SERVICE); ? ? ? ? return atm.isLockDeviceMode(); ? ? }
|