最近加入了新的需求,所以工作状态一直都是不停地改BUG改BUG改BUG,发现很多新的东西,可惜根本没有时间记录下来,现在正好闲下来了,刚好可以总结前段时间发现的一些有意思的东西。

我们都知道如何在清单文件中定义一个APP的横屏还是纵屏,无非是
android:screenOrientation="portrait"android:screenOrientation="landscape"
当然,这只是设置一个应用的横向和纵向,现在有个需求是,这个App来自第三方,横纵向可变化,无法修改它的清单文件,所以想控制它的横纵向只能想办法设置手机设备为不可旋转

查看源码可以发现在external/robolectric/v3/runtime/android-all-5.1.1_r9-robolectric-1.jar/com/adnroid/internal/view/menu/RotationPolicy.class中有一个方法为setRotationLock可以操作设备的横纵屏

public static void setRotationLock(Context context, boolean enabled) {       System.putIntForUser(context.getContentResolver(),   "hide_rotation_lock_toggle_for_accessibility", 0, -2);    int rotation = areAllRotationsAllowed(context)?-1:0;    setRotationLock(enabled, rotation);} 

由上述代码可以看出引用此方法需要两个参数,一个是Context,一个是保存当前旋转方向的布尔值enable
具体操作在下面的代码中:

private static void setRotationLock(final boolean enabled, final int rotation) {    AsyncTask.execute(new Runnable() {        public void run() {            try {            IWindowManager exc = WindowManagerGlobal.getWindowManagerService();                if(enabled) {                    //保持当前旋转方向                    exc.freezeRotation(rotation);                } else {                    //自由转换方向                    exc.thawRotation();                }            } catch (RemoteException var2) {                Log.w("RotationPolicy", "Unable to save auto-rotate setting");              }        }    });}

所以我们可以在普通的代码中如此引用:

import com.android.internal.view.RotationPolicy;    ......代码省略......RotationPolicy.setRotationLock(mContext, true);

这样就可以在无法操作此应用时操作设备横纵屏达到控制的效果了

更多相关文章

  1. Android(安卓)说说EditText里面的属性
  2. Android(安卓)Camera 架构简析2
  3. Android学习笔记(四)——通过剪切板传递数据
  4. Android下如何卸载和格式化sdcard
  5. 乱七八糟的android心得
  6. Android(安卓)NDK学习笔记(一) 初识NDK
  7. 解析Android中的Context
  8. Android(安卓)中的Java跟C/C++的Binder通信
  9. Android(安卓)调试神器-Stetho(Facebook出品)的使用

随机推荐

  1. Android(安卓)FileInputStream类的使用
  2. 面向忙碌开发者的 Android
  3. ViewGroup常用布局操作
  4. Android(安卓)Relativelayout
  5. 关于android xml文件中 android:id="@+id
  6. 转:Android(安卓)开发技巧杂集
  7. Android(安卓)输入框限制字符输入数
  8. GoogleMap
  9. android中wifi原理及流程分析
  10. Android存储权限