jpush-flutter-plugin icon indicating copy to clipboard operation
jpush-flutter-plugin copied to clipboard

Channel为null,异常崩溃问题,版本号2.2.2(安卓手机:荣耀play5T手机有问题,小米手机正常)

Open robin2005 opened this issue 3 years ago • 2 comments

出错堆栈

1 java.lang.RuntimeException:Unable to start receiver com.jiguang.jpush.JPushPlugin$JPushReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.invokeMethod(java.lang.String, java.lang.Object)' on a null object reference 2 android.app.ActivityThread.handleReceiver(ActivityThread.java:4495) 3 ...... 4 Caused by: 5 java.lang.NullPointerException:Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.invokeMethod(java.lang.String, java.lang.Object)' on a null object reference 6 com.jiguang.jpush.JPushPlugin.transmitNotificationOpen(JPushPlugin.java:499) 7 com.jiguang.jpush.JPushPlugin$JPushReceiver.handlingNotificationOpen(JPushPlugin.java:433) 8 com.jiguang.jpush.JPushPlugin$JPushReceiver.onReceive(JPushPlugin.java:415) 9 android.app.ActivityThread.handleReceiver(ActivityThread.java:4486) 10 android.app.ActivityThread.access$2700(ActivityThread.java:252) 11 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2327) 12 android.os.Handler.dispatchMessage(Handler.java:110) 13 android.os.Looper.loop(Looper.java:219) 14 android.app.ActivityThread.main(ActivityThread.java:8401) 15 java.lang.reflect.Method.invoke(Native Method) 16 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 17 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1102)

出错堆栈

1 java.lang.RuntimeException:Unable to start receiver com.jiguang.jpush.JPushPlugin$JPushReceiver: java.lang.NullPointerException: Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.invokeMethod(java.lang.String, java.lang.Object)' on a null object reference 2 android.app.ActivityThread.handleReceiver(ActivityThread.java:4495) 3 ...... 4 Caused by: 5 java.lang.NullPointerException:Attempt to invoke virtual method 'void io.flutter.plugin.common.MethodChannel.invokeMethod(java.lang.String, java.lang.Object)' on a null object reference 6 com.jiguang.jpush.JPushPlugin.transmitNotificationReceive(JPushPlugin.java:563) 7 com.jiguang.jpush.JPushPlugin$JPushReceiver.handlingNotificationReceive(JPushPlugin.java:449) 8 com.jiguang.jpush.JPushPlugin$JPushReceiver.onReceive(JPushPlugin.java:413) 9 android.app.ActivityThread.handleReceiver(ActivityThread.java:4486) 10 android.app.ActivityThread.access$2700(ActivityThread.java:252) 11 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2327) 12 android.os.Handler.dispatchMessage(Handler.java:110) 13 android.os.Looper.loop(Looper.java:219) 14 android.app.ActivityThread.main(ActivityThread.java:8401) 15 java.lang.reflect.Method.invoke(Native Method) 16 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 17 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1102)

客户端加上 if (instance == null || JPushPlugin.instance.channel == null) { Log.d(TAG, "the instance is null"); return; } 可以避免崩溃,可以收到推送,但是不能JPushPlugin.instance.channel.invokeMethod到flutter上

robin2005 avatar Feb 23 '22 01:02 robin2005

同样的问题,暂时屏蔽掉了,希望尽快有解决方案。谢谢!

kapibara91 avatar Jul 04 '22 03:07 kapibara91

同样的问题,暂时屏蔽掉了,希望尽快有解决方案。谢谢!

@Override public void onAttachedToEngine(FlutterPluginBinding flutterPluginBinding) { channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "jpush"); channel.setMethodCallHandler(this); context = flutterPluginBinding.getApplicationContext(); instance = this; }

将instance = this; 移到onAttachedToEngine方法里面就没出现此问题了,

原始instance初始化在 JPushPlugin构造函数内 public JPushPlugin() { this.callbackMap = new HashMap<>(); this.sequence = 0; this.getRidCache = new ArrayList<>(); instance = this; }

robin2005 avatar Aug 09 '22 02:08 robin2005