出于某种原因,我的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'
}
有什么想法吗?
答案 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级别是不正确的,因为here和here之前在API级别26中引入了channelId
参数。
有趣的是,我在Logcat窗口中仅看到一个编译错误。在阅读了该线程中的详细信息之后,我去检出了app
模块的build.gradle
文件,在其中我看到了问题的根本原因。对于执行语句显示红色花键,并显示以下错误消息:
错误消息标题:
此支持库使用的版本(25)不应与 compileSdkVersion(26)
错误消息详细信息:
有一些库,工具和库的组合, 不兼容,或可能导致错误。一种这样的不兼容是 使用不支持的Android支持库版本进行编译 最新版本(或特别是低于您的版本 targetSdkVersion)。
花了我一些时间来调试该问题的原因是,在构建或Gradle同步期间,与错误的依赖版本有关的特定错误未在输出日志中的任何位置显示。 Android Studio应该更迅速地向开发人员显示此类错误。