Everyone, please help me
My Flutter Plugin Java can't start Intent service from android native please tell me to fix I created a Flutter plugin to connect to my watch. I created a Method Chanel, run Android native SDK, and I want the flutter plugin to run in foreground service so that it can sync data on background, but I can't run Intents, method onAttachedToActivity not call, please help all of you to fix this problem. this error
E/MethodChannel#releep_watch_connect: Failed to handle method call
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.Activity io.flutter.embedding.android.FlutterActivity.getActivity()' on a null object reference
at com.achatsocial.releep_watch_connect.ReleepWatchConnectPlugin.onMethodCall(ReleepWatchConnectPlugin.java:130)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:84)
at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:865)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:8051)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
public class ReleepWatchConnectPlugin
implements FlutterPlugin, MethodCallHandler, EventChannel.StreamHandler, ActivityAware {
/// The MethodChannel that will the communication between Flutter and native
/// Android
///
/// This local reference serves to register the plugin with the Flutter Engine
/// and unregister it
/// when the Flutter Engine is detached from the Activity
private FlutterActivity activity;
private MethodChannel channel;
private EventChannel stream_chanel;
private List<String> listVal = new ArrayList<>();
private Gson gson = new Gson();
private String[] permissionArray = new String[] {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_CONTACTS,
Manifest.permission.WRITE_CONTACTS,
Manifest.permission.CALL_PHONE
};
NotificationManager notificationManager;
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
YCBTClient.initClient(flutterPluginBinding.getApplicationContext(), true);
YCBTClient.registerBleStateChange(bleConnectResponse);
YCBTClient.deviceToApp(toAppDataResponse);
channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "releep_watch_connect");
channel.setMethodCallHandler(this);
stream_chanel = new EventChannel(flutterPluginBinding.getBinaryMessenger(), "scan_releep_watch");
stream_chanel.setStreamHandler(this);
notificationManager = (NotificationManager) activity.getSystemService(NOTIFICATION_SERVICE);
BinaryMessenger messenger = flutterPluginBinding.getBinaryMessenger();
}
@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
if (call.method.equals("syncHeartRate")) {
ArrayList lists = new ArrayList();
Intent intent = new Intent(activity.getActivity(), MyBleService.class);
intent.putExtra("text", "Hello");
activity.startService(intent);
activity.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
}
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
MyBleService.MyBinder myBinder = (MyBleService.MyBinder) iBinder;
MyBleService myService = myBinder.getService();
myService.setOnListenerCounter(new MyBleService.OnListenerCounter() {
@Override
public void onCountChange(int count) {
// tvCount.setText("Count: " + count);
}
});
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
}
};
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
channel.setMethodCallHandler(null);
}
@Override
public void onCancel(Object arguments) {
}
@Override
public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
activity = (FlutterActivity) binding.getActivity();
boolean backBoolean = PermissionUtils.checkPermissionArray(activity, permissionArray, 3);
}
@Override
public void onDetachedFromActivityForConfigChanges() {
}
@Override
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
}
@Override
public void onDetachedFromActivity() {
}
}