我正在做一个React Native应用程序(但是我的问题主要与Android相关),我将在Android本机代码中捕获通知,然后通过回调将捕获的数据提供给Javascript 。
我正在使用BIND_NOTIFICATION_LISTENER_SERVICE
服务,并在NotificationListenerService
文件中为其指定了一个类Manifest
。
AndroidManifest.xml
<service
android:name=".NotificationListener"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
android:enabled="true">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
NotificationListenerService.java
public class NotificationListener extends NotificationListenerService {
Context context;
private String TAG = this.getClass().getSimpleName();
@Override
public void onCreate() {
super.onCreate();
// this method is not getting executed after 2 or 3 days of installation
Log.d("KBTCHECK", "NotificationListener - onCreate");
context = getApplicationContext();
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
// this method is not getting executed after 2 or 3 days of installation
Log.d("KBTCHECK", "NotificationListener - onNotificationPosted");
// My Logic here..
Intent msgrcv = new Intent("NOTIFICATION_POSTED_KBT");
msgrcv.putExtras(extras);
// Broadcasting it, so I'll capture in another module and send it to Javascript
LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv);
}
}
在这里,我不是手动触发NotificationListenerService
。我希望在Manifest
中指定它可以使Android系统自动触发它。
问题:
在安装通知的2/3天后,在接收通知时未调用NotificationListenerService的
onCreate
或onNotificationPosted
。
(我需要手动禁用/启用通知访问权限才能使其重新工作)
我的期望:
在特定时间间隔触发服务,以便即使它被android系统停止,它也应自动重新启动。
如果我手动触发,我可以安排它在任何时间间隔内触发,但是由于它是由Android自动触发的,所以我找不到方法(或者我不知道怎么做)在指定的时间间隔内执行触发操作。
请引导我以正确的方式实现预期的行为。
感谢您的时间和帮助。...(: