修改Android 4.2(及以上版本)上的AIRPLANE_MODE_ON

12
自SDK版本4.2以来,似乎不再可以在设备上修改飞行模式,因为谷歌已将此设置移到了只读的Settings.Global中。
有人能够在没有任何根权限情况下绕过此问题吗?
我的应用程序的主要功能是在屏幕关闭时启用飞行模式,自从4.2版本以后就无法正常工作了。
我只想再次确认一下我的判断是否正确,以及我的应用程序从Android 4.2及以上版本开始已经无法使用。
参考链接:http://developer.android.com/reference/android/provider/Settings.Global.html#AIRPLANE_MODE_ON

这个有更新了吗?你能在v4.2上让它工作吗? - dnk.nitro
2个回答

6

只是想确认一下我的判断是否正确,我的应用程序从Android 4.2及以上版本开始无法使用了。

是的。换句话说,如果有一种后门方法可以修改此设置,则表示存在安全漏洞,最终将被关闭,就像已存在3年以上的启用/禁用GPS限制一样。


1
我正在寻找另一种官方方法来完成这个任务,而不是老旧的方式,没有任何后门。这就是为什么我明确地写下了“不需要任何形式的root权限”。因为我无法理解为什么Google会限制像飞行模式这样微不足道的功能的访问。我的意思是,它能造成什么伤害呢?我的Nexus 7从6-8天的待机时间缩短到了大约2天。谷歌,非常感谢。是的,我有偏见,因为我编写了一个应用程序来实现这一点(airlockapp.com),但为什么要限制对一个完全安全的功能的访问呢? - Tommie
@Tommie:“我在寻找另一种官方方法来完成这个任务,而不是老旧的方式,没有任何后门”——根据定义,目前至少没有其他方法。否则他们就不会将其移动到“Settings.Global”中了。“我的意思是,它能造成什么伤害?”——你的意思是,除了可能未经他们同意或知情就使人与外界断开联系之外?见鬼,我使用飞行模式应用程序小部件,我一直认为将该设置留在“Settings.System”中是一个愚蠢的举动。不过,我可能会通过专用权限来修改它。 - CommonsWare
我同意一个专门的设置就足够了。移除在安卓设备上控制飞行模式的可能性似乎有些严厉。 - Tommie
专用设置 = 专用权限。孩子们不要边走边打字! :) - Tommie

4

我知道你明确要求不需要root权限的解决方案,但是如果你有root权限的设备,至少有一种(有点)官方的解决方案可以将你的应用程序移动到文件夹/system/app中。然后就可以写入Settings.Global

Settings.Global.putInt(context.getContentResolver(), Global.AIRPLANE_MODE_ON, mode ? 1 : 0);

看看如何在4.2中切换飞行模式以及如何将您的应用程序移动到/system/app这里。我使用这个来制作我的切换小部件Mini Status源代码链接)。


你能分享更详细的步骤来在已 root 的设备上编写飞行模式设置吗?我的初始步骤从哪里开始? - Senthil Mg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接