我试图收听移动设备收到的所有通知,我正在使用nativescript& angular2,
我尝试过的第一个解决方案: -
安装tns-platform-declarations包并引用它之后
android.service['notification']['NotificationListenerService'].extend({
onNotificationPosted: (sbn) => {
console.log("got it");
console.log(sbn.getNotification().tickerText);
},
onCreate: () => {
console.log("Created");
}
});
很遗憾,发布的通知没有任何反应。
第二次尝试: -
我制作了一个java文件并将其放在
中平台/机器人/ SRC /主/ JAVA / COM / TNS / MoNotificationListener.java
package com.tns;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.Log;
import android.app.Notification;
import java.util.List;
import java.util.Set;
import java.util.Arrays;
import java.util.ArrayList;
import android.widget.RemoteViews;
import java.lang.reflect.Field;
import android.os.Parcelable;
import android.os.Parcel;
import android.text.TextUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.PendingIntent;
public class MoNotificationListener extends NotificationListenerService {
static PendingIntent pickCallIntent ;
static PendingIntent rejectCallIntent ;
static PendingIntent hangCallIntent ;
@Override
public void onCreate() {
Log.d("ReactNative", "Created");
super.onCreate();
}
@Override
public void onListenerConnected() {
Log.d("ReactNative", "Got onListenerConnected");
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
Log.d("Native", "Got Notification");
if(sbn.getNotification().tickerText !=null) {
Log.d("Native",sbn.getNotification().tickerText.toString());
Log.d("Native",sbn.getPackageName());
}
}
}
用进行测试
adb logcat *:S Native:V
并成功发布通知日志
添加到
中的Android清单应用程序/ App_Resources / Android设备/ AndroidManifest.xml中
<service
android:name="com.tns.WheemoNotificationListener"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
>
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
然后我试图从打字稿中扩展该类,以便在发布通知时收到通知。
android.service['notification']['NotificationListenerService'].extend("com.tns.notification.MoNotificationListener", {
onNotificationPosted: (sbn) => {
console.log("got it");
console.log(sbn.getNotification().tickerText);
},
onCreate: () => {
console.log("Created");
}
});
但没有任何反应
答案 0 :(得分:1)
搜索后,我们发现 NotificationListenerService 无法通过默认定义文件
android.d.ts
所以我们用了这个 NativeScript/android-dts-generator 使用我们需要的最新平台级别生成一个新的平台级别。它可以工作。
感谢所有