notification确实学起来不轻松啊,因为android8适配问题我弄了一天,网上的教程不好找,所以写这篇文章,给你们参考一下,我试了很多方法,就找到了一种办法,先凑合用吧,能用就好;
有点懒,我只贴代码,就不注释了,见谅;
这是MainActivity.java
package com.example.administrator.toast;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.provider.MediaStore;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.zip.Inflater;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Context mContext;
private NotificationManager notificationManager;
private Notification notify1;
Bitmap LargeBitmap = null;
private static final int NOTIFYID_1 = 1;
String chanelId = "my_channel_01";
String chanelName="我是渠道名字";
private Button btn_show_normal;
private Button btn_close_normal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext=MainActivity.this;
Button button= (Button) findViewById(R.id.button2);
//创建大图标的Bitmap
LargeBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.iv_lc_icon);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
bindView();
}
private void bindView() {
btn_show_normal = (Button) findViewById(R.id.btn_show_normal);
btn_close_normal = (Button) findViewById(R.id.btn_close_normal);
btn_show_normal.setOnClickListener(this);
btn_close_normal.setOnClickListener(this);
Button btn_photo=(Button) findViewById(R.id.button);
btn_photo.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_show_normal:
Intent it=new Intent(mContext,Main2Activity.class);
PendingIntent pit =PendingIntent.getActivity(mContext,0,it,0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel mChannel = new NotificationChannel(chanelId, chanelName, NotificationManager.IMPORTANCE_LOW);
// mChannel.enableLights(true);
// mChannel.setLightColor(Color.RED);
// mChannel.setShowBadge(true);
notificationManager.createNotificationChannel(mChannel);
notify1=new Notification.Builder(this)
.setChannelId(chanelId)
.setContentTitle("这个是标题")
.setContentText("这个是内容1")
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(LargeBitmap)
.setAutoCancel(true)
.setContentIntent(pit).build();
} else {
Notification.Builder builder = new Notification.Builder(this);
builder.setContentTitle("这个是标题")
.setContentText("这个是内容2")
.setSmallIcon(R.mipmap.ic_lol_icon)
.setLargeIcon(LargeBitmap)
.setAutoCancel(true)
.setContentIntent(pit)
.setOngoing(true);
notify1 = builder.build();
}
notificationManager.notify(NOTIFYID_1, notify1);
break;
case R.id.btn_close_normal:
//除了可以根据ID来取消Notification外,还可以调用cancelAll();关闭该应用产生的所有通知
notificationManager.cancel(NOTIFYID_1); //取消Notification
break;
case R.id.button:
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,0);
}
}
}
其他的简单,我就贴着关键的代码就可以了