1、功能展示
点击按钮 显示一条 notification ,当点击notifiction 会跳转界面显示不同内容
2、代码架构
3、主要功能代码
MainActivity.java
package com.example.menglux.mynotify;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private String TAG = "MainActivity: ";
private Button button;
private NotificationManager notificationManager ;
private static int num = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.my_notify_id) ;
button.setOnClickListener(this);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_notify_id :
showNotify();
num ++;
break;
default:
break;
}
}
//显示notify
private void showNotify() {
Intent intent = new Intent(this,TestActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); //保证多个nitifition 跳转同一界面 不会显示多个
intent.putExtra("test","hello " + num);
PendingIntent pendingIntent = PendingIntent.getActivity(this, num, intent, PendingIntent.FLAG_UPDATE_CURRENT); //想要不同的 Pending intent 就要不同的 num 参参数
if (Build.VERSION.SDK_INT >= 26) { //解决 sdk 26 版本之上notifices 不显示的问题
NotificationChannel channel = new NotificationChannel("channel_id", "channel_name", NotificationManager.IMPORTANCE_HIGH);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}
Notification.Builder notification = new Notification.Builder(this,"channel_id");
notification.setSmallIcon(R.mipmap.ic_launcher)
.setSmallIcon(R.drawable.ic_launcher_background)//设置小图标
.setContentTitle("这是标题")
.setContentText("这是内容" + num)
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.build();
notificationManager.notify(num,notification.build());
} else{
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher_background)//设置小图标
.setContentTitle("这是标题")
.setContentText("这是内容" + num)
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.build();
notificationManager.notify(num, notification); //想要不同的 notifice 就要不同的num 参数
}
}
}
TestActivity.java
package com.example.menglux.mynotify;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
/**
* Created by menglux on 14/8/2018.
*/
public class TestActivity extends AppCompatActivity {
private String TAG = "TestActivity: ";
private TextView textView;
private String test = "";
//当使用多notifition 的时候,跳转同一个界面
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
System.out.println(TAG + "onNewIntent: ");
if(intent != null){
setIntent(intent);
getIntentData();
setTest();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
textView = (TextView) findViewById(R.id.hello_notify_id);
getIntentData();
setTest();
}
private void setTest() {
textView.setText(test);
}
private void getIntentData() {
Intent intent = getIntent();
test = intent.getStringExtra("test");
System.out.println("test:" + test);
}
}
文件参考:
Notification跳转到Activity的几种情况及传值问题!
https://blog.csdn.net/xg1057415595/article/details/80038521
扫描二维码关注公众号,回复:
2979594 查看本文章