0

Я внедрил систему уведомлений в свое приложение для Android, и я хотел бы знать, есть ли способ установить Маленькую иконку как число/текст. Потому что в своем уведомлении я хочу отобразить количество новых заказов, которые пользователь имеет в маленьком поле значка. Есть ли способ сделать это без привлечения множества разных изображений с разными номерами и комбинирования их для генерации любого числа?Добавление номеров в значок уведомления

Это мой метод pushNotification:

public void PushNotification() 
    { 
     NotificationManager nm = (NotificationManager)getApplicationContext().getSystemService(NOTIFICATION_SERVICE); 
     Notification.Builder builder = new Notification.Builder(getApplicationContext()); 
     Intent notificationIntent = new Intent(getApplicationContext(), MainScreen.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),0,notificationIntent,0); 

     //set 
     builder.setContentIntent(contentIntent); 
     builder.setSmallIcon(R.drawable.chef_hat); 
     Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.chef_hat); 
     builder.setLargeIcon(largeIcon); 

     builder.setContentText("Click here to open the app."); 
     //Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
     //builder.setDefaults(Notification.DEFAULT_SOUND); 

     System.out.println("Subtraction: " + (auxiliar1 - auxiliar2)); 

     if (auxiliar1 - auxiliar2 == 1) { 
      builder.setContentTitle("You have a new order!"); 
     } else if ((auxiliar1 - auxiliar2) > 1){ 
      builder.setContentTitle("You have " + (auxiliar1 - auxiliar2) + " new orders!"); 
     } else { 
      builder.setContentTitle("You have a new order!"); 
     } 

     auxiliar1 = 0; 
     auxiliar2 = TabLayoutScreenActivity.orderSizeFixed; 

     if(android.os.Build.VERSION.SDK_INT>=21) { 
      builder.setColor(Color.parseColor("#D8540D")); 
     } 
     builder.setAutoCancel(true); 
     //builder.setDefaults(Notification.DEFAULT_ALL); 
     long[] v = {500,1000}; 
     builder.setVibrate(v); 
     if (PrefernceHelper.getString(MainScreen.this, Commons.Constants.NOTIFICATION_SOUD) == null) { 
      Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
      builder.setSound(uri); 
     } 
     else { 
      builder.setSound(Uri.parse(PrefernceHelper.getString(MainScreen.this, Commons.Constants.NOTIFICATION_SOUD))); 
     } 

     Notification notification = builder.build(); 
     nm.notify((int)System.currentTimeMillis(),notification); 
    } 
+0

, пожалуйста, напишите свой код –

+0

Я только что разместил свой код. –

ответ

0

Это является не тривиальной. В настоящий момент я считаю, что есть крючки для часов и календарных значений, которые могут изменять значки на основе времени или даты.

Некоторым разработчикам повезло вручную изменить значок, построив новый растровый рисунок, однако он попал и пропустил, будет ли новый значок загружен пусковой установкой без перезагрузки.

Я бы предложил создать виджет для вашего приложения!

+0

Спасибо за ответ. Тогда я попытаюсь создать виджет. –

0

Надеюсь, вы спрашиваете о значке уведомления, а не значке запуска.

Если вы спрашиваете о значках уведомления, идите сюда https://www.skoumal.net/en/android-how-draw-text-bitmap/

Я рекомендую использовать растровое изображение как часть методы setLargeIcon, так как маленький значок используются в качестве значка извещения приложения.

// notification icon 
builder.setSmallIcon(R.drawable.ic_notification); 

//you can use custom icon 
Bitmap largeIcon = createMyCustomIconWithNumber(); 
builder.setLargeIcon(largeIcon); 

Если вы спрашиваете о значке запуска, идите сюда. https://github.com/leolin310148/ShortcutBadger

Смежные вопросы