1. 程式人生 > >Android 8.0 通知欄不顯示

Android 8.0 通知欄不顯示

由於 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);

經過測試之後,終於更新了一個版本到市場。