Nativescript,不能使用typescript-angular2扩展NotificationListenerService?

时间:2017-12-06 21:38:19

标签: java android nativescript angular2-nativescript nativescript-plugin

我试图收听移动设备收到的所有通知,我正在使用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");
        }
    });

但没有任何反应

1 个答案:

答案 0 :(得分:1)

搜索后,我们发现 NotificationListenerService 无法通过默认定义文件

  

android.d.ts

所以我们用了这个 NativeScript/android-dts-generator  使用我们需要的最新平台级别生成一个新的平台级别。它可以工作。

感谢所有