Для вызовов требуется уровень API

У меня проблемы с этой ошибкой:

Для вызова требуется уровень API 9 (текущий минимум 7)

Однако после некоторых решений, опубликованных здесь, добавление части uses-skd по-прежнему не помогает:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.app.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <uses-sdk
                    android:minSdkVersion="7"
                    android:targetSdkVersion="17" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

person McJim    schedule 17.03.2014    source источник
comment
измените этот android:minSdkVersion="7" на android:minSdkVersion="9". API, который вы используете, требует, чтобы он был 9   -  person Raghunandan    schedule 17.03.2014
comment
и uses-sdk должны быть объявлены под тегом манифеста. не внутри тега activity...   -  person Gopal Gopi    schedule 17.03.2014
comment
Для какого метода вы получаете эту ошибку? Какие версии Android вы хотите поддерживать?   -  person k3v1n4ud3    schedule 17.03.2014


Ответы (3)


Это должна быть процедура, использование-sdk должно быть прямым дочерним элементом элемента манифеста.

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

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="19" />
person Sukan    schedule 17.03.2014
comment
Привет Сукан. Я следовал вашим инструкциям, просто изменив число 7 на 9. Ошибка все еще остается. - person McJim; 17.03.2014
comment
@McJim Проверьте обновленный ответ :) - person Sukan; 17.03.2014
comment
Если это работает :) Пожалуйста, примите мой ответ Happy Coding :) - person Sukan; 17.03.2014

Вы можете использовать @SuppressLint("NewApi") перед вызовом метода. Но не забудьте добавить проверку версии ОС Android, чтобы приложение не вылетало на старых устройствах.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
        // make your call;
}
person Sergey Pekar    schedule 17.03.2014

Это означает, что пользователю нужна определенная минимальная версия Android (9 — это Android 2.3+). Другими словами: пользователи ниже 2.1 не смогут использовать эту функцию, так как они получат исключение. Итак, измените:

<uses-sdk android:minSdkVersion="9" ...

Очистите Lint или если вы все еще хотите, чтобы ваше приложение было доступно с уровня 7 (Android 2.1+) и вы хотите предоставить эту функцию только для «более новых» устройств, используйте конструкцию if:

if(Build.VERSION.SDK_INT >= 9) {
     // here goes the feature.
}

Помните, что ваша среда IDE может не распознать это и по-прежнему выдавать маркер Lint, поэтому просто отключите Lint для этого метода, класса или всего проекта.

person paulgavrikov    schedule 17.03.2014