1

我正在尝试收听手机收到的所有通知,我正在使用 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文件并将其放入

平台/android/src/main/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 本机: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");
        }
    });

但再次没有任何反应

4

1 回答 1

1

经过搜索我们发现NotificationListenerService通过默认定义文件不可用

安卓.d.ts

所以我们使用这个 NativeScript/android-dts-generator 来生成一个具有我们需要的最新平台级别的新版本,并且它有效。

谢谢大家

于 2018-05-12T02:55:54.353 回答