помечены как недействительные, а последние два четко задокументированы как правильные.

аю, что это новая ошибка с момента перехода на Android Studio 3.0. Я получаю ошибку синтаксиса lint:

<pragma value> expected, got 'ON'

Я получаю эту ошибку только на первом из следующих двух методов:

private static void setForeignKeyConstraintsEnabled(@NonNull SQLiteDatabase db) {
    if (!db.isReadOnly()) {
        db.execSQL("PRAGMA foreign_keys=ON;");
    }
}

private static void setForeignKeyConstraintsDisabled(@NonNull SQLiteDatabase db) {
    if (!db.isReadOnly()) {
        db.execSQL("PRAGMA foreign_keys=OFF;");
    }
}

Я нашел только одинпредлагаем исправить в интернете на момент написания, Это на немецком языке и говорит, что я не должен использовать константные строки для прагмы, но должен использовать строковый параметр.

String query = String.format ("PRAGMA foreign_keys = %s","ON"); 
db.execSQL(query); 

Но я подозреваю, что если это устранит ошибку, то только сделает код слишком сложным для обнаружения правилом lint.

Почему быНА выкинуть ошибку а неOFF? Мой синтаксис неправильный?

Ответы на вопрос(1)

Ваш ответ на вопрос