【问题标题】:Notification Intent Not starting Actiivty android通知意图未启动 Activity android
【发布时间】:2017-06-08 09:01:12
【问题描述】:

我正在尝试在单击通知时启动 Activity,但它从未启动。下面是我发送通知的代码:

Intent notificationIntent = new Intent(this, MainActivity.class);
        notificationIntent.putExtra("Notification", type);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
        PendingIntent pIntent = PendingIntent.getActivity(this, 0,notificationIntent, 0);
        Notification n = new Notification.Builder(this)
                .setContentTitle(title)
                .setContentText(type)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentIntent(pIntent)
                .build();
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        notificationManager.notify(0, n);

我从来没有在点击通知时接到该活动的电话。

【问题讨论】:

  • 你在 AndroidManifest 中声明了这个服务类吗?
  • 我正在通过 FCM 接收通知,通知出现在通知栏中,但单击它永远不会调用活动。 Activity 已注册并在应用中运行。
  • getAcitivy 中的最后一个参数是标志,我认为它不应该是 0
  • 我已尝试放置所有标志但没有成功 FLAG_UPDATE_CURRENT

标签: android android-activity android-notifications android-pendingintent


【解决方案1】:

试试这个
用你的活动替换Splash_Activity.class,并确保你已经在Manifest.xml注册了这个课程

 protected void displayNotification(Context context, String[] strContent) {
            try {
                int numMessages = 0;

                /* Invoking the default notification service */
                NotificationCompat.Builder  mBuilder = new NotificationCompat.Builder(this);

                mBuilder.setContentTitle("New "+strContent[0].trim());
                mBuilder.setContentText("You've received new "+strContent[0].trim());
                mBuilder.setTicker("New "+strContent[0].trim()+" Alert!");
                mBuilder.setSmallIcon(R.drawable.ic_notif);
                mBuilder.setAutoCancel(true);
                mBuilder.setColor(context.getResources().getColor(R.color.ColorPrimary));
                mBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
                mBuilder.setDefaults(Notification.DEFAULT_ALL);
                mBuilder.setVibrate(new long[] {1000, 1000, 1000, 1000, 1000});         

                mBuilder.setLights(Color.RED, 3000, 3000);
             mBuilder.setNumber(++numMessages);

            NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

                String[] events = new String[strContent.length-1];
                for(int i=0; i<strContent.length-1; i++){
                    events[i] = new String(strContent[i+1].trim());
                }

                inboxStyle.setBigContentTitle("New "+strContent[0].trim()+" received!");

                for (int i=0; i < events.length; i++) {
                    inboxStyle.addLine(events[i]);
                }

                mBuilder.setStyle(inboxStyle);

                /* Creates an explicit intent for an Activity in your app */
                Intent resultIntent = new Intent(this, Splash_Activity.class);


                TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
                stackBuilder.addParentStack(Splash_Activity.class);

                /* Adds the Intent that starts the Activity to the top of the stack */
                stackBuilder.addNextIntent(resultIntent);
                PendingIntent resultPendingIntent =stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);

                mBuilder.setContentIntent(resultPendingIntent);
                NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

                /* notificationID allows you to update the notification later on. */
                mNotificationManager.notify(9999, mBuilder.build());
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }

【讨论】:

    【解决方案2】:

    当你想要通知时调用这样的方法

    public void showNotification() {
            PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, ShowNotificationDetailActivity.class), 0);
            Resources r = getResources();
            Notification notification = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.main)
                    .setContentTitle("title")
                    .setContentText("Welcome")
                    .setContentIntent(pi)
                    .setAutoCancel(true)
                    .build();
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            notificationManager.notify(0, notification);
        }
    

    创建一个这样的课程,并让您的课程有参加活动的意图

    public class ShowNotificationDetailActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Intent intent = new Intent(this, Main.class);
            startActivity(intent);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 2020-01-12
      • 1970-01-01
      相关资源
      最近更新 更多