NotificationCompat.Builder只有不推荐使用的构造函数

时间:2017-10-09 19:14:25

标签: java android notifications push

我正在尝试向我的Android应用添加推送通知。目前min sdk版本为22,目标版本为26.推送通知在26之前使用api时有效,但在api 26(Oreo)上运行时不会显示任何通知。

研究告诉我,我需要使用新的构造函数sizeof(my_arr)[0],但我只有可用的depracated选项,似乎无法弄清楚如何使用新版本。如何在允许我的应用程序与旧的api版本兼容的情况下获得此新构造函数?

NotificationCompat.Builder(Context, ChannelID)

}

private void sendNotification(String title, String messageBody, String clickAction) {


    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

    String channelId = getString(R.string.default_notification_channel_id);
    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle(title)
                    .setChannel(channelId)
                    .setContentText(messageBody)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent);

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(1 /* ID of notification */, notificationBuilder.build());


}

apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
    applicationId "com.ventech.tempmonitor"
    minSdkVersion 22
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

2 个答案:

答案 0 :(得分:0)

将我的项目升级到 Android O

buildToolsVersion "26.0.1"

Android Studio中的Lint显示以下通知构建器方法的已弃用警告:

new NotificationCompat.Builder(context)

文档中提到不推荐使用构建器方法NotificationCompat.Builder(Context context)。我们必须使用具有channelId参数的构造函数:

NotificationCompat.Builder(Context context, String channelId)

完整答案是here

答案 1 :(得分:0)

解决了它。你们其中一个是对的。

compile' com.android.support:appcompat-v7:26。+'并没有真正抓住版本26.我转而编译了com.android.support:appcompat-v7:26.1.0' 它现在有效。