码迷,mamicode.com
首页 > 移动开发 > 详细

【Android异常】关于Notification启动时,startForeground报错

时间:2021-02-18 13:21:34      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:方法   UNC   tail   one   tno   cee   bsp   cti   exception   

遇到两个报错:

第一个权限问题报错,好解决

startForeground requires android.permission.FOREGROUND_SERVICE

Manifest给下权限就行

<manifest ...>
     ...
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
     ...
     <application ...>
     ...
</manifest>

 

第二个问题,Android 8.0以上需要Notification需要设置个Channel

android.app.RemoteServiceException: Bad notification for startForeground


解决方法如下:原博客

//以下为新增---------------------------------------------
 String CHANNEL_ONE_ID = "com.primedu.cn";
 String CHANNEL_ONE_NAME = "Channel One";
        NotificationChannel notificationChannel = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            notificationChannel = new NotificationChannel(CHANNEL_ONE_ID,
                    CHANNEL_ONE_NAME, NotificationManager.IMPORTANCE_HIGH);
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.setShowBadge(true);
            notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
            NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            manager.createNotificationChannel(notificationChannel);
        }
//--------------------------------------------------------以上为新增

 PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
        notification = new Notification.Builder(this).setChannelId(CHANNEL_ONE_ID)
                .setTicker("Nature")
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle("xxxx")
                .setContentText(musicList.size() > 0 && musicList != null ? musicList.get(currentMusic).radio_en_desc:"xxxxx")
                .setContentIntent(pendingIntent)
                .getNotification();
        notification.flags |= Notification.FLAG_NO_CLEAR;
        startForeground(1, notification);

我标记了一下哪些地方是新增的
同新增了一句.setChannelId(CHANNEL_ONE_ID)
就ok了,在运行就没问题了,通知正常开启

【Android异常】关于Notification启动时,startForeground报错

标签:方法   UNC   tail   one   tno   cee   bsp   cti   exception   

原文地址:https://www.cnblogs.com/zFrankie/p/14406546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!