【问题标题】:Android: How to prevent developer options from resetting upon the next boot?Android:如何防止开发者选项在下次启动时重置?
【发布时间】:2014-10-18 15:31:48
【问题描述】:

这是我的第一篇文章,请多多包涵。我是 Paranoid Android ROM 的维护者,对 Java 非常陌生。基本上,我的设备需要永久启用“设置>开发人员选项”中的“禁用硬件覆盖”选项,以防止屏幕闪烁。问题是某些“危险”的开发人员选项在下次启动时重置是正常的 AOSP 行为(尽管我个人认为上述设置并不危险)。

如果有人能告诉我如何更改代码以使此特定设置的状态在下次启动时永久存在,我将不胜感激。

这里是java文件: DevelopmentSettings.java

我感兴趣的字符串是“DisableOverlays”

对于这类事情,我完全是新手,因此非常感谢任何帮助。

谢谢。

编辑:这是启用禁用硬件覆盖时调用的文件(称为 DebugDisableHWC): SurfaceFlinger.cpp

【问题讨论】:

  • “这里是 java 文件”——该文件在设置应用程序中显示开发者选项屏幕。它与选项本身的实现没有太大关系,包括哪些选项在重启时被重置。
  • 感谢@CommonsWare 的回复。就像我说的那样,我是这个大声笑的新手。请查看更新后的帖子。
  • 谁能帮我解决这个问题?

标签: java android settings


【解决方案1】:

您应该拥有执行此操作的必要权限 - AndroidManifest.xml 中的 android:sharedUserId="android.uid.system" 并且您的应用必须使用系统密钥进行签名。如果您有权限 - 这是代码:

private void writeDisableOverlays() {
        try {
            Method getService = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
            IBinder flinger = (IBinder) getService.invoke(null, "SurfaceFlinger");
            if (flinger != null) {
                Parcel data = Parcel.obtain();
                data.writeInterfaceToken("android.ui.ISurfaceComposer");
                data.writeInt(1);
                flinger.transact(1008, data, null, 0);
                data.recycle();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多