web-dev-qa-db-ja.com

Android通知アイコンは白い円です

今日、通知アイコンに奇妙な問題があります。

このように見えます: enter image description here (白い円...)

私は何か悪いことをしましたか?

Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.icon_notification)
                .setContentTitle(this.getString(R.string.notification_title))
                .setContentText(this.getString(R.string.notification_text))
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

これが私のアイコン画像です(ここから新たにダウンロードしました https://material.io/icons/#ic_photo ): http://image.noelshack.com/fichiers/2016/44 /1478185219-icon-notification.png

私は何か見落としてますか ?

ちなみに、私はSDK 24を使用しており、現時点ではhdpiリソースフォルダーのみを作成しました。

編集#1:ldpimdpixhdpiアイコンを追加しましたが、何も変更されていません...

編集#2:より正確にするために、サービスからこの通知を作成しようとしています... FCMメッセージングサービス.。

8
PoulsQ

コンパイル中のキャッシュの問題のようです...最初に使用した画像が悪かった(完全に色付けされていた)ので、コンパイラがファイル名に何らかのキャッシュを作成したと思います。

私はWindowsで作業しており、これを実行しました。携帯電話からアプリをアンインストールし、再コンパイル時にAndroid sudio =>からのすべてのキャッシュを無効にします。アイコンはOKでした。

2
PoulsQ

CompileSDKversionが20を超える場合、通知アイコンは白地に透明な背景画像である必要があります。それ以外の場合、画像は白色の画像としてレンダリングされます。

アイコンを作成するためのガイドラインについては、以下のリンクもご覧ください

https://www.google.com/design/spec/patterns/notifications.html

また、通知アイコンジェネレーター。

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html#source.space.trim=1&source.space.pad=0&name=ic_stat_example

3
Ajith K P

背景のない通知アイコンを使用する必要があります。 Androidは円の背景を追加します。

で背景色を設定できます

.setColor(context.getResources().getColor(R.color.colorPrimary))

アプリのIDに一致させます。

内部のアイコンは白のままで、円は定義した色になります。

On Android StudioOn system barOn notification

2
inlacou

ランチャーアイコンの白いバージョンになる別のアイコンを生成する必要があります。 Uは以下のリンクを使用してそのようなアイコンを生成できます。

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html#source.type=clipart&source.clipart=ac_unit&source.space.trim=1&source.space.pad=0&name=ic_stat_ac_unit

注:背景が透明なランチャーアイコンのPNG画像をアップロードする必要があります。

アイコンを設定するために、uはこのような方法を持つことができます

private int getSmallIconForNotification(){
    return (Build.VERSION.SDK_INT>Build.VERSION_CODES.Lollipop)? R.mipmap.ic_stat_launcher : R.mipmap.ic_launcher;
}

コードの使用法:

private NotificationCompat.Builder createNotificationBuilder(){
    return new NotificationCompat.Builder(this)
            .setSmallIcon(getSmallIconForNotification())
            .setContentTitle("New Message")
            .setContentText("Hi there.....")
            .setAutoCancel(true);
}
0
Amit Tumkur

注:-デバイスにAndroidバージョンが20を超える場合は、背景が透明なアイコンを生成する必要があり、通知の生成中にこのスニペットを使用します

int currentapiVersion = Android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= Android.os.Build.VERSION_CODES.Lollipop){
        currentapiVersion=R.mipmap.ic_notification_lolipop;
} else{
        currentapiVersion=R.mipmap.ic_launcher;
}

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(currentapiVersion)......
0
Bhavnik