상태 표시줄 알림 아이콘 숨기기

3727 단어 Android

하고 싶은 일


상주하는 서비스에서Foreground 속성을 사용하기 위해 Notification을 지정했습니다.
상태 표시줄에 있는 아이콘이 눈에 띄는데 가능하면 삭제하고 싶습니다.
이전에는 빈 Notification 인스턴스를 통해 Foreground 속성을 지정하더라도 알림 영역에 표시되지 않았습니다.
최근 안드로이드에서 빈 notification을 사용하여Foreground 속성을 지정할 때 시스템이 자동으로 생성한 notification을 표시합니다.(Nexus 5를 통해 확인)
(참조: iBattery)


이 글은 알림 표시줄에서 Notification을 삭제할 수는 없지만 상태 표시줄에 대한 알림을 볼 수 없다는 방법을 소개했다.
(사용자가 싫어하는 것은 상태 표시줄에 항상 표시되는 내용...)

할 일


해야 할 일을 이루기 위해서는 두 가지가 있다.
  • 알림 아이콘을 투명하게 만듭니다
  • .
  • 상태막대의 표시 위치를 오른쪽에 가깝게
  • 투명 알림 아이콘


    이것은 매우 간단하다.Builder#setSmallIcon()에 투명한drawable를 주면 됩니다.
    res/drawable/ic_stat_transparent.xml
    ic_stat_transparent.xml
    <?xml version="1.0" encoding="utf-8"?>
    <color xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="#00000000" >
    </color>
    
    이렇게 하면 알림 표시줄이 펼쳐질 때도 아이콘이 투명하게 유지되므로 이니시에이터 아이콘 등 비트맵을 노티파이션으로 사용합니다.Builder#setLargeIcon()을 사용하여 지정합니다.
    Sample
    Drawable largeIconDrawable = getResources().getDrawable(R.drawable.ic_launcher);
    Bitmap largeIconBitmap = ((BitmapDrawable)largeIconDrawable).getBitmap();
    
    notificationBuilder.setLargeIcon(largeIconBitmap);
    

    상태막대의 표시 위치를 오른쪽으로


    상태 표시줄에 있는 아이콘의 위치는 API16이 준비한 Notification의 Prority가 지정한 정도입니다.
    Notification.Builder#setPrority(int pri)를 사용하여 설정할 수 있습니다.
    준비한 상수는요.
    PRIORITY_MAX = 2
    PRIORITY_HIGH = 1
    PRIORITY_DEFAULT = 0
    PRIORITY_LOW = -1
    PRIORITY_MIN = -2
    의 다섯 개.
    수치가 클수록 왼쪽에 표시되므로 PRIORITYMIN을 사용합니다.
    Sample
    // API 16以上のみ指定する
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
        notificationBuilder.setPriority(Notification.PRIORITY_MIN);
    }
    
    이렇게 투명한 알림 아이콘이 맨 오른쪽에 나타나면 알림 아이콘이 보이지 않습니다.
    알림란에서도 지울 수 있다면 좋겠지만, 도대체 그게 안 돼...

    좋은 웹페이지 즐겨찾기