Android 8.0 通知欄不顯示
阿新 • • 發佈:2018-12-21
由於 Google Play 現在限制了上傳 APK 的 targetSdkVersion,所以在新專案中就開始把版本號升到最高,這樣一來之前前人寫的一些程式碼庫就會出現相容性的問題,比如下載更新 APK 時,FileProvider 問題(我上一篇有講到過)。比如在下載的過程中,之前寫好的通知欄中顯示進度。但是在 targetSdkVersion > 26 時,會被遮蔽掉。
在 new NotificationCompat.Builder(context) 之前適配版本是否大於26
mNotifyManager = (NotificationManager) mContext .getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel("channel_id", "channel", NotificationManager.IMPORTANCE_LOW); channel.setLightColor(Color.GREEN); channel.enableLights(true); channel.enableVibration(true); channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); mNotifyManager.createNotificationChannel(channel); }
另外 Android 8.0 還需要注意,新增 "允許未知來源" 許可權,因為在下載安裝 APK 時,高版本手機需要設定
- 在 AndroidManifest.xml 新增許可權
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
-
下載完安裝時,需要新增 Flags
Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);//檢測是否允許未知來源 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(uri, "application/vnd.android.package-archive"); context.startActivity(intent);
經過測試之後,終於更新了一個版本到市場。