NotificationCompat.Builder不接受第二个参数

时间:2018-06-08 17:44:45

标签: android gradle notifications

出于某种原因,我的NotificationCompat.Builder将不接受第二个参数,我不知道如何修复它。我看到了其他一些答案,但主要是问题是在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:应用

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 :(得分:3)

请确保您包含NotificationCompat库的正确版本:import android.support.v4.app.NotificationCompat;。以下是通知渠道的官方指南,这是Android O的新功能:https://developer.android.com/training/notify-user/channels

答案 1 :(得分:1)

TL; DR; 我的build.gradle文件中目标依赖项的API级别不正确。

详细信息:首先,在我的导入语句中,我引用了Matt建议的正确版本的软件包:

import android.support.v4.app.NotificationCompat;

然后,问题和Matt的答案共同为我提供了解决我自己的特定问题的指针,这给了我与OP完全相同的编译错误。就我而言,问题出在app模块的build.gradle文件中。

我的原始依赖性如下:

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

我将其更改为以下内容以解决我的错误:

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

从本质上讲,我的目标API级别是不正确的,因为herehere之前在API级别26中引入了channelId参数。

有趣的是,我在Logcat窗口中仅看到一个编译错误。在阅读了该线程中的详细信息之后,我去检出了app模块的build.gradle文件,在其中我看到了问题的根本原因。对于执行语句显示红色花键,并显示以下错误消息:

enter image description here

错误消息标题:

  

此支持库使用的版本(25)不应与   compileSdkVersion(26)

错误消息详细信息:

  

有一些库,工具和库的组合,   不兼容,或可能导致错误。一种这样的不兼容是   使用不支持的Android支持库版本进行编译   最新版本(或特别是低于您的版本   targetSdkVersion)。

花了我一些时间来调试该问题的原因是,在构建或Gradle同步期间,与错误的依赖版本有关的特定错误未在输出日志中的任何位置显示。 Android Studio应该更迅速地向开发人员显示此类错误。