Starting an Android notification at startup

2019-08-17 06:10发布

问题:

This question is based off of this previous question of mine: Android - Set notification to never go away

I now realize that I need something to be triggered at startup to trigger the notification.

From my previous question, it looks like I can take two routes. Either start a service, or use a BroadcastReceiver. I think that starting a service is a little overkill (but what do I know). I am stuck while going with the BroadcastReceiver route. It works in general, but when I take my code for a notification I get a bunch of errors.

This is my code:

NotificationCompat.Builder mBuilder =
                    new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("My notification")
                    .setContentText("Hello World!");
            // Creates an explicit intent for an Activity in your app
            Intent resultIntent = new Intent(this, ResultActivity.class);
            //Intent.putExtra("My Notification");
            // The stack builder object will contain an artificial back stack for the
            // started Activity.
            // This ensures that navigating backward from the Activity leads out of
            // your application to the Home screen.
            TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
            // Adds the back stack for the Intent (but not the Intent itself)
            stackBuilder.addParentStack(ResultActivity.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);
            // mId allows you to update the notification later on.
            mNotificationManager.notify(i, mBuilder.build());

My errors:

Any ideas on this?

Summary: Is a service or broadcast receiver better (in this situation)? How do I solve these errors in my code (when you hover they say they are undefined)?

回答1:

Replace all instances of this on error lines with context.

BroadcastReciever does not implement a context unlike Activity and Service. All methods in which you have error require an instance of context