diff --git a/android/src/main/java/com/jiguang/jpush/JPushEventReceiver.java b/android/src/main/java/com/jiguang/jpush/JPushEventReceiver.java index fd74ea4f..26beaee7 100644 --- a/android/src/main/java/com/jiguang/jpush/JPushEventReceiver.java +++ b/android/src/main/java/com/jiguang/jpush/JPushEventReceiver.java @@ -1,6 +1,8 @@ package com.jiguang.jpush; import android.content.Context; +import android.os.Handler; +import android.os.Looper; import android.util.Log; import org.json.JSONException; @@ -17,9 +19,10 @@ import io.flutter.plugin.common.MethodChannel.Result; public class JPushEventReceiver extends JPushMessageReceiver { + private Handler handler = new Handler(Looper.getMainLooper()); @Override - public void onTagOperatorResult(Context context, JPushMessage jPushMessage) { + public void onTagOperatorResult(Context context, final JPushMessage jPushMessage) { super.onTagOperatorResult(context, jPushMessage); JSONObject resultJson = new JSONObject(); @@ -31,7 +34,7 @@ public void onTagOperatorResult(Context context, JPushMessage jPushMessage) { e.printStackTrace(); } - Result callback = JPushPlugin.instance.callbackMap.get(sequence);//instance.eventCallbackMap.get(sequence); + final Result callback = JPushPlugin.instance.callbackMap.get(sequence);//instance.eventCallbackMap.get(sequence); if (callback == null) { Log.i("JPushPlugin", "Unexpected error, callback is null!"); @@ -41,33 +44,42 @@ public void onTagOperatorResult(Context context, JPushMessage jPushMessage) { if (jPushMessage.getErrorCode() == 0) { // success Set tags = jPushMessage.getTags(); List tagList = new ArrayList<>(tags); - Map res = new HashMap<>(); + final Map res = new HashMap<>(); res.put("tags", tagList); - callback.success(res); + handler.post(new Runnable() { + @Override + public void run() { + callback.success(res); + } + }); } else { try { resultJson.put("code", jPushMessage.getErrorCode()); } catch (JSONException e) { e.printStackTrace(); } - callback.error(Integer.toString(jPushMessage.getErrorCode()), "", ""); + handler.post(new Runnable() { + @Override + public void run() { + callback.error(Integer.toString(jPushMessage.getErrorCode()), "", ""); + } + } + ); } JPushPlugin.instance.callbackMap.remove(sequence); } - @Override - public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) { + public void onCheckTagOperatorResult(Context context, final JPushMessage jPushMessage) { super.onCheckTagOperatorResult(context, jPushMessage); - int sequence = jPushMessage.getSequence(); - Result callback = JPushPlugin.instance.callbackMap.get(sequence); + final Result callback = JPushPlugin.instance.callbackMap.get(sequence); if (callback == null) { Log.i("JPushPlugin", "Unexpected error, callback is null!"); @@ -77,24 +89,33 @@ public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) if (jPushMessage.getErrorCode() == 0) { Set tags = jPushMessage.getTags(); List tagList = new ArrayList<>(tags); - Map res = new HashMap<>(); + final Map res = new HashMap<>(); res.put("tags", tagList); - callback.success(res); + handler.post(new Runnable() { + @Override + public void run() { + callback.success(res); + } + }); } else { - - callback.error(Integer.toString(jPushMessage.getErrorCode()), "", ""); + handler.post(new Runnable() { + @Override + public void run() { + callback.error(Integer.toString(jPushMessage.getErrorCode()), "", ""); + } + }); } JPushPlugin.instance.callbackMap.remove(sequence); } @Override - public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) { + public void onAliasOperatorResult(Context context, final JPushMessage jPushMessage) { super.onAliasOperatorResult(context, jPushMessage); int sequence = jPushMessage.getSequence(); - Result callback = JPushPlugin.instance.callbackMap.get(sequence); + final Result callback = JPushPlugin.instance.callbackMap.get(sequence); if (callback == null) { Log.i("JPushPlugin", "Unexpected error, callback is null!"); @@ -102,12 +123,21 @@ public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) { } if (jPushMessage.getErrorCode() == 0) { // success - Map res = new HashMap<>(); - res.put("alias", (jPushMessage.getAlias() == null)? "" : jPushMessage.getAlias()); - callback.success(res); - + final Map res = new HashMap<>(); + res.put("alias", (jPushMessage.getAlias() == null) ? "" : jPushMessage.getAlias()); + handler.post(new Runnable() { + @Override + public void run() { + callback.success(res); + } + }); } else { - callback.error(Integer.toString(jPushMessage.getErrorCode()), "", ""); + handler.post(new Runnable() { + @Override + public void run() { + callback.error(Integer.toString(jPushMessage.getErrorCode()), "", ""); + } + }); } JPushPlugin.instance.callbackMap.remove(sequence); diff --git a/example/pubspec.lock b/example/pubspec.lock index c3fe1c09..25c3dc07 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,70 +5,70 @@ packages: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.32.4" + version: "0.36.3" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.5.0" + version: "1.5.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.8" + version: "2.1.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" charcode: dependency: transitive description: name: charcode - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.14.11" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.2" + version: "2.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.6" csslib: dependency: transitive description: name: csslib - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.14.5" + version: "0.16.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.2" flutter: @@ -85,49 +85,49 @@ packages: dependency: transitive description: name: front_end - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.1.4" + version: "0.1.18" glob: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.7" html: dependency: transitive description: name: html - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.13.3+3" + version: "0.14.0+2" http: dependency: transitive description: name: http - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.11.3+17" + version: "0.12.0+2" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.5" + version: "2.0.6" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.3" io: dependency: transitive description: name: io - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.3" jpush_flutter: @@ -141,156 +141,149 @@ packages: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.1+1" json_rpc_2: dependency: transitive description: name: json_rpc_2 - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.9" + version: "2.1.0" kernel: dependency: transitive description: name: kernel - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.4" - logging: - dependency: transitive - description: - name: logging - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.11.3+2" + version: "0.3.18" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.3+1" + version: "0.12.5" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.6" mime: dependency: transitive description: name: mime - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.9.6+2" + version: "0.9.6+3" mockito: dependency: "direct dev" description: name: mockito - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.0" + version: "3.0.2" multi_server_socket: dependency: transitive description: name: multi_server_socket - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" node_preamble: dependency: transitive description: name: node_preamble - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.4" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.5" package_resolver: dependency: transitive description: name: package_resolver - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.4" + version: "1.0.10" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.6.2" - platform: + pedantic: dependency: transitive description: - name: platform - url: "https://pub.dartlang.org" + name: pedantic + url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.0" - plugin: + version: "1.5.0" + platform: dependency: transitive description: - name: plugin - url: "https://pub.dartlang.org" + name: platform + url: "https://pub.flutter-io.cn" source: hosted - version: "0.2.0+3" + version: "2.2.0" pool: dependency: transitive description: name: pool - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.6" + version: "1.4.0" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.2" quiver: dependency: transitive description: name: quiver - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.0+1" + version: "2.0.2" shelf: dependency: transitive description: name: shelf - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.7.3+3" + version: "0.7.5" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" shelf_static: dependency: transitive description: name: shelf_static - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.8" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.2.2+4" + version: "0.2.3" sky_engine: dependency: transitive description: flutter @@ -300,106 +293,113 @@ packages: dependency: transitive description: name: source_map_stack_trace - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.5" source_maps: dependency: transitive description: name: source_maps - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.10.7" + version: "0.10.8" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.4.1" + version: "1.5.5" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.3" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.6.8" + version: "2.0.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.1" + version: "1.1.0" test: dependency: "direct dev" description: name: test - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.0" - typed_data: + version: "1.6.1" + test_api: dependency: transitive description: - name: typed_data - url: "https://pub.dartlang.org" + name: test_api + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.6" - utf: + version: "0.2.4" + test_core: dependency: transitive description: - name: utf - url: "https://pub.dartlang.org" + name: test_core + url: "https://pub.flutter-io.cn" source: hosted - version: "0.9.0+5" + version: "0.2.3" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.6" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.8" vm_service_client: dependency: transitive description: name: vm_service_client - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.2.6" + version: "0.2.6+2" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.7+10" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.9" + version: "1.0.13" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.15" sdks: - dart: ">=2.0.0-dev.68.0 <3.0.0" + dart: ">=2.2.0 <3.0.0"