由于某种原因,我的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'
}
有任何想法吗?
请确保您包含NotificationCompat库的正确版本:import android.support.v4.app.NotificationCompat;
。以下是通知频道的官方指南,这是Android O:https://developer.android.com/training/notify-user/channels的新功能。
TL; DR;我的build.gradle
文件中目标依赖项的API级别不正确。
完整的细节:首先,在我的import语句中,我引用了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级别不正确,因为channelId
参数是在API级别26中引入的,如here和here所述。
有趣的是,我在Logcat窗口中只看到一个编译错误。在阅读了这个帖子中的细节之后,我去了我的app
模块的build.gradle
文件,在那里我看到了问题的根本原因。为实现语句显示了一个红色的波形,并显示以下错误消息:
错误消息标题:
此支持库不应使用与compileSdkVersion(26)不同的版本(25)
错误消息详情:
有些库或工具和库的组合不兼容,或者可能导致错误。一个这样的不兼容性是使用不是最新版本的Android支持库版本(或者特别是低于targetSdkVersion的版本)进行编译。
我花了一段时间来调试这个问题的原因是,在构建或Gradle同步期间,在输出日志中的任何地方都没有显示与错误依赖版本相关的特定错误。 Android Studio应该更快地向开发人员显示此类错误。