如何更改Android的飞行模式的行为,以便它不会关闭蜂窝无线电?

Eri*_*ine 4 java android action android-intent

我一直在尝试创建一个简单的应用程序,让用户在Android中自定义飞行模式的行为.这样做的动机来自于拥有三星Fascinate的亲戚,在通话过程中他会意外打开飞机模式.这种情况发生在他拿着手机时,不小心按住侧面电源/锁定按钮,这会打开一个对话框,其中包含"静音模式","飞行模式"和"关机"菜单.他不小心通过触摸他的脸颊来触发飞机模式.这会使电话掉线,对他来说是一种烦恼.

最后,我想创建一个应用程序,防止在用户处于通话过程中关闭蜂窝无线电.但是,对于第一次迭代我认为这是有道理的,让用户手动选择哪个电台将不会通过飞行模式得到关闭.

打算修改Android源代码或做一些需要root的东西.我正在寻找标准框架内的解决方案

我第一次尝试解决这个问题是创建一个可以修改的应用程序System.AIRPLANE_MODE_RADIOS:

System.putString(getApplication().getContentResolver(), System.AIRPLANE_MODE_RADIOS, "");
Run Code Online (Sandbox Code Playgroud)

根据API文档,此常量是"以飞机模式打开时需要禁用的以逗号分隔的无线电列表".似乎飞机模式实际上并不使用此常量,并且在更改后它将继续正常工作.

我的下一次尝试是创建BroadCastReceiver,接收AIRPLANE_MODE操作,并发出一个Intent来反转它:

Intent am = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", 0);
context.sendBroadcast(am);
Run Code Online (Sandbox Code Playgroud)

激活后,这会关闭飞行模式.但是,如果用户处于呼叫中间,它仍将被丢弃(这是有道理的).所以,这不是我的问题的解决方案.

有谁知道如何防止飞机模式禁用蜂窝无线电?

DeR*_*gan 6

据我所知,你不能做到这一点,因为如果第三方应用程序能够在设备上启用飞行模式的情况下访问塔,则选项本身(飞行模式)将毫无用处.

  • 你误解了谷歌开放平台的含义.不幸的是,它们并不意味着它对最终用户开放,它们意味着OEM对创建设备的人开放(尽管如果OEM需要设备上的谷歌应用程序,他们在某些方面进行更改的自由度有限). (3认同)