Как обнаружить уведомление в Android? - PullRequest
0 голосов
/ 26 сентября 2018

Я делаю анимацию в Android и хочу приостановить ее всякий раз, когда на экране появляется уведомление.Например, смс, сообщение от мессенджера, whatsApp, viber и т. Д. Мне не нужно знать, что это за тип уведомления, или как-то обработать его.Мне просто нужно знать, когда он появляется, чтобы я мог вызвать метод pause ().Как мне этого добиться?

1 Ответ

0 голосов
/ 26 сентября 2018

Что вам нужно, это служба приема уведомлений.

public class NotificationService extends NotificationListenerService {  

    Context context;  

    @Override  
    public void onCreate() {  
        super.onCreate();  
        context = getApplicationContext();  
    }

    @Override  
    public void onNotificationPosted(StatusBarNotification sbn) {

        // Send a braoadcast with some data
        Intent notificationMessage = new Intent("SomeData"); 
        notificationMessage.putExtra("Hello", "World");  

        LocalBroadcastManager.getInstance(context).sendBroadcast(notificationMessage); 
    }  

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

    }  
}

Вы можете получать Локальную трансляцию в своей деятельности следующим образом

public class MainActivity extends Activity {

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        LocalBroadcastManager.getInstance(this).registerReceiver(new BroadcastReceiver() {

            @Override  
            public void onReceive(Context context, Intent intent) {  
                String data = intent.getStringExtra("Hello");  

                // Do something with the data
            }  
        }, new IntentFilter("SomeData"));  
    }  


}  

Также зарегистрировать услугу в манифесте

<service  
    android:name=".NotificationService"  
    android:label="@string/app_name"  
    android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">  
    <intent-filter>  
        <action android:name="android.service.notification.NotificationListenerService" />  
    </intent-filter>  
</service> 

Вы можете найти официальную документациюздесь https://developer.android.com/reference/android/service/notification/NotificationListenerService

Подробную демонстрацию также можно найти здесь http://www.androiddevelopersolutions.com/2015/05/android-read-status-bar-notification.html

...