NotificationCompat.Builder не принимает 2-й аргумент - PullRequest
0 голосов
/ 08 июня 2018

По какой-то причине мой NotificationCompat.Builder не примет 2-й аргумент, и я понятия не имею, как это исправить.Я видел некоторые другие ответы, но в основном проблема была в версии Gradle, но моя обновлена, как показано ниже:

if (Build.VERSION.SDK_INT >= 26) {
        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent mPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

        Notification mNotification = new NotificationCompat.Builder(this, CHANNEL_ID)
                .setContentTitle("Content Title")
                .setContentText("Content Text")
                .setSmallIcon(R.drawable.ic_check)
                .setContentIntent(mPendingIntent)
                .build();

            startForeground(1, mNotification);
            mNotification.notify();
        }

, и это мои файлы Gradle

build.gradle: проект

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle: app

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 26
        defaultConfig {
            applicationId "rs.dreamlight.parkomat"
            minSdkVersion 15
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
            vectorDrawables.useSupportLibrary = true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }


    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support:support-v4:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        implementation 'com.android.support:support-vector-drawable:26.1.0'
        implementation 'com.google.code.gson:gson:2.8.4'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
        implementation 'com.android.support:design:26.1.0'
        implementation 'com.android.support:cardview-v7:26.1.0'
        implementation 'com.github.clans:fab:1.6.4'
    }

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

TL; DR; Уровень API целевой зависимости был неверным в моем build.gradle файле.

Полная информация : Для начала, в моем операторе импортаЯ ссылался на правильную версию пакета, предложенную Мэттом:

import android.support.v4.app.NotificationCompat;

Тогда вопрос и ответ Мэтта вместе дали мне указатель для решения моей конкретной проблемы, которая приводила к той же самой ошибке компиляции, с которой столкнулсяОП.В моем случае проблема была в build.gradle файле модуля app.

Моя исходная зависимость была такой, как показано ниже:

implementation 'com.android.support:appcompat-v7:25.1.0'

Я изменил ее на ниже, чтобы устранить мою ошибку:

implementation 'com.android.support:appcompat-v7:26.1.0'

По сути, мой целевой уровень API был неверным, так как параметр channelId был введен в API уровне 26 и далее, как упоминалось здесь и здесь .

Интересно, что я видел только одну ошибку компиляции в окне Logcat.Прочитав подробности в этой теме, я отправился на извлечение файла build.gradle моего app модуля, где увидел основную причину проблемы.Для оператора реализации было показано красное закорочение со следующим сообщением об ошибке:

enter image description here

Заголовок сообщения об ошибке:

Thisбиблиотека поддержки не должна использовать версию (25), отличную от compileSdkVersion (26)

Подробности сообщения об ошибке:

Существует несколько комбинаций библиотек или инструментов и библиотек, которые несовместимы, или могут привести к ошибкам.Одной из таких несовместимостей является компиляция с версией библиотек поддержки Android, которая не является последней версией (или, в частности, версией ниже, чем ваша targetSdkVersion).

Причина, по которой мне потребовалось времяотладка этой проблемы заключается в том, что эта конкретная ошибка, связанная с неправильной версией зависимости, не отображалась нигде в выходных журналах ни во время сборки, ни при синхронизации Gradle.Android Studio должна быстрее показывать такие ошибки разработчику.

0 голосов
/ 08 июня 2018

Убедитесь, что вы указали правильную версию библиотеки NotificationCompat: import android.support.v4.app.NotificationCompat;.Вот официальное руководство по каналам уведомлений, которые являются новой функцией для Android O: https://developer.android.com/training/notify-user/channels.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...