调用需要 API 26(最小为 18):android.app.NotificationChannel
Posted
技术标签:
【中文标题】调用需要 API 26(最小为 18):android.app.NotificationChannel【英文标题】:Call Requires API 26 (min is 18): android.app.NotificationChannel 【发布时间】:2019-09-22 10:30:55 【问题描述】:我想在 android API
我认为我的 Gradle 文件也有问题。
我尝试添加条件为android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O
的 if 语句
但它不适用于低于 26 的 API。我们需要它在 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);
Gradle 文件:
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:palette-v7:25.1.1 less... (Ctrl+F1)
我希望通知能够在 Android API 18 及更高版本上运行
【问题讨论】:
重复***.com/questions/3993924/… 【参考方案1】:您需要在 Api Level >= 26 上使用NotificationChannel
并使用NotificationCompat.Builder 来构造通知。所以,把你的代码改成这样:
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(最小为 18):android.app.NotificationChannel的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 Android 中的“调用需要 API 级别 26(当前最低为 25)”错误
调用需要 API 级别 26(当前最低为 23):java.time.Instant#now
如何在Android Studio中为消息“调用需要API级别21(当前最小值为16)”启用lint错误?
无法使用 HashMap 替换方法:调用需要 api 级别 24(当前最小值为 22):java.util.HashMap#replace