繁体   English   中英

如何使用旧的 api(如 16)构建 android 应用程序?

[英]How can I build an android application with an old api (as 16)?

对于个人用途,我希望能够调用“Settings.System”(切换 4g,切换飞行模式……)。

我知道自从 API 17 以来这是不可能的,当 Settings.System 变为 Settings.Global... 所以,我用 API 16 启动了一个应用程序,但它仍然不起作用,我不允许切换飞行模式。

有什么提示可以解决这个问题吗? 还是 android 自由已被完全弃用?

编辑——这里有几行(kotlin)什么都不做:

try {
    val isEnabled = Settings.System.getInt(
        contentResolver,
        Settings.System.AIRPLANE_MODE_ON,
        0
    ) == 1
    Settings.System.putInt(
        contentResolver,
        Settings.System.AIRPLANE_MODE_ON,
        if (isEnabled) 0 else 1
    )
    val intent = Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED)
    intent.putExtra("state", !isEnabled)
    sendBroadcast(intent)
} catch (e: Exception) {
    Toast.makeText(this, "exception:$e", Toast.LENGTH_LONG).show()
}

结果是:

exception:java.lang.SecurityException:
Permission Denial: not
allowed to send broadcast
android.intent.action.AIRPLANE_MODE
from pid=18122, uid=10335

您应该在build.gradle文件中将targetSdkVersion更改为 16。

如果targetSdkVersion低于 Android 的系统版本,那么它会应用兼容模式(允许调用旧 API)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM