1. ホーム
  2. アンドロイド

[解決済み】Androidのプッシュ通知。通知にアイコンが表示されず、白い四角が表示される。

2022-04-18 06:11:56

質問

アプリが通知を生成するのですが、その通知に設定したアイコンが表示されません。代わりに、白い四角が表示されます。

アイコンのpngのサイズを変更してみました(寸法720x720, 66x66, 44x44, 22x22)。不思議なことに、より小さなサイズを使用すると、白い四角が小さくなります。

この問題や、通知の正しい生成方法についてググってみたところ、私のコードは正しいはずです。悲しいことに、物事はそうあるべきものではありません。

私の携帯電話は、Android 5.1.1のNexus 5です。この問題は、エミュレータ、Android 5.0.1のSamsung Galaxy s4、Android 5.0.1のMotorola Moto G(どちらも借用品で、今は持っていません)でも発生しています。

以下、通知用のコードと、スクリーンショットを2枚掲載します。より詳細な情報が必要な場合は、お気軽にお尋ねください。

皆さん、ありがとうございました。

@SuppressLint("NewApi") private void sendNotification(String msg, String title, String link, Bundle bundle) {
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
    resultIntent.putExtras(bundle);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            resultIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    Notification notification;
    Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notificationsound);
    notification = new Notification.Builder(this)
                .setSmallIcon(R.drawable.lg_logo)
                .setContentTitle(title)
                .setStyle(new Notification.BigTextStyle().bigText(msg))
                .setAutoCancel(true)
                .setContentText(msg)
                .setContentIntent(contentIntent)
                .setSound(sound)
                .build();
    notificationManager.notify(0, notification);
}

<イグ

解決方法は?

原因 Lollipop 5.0では、通知アイコンを白色で統一する必要があります。

<ブロッククオート

ターゲットSDKを20に設定することで、白いアイコンの問題を解決する場合、我々のアプリは、ターゲットSDKを20に設定することで、白いアイコンの問題を解決することができます。 の場合、Android Lollipopをターゲットにしていないため、使用できません。 ロリポップ特有の機能

ターゲットSdk21の解決策

ロリポップのマテリアルアイコンに対応したい場合は、ロリポップ以上のバージョンで透明なアイコンを作成してください。以下を参考にしてください。 https://design.google.com/icons/

をご覧ください。 http://developer.android.com/design/style/iconography.html Android Lollipopでは、白色のスタイルが通知の表示方法であることがわかります。

Lollipopでは、Googleは白い通知アイコンの後ろに表示される色を使用することも提案しています。リンクを参照してください。 https://developer.android.com/about/versions/android-5.0-changes.html

色(Colors)を追加したい場所 https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setColor(int)

ロリポップ以下とロリポップ以上のOSバージョンに対応した通知ビルダーの実装をお願いします。

Notification notification = new NotificationCompat.Builder(this);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    notification.setSmallIcon(R.drawable.icon_transperent);
    notification.setColor(getResources().getColor(R.color.notification_color));
} else { 
    notification.setSmallIcon(R.drawable.icon);
} 

注:setColorはLollipopでのみ利用可能で、アイコンの背景にのみ影響します。

あなたの問題を完全に解決します!