调用需要API 26(最小值为18):android.app.NotificationChannel

调用需要API 26(最小值为18):android.app.NotificationChannel,android,gradle,android-notifications,Android,Gradle,Android Notifications,我想在android API=android.os.Build.VERSION\u CODES.O 但当API小于26时,它就不起作用了。我们需要它来处理API 18 进口包装: import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.content.Context; import android.

我想在android API<26中发送通知,但我遇到了这个错误

我想我的Gradle文件也有问题

我尝试添加一个if语句,条件是
android.os.Build.VERSION.SDK\u INT>=android.os.Build.VERSION\u CODES.O
但当API小于26时,它就不起作用了。我们需要它来处理API 18

进口包装:

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;

import static android.preference.PreferenceManager.getDefaultSharedPreferences;

通知代码:

 //Create notification manager
                        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

                        //Create channel in which to send push notifications
                        String CHANNEL_ID = "my_channel_01";
                        CharSequence name = "my_channel";
                        String Description = "This is my channel";
                        int importance = NotificationManager.IMPORTANCE_HIGH;
                        NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
                        mChannel.setDescription(Description);
                        mChannel.enableLights(true);
                        mChannel.setLightColor(Color.RED);
                        mChannel.enableVibration(true);
                        mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
                        mChannel.setShowBadge(false);
                        notificationManager.createNotificationChannel(mChannel);

                        //Send push notification
                        Notification notify = new Notification.Builder(getApplicationContext())
                                .setContentTitle("Listener available on pSquared!")
                                .setContentText("You can now talk about your day in a pSquared chatbox with a Listener")
                                .setSmallIcon(R.drawable.psquared_logo).setChannelId(CHANNEL_ID).build();

                        notify.flags |= Notification.FLAG_AUTO_CANCEL;
                        notificationManager.notify(0, notify);
渐变文件:

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.psquared"
        minSdkVersion 18
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.firebase:firebase-database:16.1.0'
    implementation 'com.google.firebase:firebase-auth:16.2.1'

    implementation 'com.firebaseui:firebase-ui-auth:4.1.0'
    implementation 'com.firebaseui:firebase-ui-database:4.3.2'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'


    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.firebaseui:firebase-ui:1.2.0'
    implementation 'com.firebase:firebase-client-android:2.5.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    //compile 'com.android.support:design:25.0.1'
}

该行:

    implementation 'com.android.support:appcompat-v7:28.0.0'
有一条红色下划线,带有错误:

所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本28.0.0、25.1.1。示例包括:com.android.support:animated vector drawable:28.0.0和com.android.support:palete-v7:25.1.1 less。。。(Ctrl+F1)


我希望通知能够在Android API 18和更高版本上工作

您需要在API级别>=26上使用
通知通道
,并使用它来构建通知。因此,请将代码更改为以下内容:

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

//Create channel in which to send push notifications
String CHANNEL_ID = "my_channel_01";

// only use NotificationChannel when Api Level >= 26
if(Build.VERSION.SDK_INT >= 26) {
    CharSequence name = "my_channel";
    String Description = "This is my channel";
    int importance = NotificationManager.IMPORTANCE_HIGH;
    NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
    mChannel.setDescription(Description);
    mChannel.enableLights(true);
    mChannel.setLightColor(Color.RED);
    mChannel.enableVibration(true);
    mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
    mChannel.setShowBadge(false);
    notificationManager.createNotificationChannel(mChannel);
}

//Send push notification
Notification notify = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID)
        .setContentTitle("Listener available on pSquared!")
        .setContentText("You can now talk about your day in a pSquared chatbox with a Listener")
        .setSmallIcon(R.drawable.psquared_logo)
        .build();

notify.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, notify);

您需要在Api级别>=26上使用
通知通道
,并使用来构造通知。因此,请将代码更改为以下内容:

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

//Create channel in which to send push notifications
String CHANNEL_ID = "my_channel_01";

// only use NotificationChannel when Api Level >= 26
if(Build.VERSION.SDK_INT >= 26) {
    CharSequence name = "my_channel";
    String Description = "This is my channel";
    int importance = NotificationManager.IMPORTANCE_HIGH;
    NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
    mChannel.setDescription(Description);
    mChannel.enableLights(true);
    mChannel.setLightColor(Color.RED);
    mChannel.enableVibration(true);
    mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
    mChannel.setShowBadge(false);
    notificationManager.createNotificationChannel(mChannel);
}

//Send push notification
Notification notify = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID)
        .setContentTitle("Listener available on pSquared!")
        .setContentText("You can now talk about your day in a pSquared chatbox with a Listener")
        .setSmallIcon(R.drawable.psquared_logo)
        .build();

notify.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, notify);
副本的副本