我有一个可以接收FCM通知的应用程序。该应用程序在Android Oreo设备以下的操作系统上已收到通知。但是通知未在android oreo设备中接收。它没有发出通知,而是发出了敬酒消息:“开发人员警告程序包无法在通道null上发布通知”。我搜索并了解到需要通知通道。但是我不知道要在哪里添加通知通道。请给我指导。吐司正在8.0仿真器上出现。在实际设备中什么都没有。
答案 0 :(得分:4)
更新:
通知通道在Android 8中引入。通常在Application类中创建通道并将其分配给Notification Manager。来自Google Android的示例代码。以下是步骤
步骤1 。添加一个类来扩展Application并在该类中创建频道ID,如下所示。
com.sample.app.Application.java
public class AppApplication extends Application{
public static final String CAHNNEL_ID = "default_channel_id";
@Override
public void onCreate() {
super.onCreate();
createNotificationChannel()
}
private void createNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
}
第2步。这样编辑AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample.app">
<application
android:name="com.sample.app.AppApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
...
</application>
</manifest>
确保属性android:name的值是AppApplication类,例如上面代码中的 android:name =“ com.sample.app.AppApplication”
第3步。在应用程序中的任何位置生成通知时,请使用以下示例代码。注意新的NotificationCompat.Builder(this,CHANNEL_ID)
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("My notification")
.setContentText("Much longer text that cannot fit one line...")
.setStyle(new NotificationCompat.BigTextStyle()
.bigText("Much longer text that cannot fit one line..."))
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
文档中值得一看的其他说明
请注意,NotificationCompat.Builder构造函数要求 您提供一个频道ID。这是与以下设备兼容的必要条件 Android 8.0(API级别26)及更高版本,但较早版本会忽略 版本。
因此,必须将targetSdkVersion设置为至少26以支持它。