关键方法
相关链接: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();
}