blob: d3a1ebe7888c044892da1085a2403e656a07daed [file] [log] [blame]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.github.dart_lang.jni;
import android.app.Activity;
import android.content.Context;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.PluginRegistry.Registrar;
public class JniPlugin implements FlutterPlugin, ActivityAware {
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
setup(binding.getApplicationContext());
}
public static void registerWith(Registrar registrar) {
JniPlugin plugin = new JniPlugin();
plugin.setup(registrar.activeContext());
}
private void setup(Context context) {
initializeJni(context, getClass().getClassLoader());
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {}
// Activity handling methods
@Override
public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
Activity activity = binding.getActivity();
setJniActivity(activity, activity.getApplicationContext());
}
@Override
public void onDetachedFromActivityForConfigChanges() {}
@Override
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
Activity activity = binding.getActivity();
setJniActivity(activity, activity.getApplicationContext());
}
@Override
public void onDetachedFromActivity() {}
native void initializeJni(Context context, ClassLoader classLoader);
native void setJniActivity(Activity activity, Context context);
static {
System.loadLibrary("dartjni");
}
}