【问题标题】:How to programmatically enable and disable Flight mode on Android 4.2?如何以编程方式在 Android 4.2 上启用和禁用飞行模式?
【发布时间】:2012-12-07 16:19:25
【问题描述】:

有没有办法在 Android 4.2 上禁用或启用飞行模式?

我使用的代码仅适用于以前的 Android 版本:

android.provider.Settings.System.putInt(
    c.getContentResolver(),   
    android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);

【问题讨论】:

    标签: android airplane


    【解决方案1】:

    root 设备上存在一个简单的解决方法。

    要启用飞行模式,可以使用以下 root shell 命令:

    settings put global airplane_mode_on 1
    am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
    

    要禁用飞行模式,可以使用以下 root shell 命令:

    settings put global airplane_mode_on 0
    am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false
    

    信息取自here

    免责声明:此信息按“原样”提供,不提供任何形式的保证。

    【讨论】:

    • 暴露的框架可能需要用户通过电脑在手机上安装其他东西。
    • 您的链接无法访问!
    【解决方案2】:

    这不再可能,除非应用程序由固件签名密钥签名或安装在系统分区上(通常由 root 设备用户)。

    【讨论】:

    【解决方案3】:

    你不能,正如Official Android 4.2 API Documentation所写的那样

    Settings.System 定义的一些设备设置现在是只读的。如果 您的应用程序尝试将更改写入定义的设置 Settings.System 已移至 Settings.Global,写 在 Android 4.2 及更高版本上运行时,操作将静默失败。 即使您对android:targetSdkVersion 的价值和 android:minSdkVersion 低于 17,您的应用无法修改 运行时已移至 Settings.Global 的设置 Android 4.2 及更高版本。

    但是,如果你是 OS Developer,你可以在设置这些权限时编写它

    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    

    然后读写,

    // To Write
    Settings.Global.putString(getContentResolver(), "airplane_mode_on", "1");
    
    // To Read
    String result = Settings.Global.getString(getContentResolver(), Settings.Global.AIRPLANE_MODE_ON);
    Toast.makeText(this, "result:"+result, Toast.LENGTH_SHORT).show();
    

    【讨论】:

    • Hmmmmm,但是这个方法只是添加到Android 4.2
    • 哦,是的。它不能。只有你授予权限 android.permission.WRITE_SECURE_SETTINGS 才可以,这意味着你必须是一个 os 开发人员,而我是所以我没有注意到它。
    • @ToonSuperLove,你确定这些 Settings.Global 会写设备设置飞行模式。我有一个类似的任务要始终保持飞行模式处于关闭状态。尽快回复我。
    • @ToonSuperLove,我试过你 sn-p,在清单中添加权限 WRITE_SECURE_SETTINGS 时遇到问题..让我指导实现禁用飞行模式的结果
    • 操作系统开发人员到底是什么?谁有手机root?我怎样才能让它工作?
    【解决方案4】:

    对于 KitKat,您必须在清单文件中添加 android:sharedUserId="android.uid.system"

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.airplanesetting"
        android:versionCode="1"
        android:versionName="1.0"
        android:sharedUserId="android.uid.system" >
    

    【讨论】:

    • 尝试在其中安装 apk 时,我从 eclipse 中收到“安装错误:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE”
    • 更改 sharedUserId 将不起作用,除非您也使用相同的密钥签名,也就是使用系统的密钥库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多