Как я могу создать приложение android со старым API (как 16)? - PullRequest
0 голосов
/ 18 июня 2020

Для личного использования я хотел бы иметь возможность вызвать «Settings.System» (переключить 4g, переключить режим полета…).

Я понял, что это невозможно с API 17, когда Settings.System стал Settings.Global ... Итак, я запустил приложение с API 16, но оно все еще не работает, мне не разрешено переключать режим полета.

Есть какие-нибудь советы по решению этой проблемы? Или android liberties полностью устарели?

EDIT - Здесь несколько строк (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

1 Ответ

0 голосов
/ 18 июня 2020

Вы должны изменить targetSdkVersion на 16 в вашем build.gradle файле.

Если targetSdkVersion ниже, чем системная версия Android, то применяется режим совместимости (который позволяет вызывать старые API).

...