Notification 跳转到 Activity

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 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_27061049/article/details/81773714