Запускать мой конкретный блок кода при получении уведомления от определенного приложения, даже если приложение не запущено - PullRequest
0 голосов
/ 01 октября 2019

Есть ли широковещательный приемник или класс NotificationListnerService. По сути, Я хочу запускать код в фоновом режиме при получении уведомления от конкретного приложения и показывать некоторый результат в потоке пользовательского интерфейса . Вы можете связать это с чем-то вроде того, что Chathead активируется автоматически при получении сообщения от WhatsApp или мессенджера. Я новичок в Android Извините, если спросите что-то не так Пожалуйста, поделитесь рабочим кодом, если вы знаете ответ.

1 Ответ

0 голосов
/ 01 октября 2019

вам нужно создать службу и как показано ниже

Manifest.xml

<service android:name=".MyNotificationListener"
  android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
 <intent-filter>
     <action android:name="android.service.notification.NotificationListenerService" />
 </intent-filter>

разрешение на добавление

android.permission.BIND_NOTIFICATION_LISTENER_SERVICE

и Служба

public class MyNotificationListenerextends NotificationListenerService {  

Context context;  

@Override  

public void onCreate() {  

    super.onCreate();  
    context = getApplicationContext();  

}  
@Override  

public void onNotificationPosted(StatusBarNotification sbn) {  
    String pack = sbn.getPackageName();  
    String ticker ="";  
    if(sbn.getNotification().tickerText !=null) {  
        ticker = sbn.getNotification().tickerText.toString();  
    }  
    Bundle extras = sbn.getNotification().extras;  
    String title = extras.getString("android.title");  
    String text = extras.getCharSequence("android.text").toString();  
    int id1 = extras.getInt(Notification.EXTRA_SMALL_ICON);  
    Bitmap id = sbn.getNotification().largeIcon;  


    Log.i("Package",pack);  
    Log.i("Ticker",ticker);  
    Log.i("Title",title);  
    Log.i("Text",text);  

    Intent msgrcv = new Intent("Msg");  
    msgrcv.putExtra("package", pack);  
    msgrcv.putExtra("ticker", ticker);  
    msgrcv.putExtra("title", title);  
    msgrcv.putExtra("text", text);  
    if(id != null) {  
        ByteArrayOutputStream stream = new ByteArrayOutputStream();  
        id.compress(Bitmap.CompressFormat.PNG, 100, stream);  
        byte[] byteArray = stream.toByteArray();  
        msgrcv.putExtra("icon",byteArray);  
    }  
    LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv);  


}  

@Override  

public void onNotificationRemoved(StatusBarNotification sbn) {  
    Log.i("Msg","Notification Removed");  

}  }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...