Android-Notification不会出现

Wen*_*y.W 1 java notifications android

这是用于通过单击按钮创建通知然后转到另一个类的代码.第二类完全是空的.我不知道为什么它不会出现,即使它不能转向另一个类.

我已经检查了这个文件的"坐位","通知"是"打开".谁能帮我检查一下?

MainActivity.class

package com.example.ww.lab;

import android.app.Notification;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v4.app.NotificationManagerCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.NotificationManager;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private int id = 1;
    private NotificationCompat.Builder notification_builder;
    private NotificationManagerCompat notification_manager;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                notification_manager.notify(id, notification_builder.build());
            }
        });

        Intent open_activity_intent = new Intent(this, NotificationActivity.class);
        PendingIntent pending_intent = PendingIntent
            .getActivity(this, 0, open_activity_intent, PendingIntent.FLAG_CANCEL_CURRENT);

        notification_builder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("Notification Title")
            .setContentText("Notification Body")
            .setAutoCancel(true)
            .setContentIntent(pending_intent);

        notification_manager = NotificationManagerCompat.from(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

 <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout       
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.ww.lab.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Do it!"
        android:id="@+id/button"
        android:onClick="sendNotification"/>
    </android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

Chi*_*ath 8

正如您所说,您编译的sdk版本是26.您需要在发布通知之前设置通道.所以它会是这样的

NotificationManager notification_manager = (NotificationManager) this
                .getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    String chanel_id = "3000";
    CharSequence name = "Channel Name";
    String description = "Chanel Description";
    int importance = NotificationManager.IMPORTANCE_LOW;
    NotificationChannel mChannel = new NotificationChannel(chanel_id, name, importance);
    mChannel.setDescription(description);
    mChannel.enableLights(true);
    mChannel.setLightColor(Color.BLUE);
    notification_manager.createNotificationChannel(mChannel);
    notification_builder = new NotificationCompat.Builder(this, chanel_id)
} else {
    notification_builder = new NotificationCompat.Builder(this);
}
notification_builder.setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle("Notification Title")
        .setContentText("Notification Body")
        .setAutoCancel(true)
        .setContentIntent(pending_intent);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问Developer Site

  • 这个答案出了点问题,因为NotificationManagerCompat上没有createNotificationChannel()方法.您必须使用本机NotificationManager (2认同)