【Android異常】關於Notification啟動時,startForeground報錯


遇到兩個報錯:

第一個權限問題報錯,好解決

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了,在運行就沒問題了,通知正常開啟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM