当前位置:   article > 正文

android 消息提醒_startforeground notificationmanager.notify

startforeground notificationmanager.notify

1.创建 MyBackgroundService.java  继承 Service

public class MyBackgroundService extends Service {
   
    @Override
    public void onCreate() {
        super.onCreate();
        Log.i("业务服务", "开起业务服务");
        //调用服务后在页面手机上创建一个通知消息。
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            NotificationChannel channel = null;
            channel = new NotificationChannel("100", getString(R.string.app_name), NotificationManager.IMPORTANCE_HIGH);
            notificationManager.createNotificationChannel(channel);
            Notification notification = new Notification.Builder(getApplicationContext(), "100")
                    .setVisibility(Notification.VISIBILITY_PRIVATE).build();
            startForeground(100, notification);
        }

    }
    @Override
    public int onStartCommand(Intent intent,int flsgs,int startId){
        timer.schedule(task, 60000, 60000);    //定时执行代码
        return  START_STICKY;
    }



    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
//构造消息(在需要发送消息的方法中调用方法)
private void sendMessgae(String my_channel_ID,String my_channel_NAME,String msgContext,int notifyid,String msgType){
    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0);
    String channelId = createNotificationChannel(my_channel_ID, my_channel_NAME, NotificationManager.IMPORTANCE_HIGH);
    NotificationCompat.Builder notification = new NotificationCompat.Builder(getApplicationContext(), channelId)
            .setContentTitle("管理系统")
            .setContentText(msgContext)
            .setContentIntent(pendingIntent)
            .setSmallIcon(R.drawable.newlogo)
            .setAutoCancel(true);
    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
    if(notification !=null){
        notificationManager.notify(notifyid,notification.build());
        savemsg(my_channel_ID+"",msgContext,msgType);
    }
}

//消息设置
private String createNotificationChannel(String channelID, String channelNAME, int level) {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        NotificationManager manager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationChannel channel = new NotificationChannel(channelID, channelNAME, level);
        //开启震动
        channel.enableVibration(true);
        //设置锁屏提示
        channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
        manager.createNotificationChannel(channel);
        return channelID;
    } else {
        return null;
    }
}

2.创建 DaemonService.java 守护服务

public class DaemonService extends Service {
        private final static String TAG = DaemonService.class.getSimpleName();

        @Override
        public void onCreate() {
            super.onCreate();
            Log.i("测试开启服务", "开始守护服务");
        }

        @Override
        public int onStartCommand(Intent intent,int flags,int startId){
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                startForegroundService(new Intent(this, MyBackgroundService.class));
            } else {
                startService(new Intent(this, MyBackgroundService.class));
            }
            return START_STICKY;
        }
}

 3.在 AndroidManifest.xml 中注册服务

<service android:name=".tools.DaemonService"
    android:process=":daemon" />

<service
    android:name=".tools.MyBackgroundService"
    android:enabled="true"
    android:exported="false"
    android:stopWithTask="false" />

手动关闭应用程序后后台进程一直存在。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/464499
推荐阅读
相关标签
  

闽ICP备14008679号