通知单击后从后台打开应用后运行功能

时间:2019-05-29 03:36:41

标签: java android notifications

我对Android开发很陌生。当应用程序在后台运行时,我已经能够收到弹出通知。当我单击它时,它成功加载了应用程序备份。但是,我想从页面中加载警报,但仅当从通知单击中打开警报时才可以。

这是用于生成通知的代码。任何帮助将不胜感激。

private void getNotificationForPasswordChange() {
    NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = "Hello";// The user-visible name of the channel.
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
        if (mNotificationManager != null)
            mNotificationManager.createNotificationChannel(mChannel);
    }

    Bitmap icon = BitmapFactory.decodeResource(getResources(),
            R.mipmap.ic_launcher);
    Intent i=new Intent(this, MainActivity.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent mainIntent = PendingIntent.getActivity(this, 0,
            i, PendingIntent.FLAG_UPDATE_CURRENT);

    Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
            .setContentTitle("Pronto Tracker")
            .setTicker("Pronto Tracker")
            .setContentText("Cannot connect to server. Location is not being updated.")
            .setSmallIcon(R.mipmap.ic_pronto_logo)
            .setLargeIcon(Bitmap.createScaledBitmap(icon, 128, 128, false))
            .setOngoing(true).setContentIntent(mainIntent).
                    build();
    mNotificationManager.notify(Constants.PASSWORD_CHANGE_NOTIFICATION_ID, notification);
}

2 个答案:

答案 0 :(得分:1)

您可以传递带有通知PendingIntent的警报消息。在PendingIntent .putExtra()中添加要显示为警报的消息或值,并在PendingIntent中指定要以对话框或其他形式显示警报的活动。

 Intent intent = new Intent(Application.getAppContext(), MainActivity.class);
 intent.putExtra("is_notification", true);
 intent.putExtra("alert_message", "Hello World!");
 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 PendingIntent lowIntent = PendingIntent.getActivity(mContext, 100, intent, PendingIntent.FLAG_CANCEL_CURRENT);

之后,将PendingIntent添加到您的通知中。 您需要做的第二件事是当用户点击通知时从Intent中获取数据。 在您的MainActivity中,添加以下代码以从Intent中获取数据:-

if (getIntent() != null) {
   String message = getIntent().getStringExtra("alert_message");
   boolean isNotification = getIntent().getBooleanExtra("is_notification", false);

    if(is_notification){
       // show alert
      }
    }

答案 1 :(得分:0)

您应该在MainActivity上使用onCreate函数 添加以下代码以降低您的意图: 意向receiveIntent = getIntent();

相关问题