8

Eski API'lerde çalışan bildirimleri almayı başardım, ancak Oreo'yu değil. Bildirimi oluşturmak uygulamamın hala iyi çalışmasına neden olur (logcat'ta hiç ileti yok), ancak SystemUI çalışırken ve sonsuz bir döngü içinde yeniden başlar.Android Oreo Bildirimi Çöküyor Sistem UI

java.lang.IllegalArgumentException: width and height must be > 0 

Kodum:

private void showPlayingNotification() { 
     NotificationCompat.Builder builder = mNotificationUtils.getAndroidChannelNotification(this, "Play", mMediaSessionCompat); 
     if(builder == null) { 
      Log.i("Play Notification","No notification found!"); 
      return; 
     } 

     mNotificationUtils.getManager().notify(101,builder.build()); 
} 

Oluşturduğum MediaPlayerService arasında onCreate içinde mNotificationUtils başlatıldı SystemUI süreci için LogCat içinde hatadır. simge için drawable için mipmap den

public class NotificationUtils extends ContextWrapper { 

    private NotificationManager mManager; 
    public static final String AUDIO_CHANNEL_ID = "com.liftyourheads.dailyreadings.dailyReadingsAudio"; 
    public static final String AUDIO_CHANNEL_NAME = "Daily Readings Audio Stream"; 

    public NotificationUtils(Context base) { 
     super(base); 
     createChannels(); 
    } 

    public void createChannels() { 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
      // create android channel 
      NotificationChannel dailyReadingsAudioChannel = new NotificationChannel(AUDIO_CHANNEL_ID, 
        AUDIO_CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH); 
      getManager().createNotificationChannel(dailyReadingsAudioChannel); 

     } 
    } 

    public NotificationManager getManager() { 
     if (mManager == null) { 
      mManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     } 
     return mManager; 
    } 

    public NotificationCompat.Builder getAndroidChannelNotification(Context context, String action, MediaSessionCompat mediaSession) { 

     if (action.equals("Play")) { 
      return MediaStyleHelper.from(context, mediaSession) 
        .addAction(new NotificationCompat.Action(android.R.drawable.ic_media_pause, "Pause", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_PLAY_PAUSE))) 
        .setStyle(
          new android.support.v4.media.app.NotificationCompat.MediaStyle() 
            .setShowActionsInCompactView(0) 
            .setMediaSession(mediaSession.getSessionToken())) 
        .setSmallIcon(R.mipmap.ic_launcher) 
        .setContentText("Content Text") 
        .setContentTitle("Content Title") 
        .setChannelId(AUDIO_CHANNEL_ID); 

     } else if (action.equals("Pause")) { 

      return MediaStyleHelper.from(context, mediaSession) 
        .addAction(new NotificationCompat.Action(android.R.drawable.ic_media_play, "Play", MediaButtonReceiver.buildMediaButtonPendingIntent(this, PlaybackStateCompat.ACTION_PLAY_PAUSE))) 
        .setStyle(
          new android.support.v4.media.app.NotificationCompat.MediaStyle() 
            .setShowActionsInCompactView(0) 
            .setMediaSession(mediaSession.getSessionToken())) 
        .setSmallIcon(R.mipmap.ic_launcher) 
        .setContentText("Content Text") 
        .setContentTitle("Content Title") 
        .setChannelId(AUDIO_CHANNEL_ID); 

     } 

     return null; 

    } } 

cevap

12

geçin. Daha fazla bilgi için this issue'a bakın.

+0

Teşekkür ederim! Sebebi buydu. –

3

sorunu çözmek sadece klasik simgeleri ile tüm adaptif simgeleri değiştirmek için Android O'da

yeni adaptif simgelere

ilgilidir. olursa olsun mipmap veya

çekilebilir Bazı referanslar ise: Bir bildirim oluşturmaya çalıştı Link 1 Link 2

0

My uygulama çökmüş oldu. Benim durumum için, bir Android Studio örnek projesi, aşağıdaki "AndroidManifest.xml aşağıdaki" Temel Etkinlik "kullanıyordum. Uygulama simgesi olarak mipmap/ic_launcher ve mipmap/ic_launcher_round kullanılmıştır.

<application 
    android:name=".DriveMeApp" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

proje ic_launcher.xml ve adaptif simgeler yukarıda ic_launcher_round.xml içerir. Kilitlenme sorunumu çözmek için her iki dosyayı da silmeliydim. Uyarlanabilir simge dosyaları silindikten sonra, png dosyaları uygulama simgesi olarak kullanılmalıdır.