1
1
package com .flet .serious_python_android ;
2
-
2
+ import java . lang .*;
3
3
import android .content .Context ;
4
4
import android .content .ContextWrapper ;
5
5
import androidx .annotation .NonNull ;
6
6
import android .system .Os ;
7
+ import android .content .Intent ;
8
+ import android .app .Activity ;
7
9
8
10
import io .flutter .embedding .engine .plugins .FlutterPlugin ;
11
+ import io .flutter .embedding .engine .plugins .activity .ActivityAware ;
12
+ import io .flutter .embedding .engine .plugins .activity .ActivityPluginBinding ;
9
13
import io .flutter .plugin .common .MethodCall ;
10
14
import io .flutter .plugin .common .MethodChannel ;
11
15
import io .flutter .plugin .common .MethodChannel .MethodCallHandler ;
12
16
import io .flutter .plugin .common .MethodChannel .Result ;
13
17
14
18
/** AndroidPlugin */
15
- public class AndroidPlugin implements FlutterPlugin , MethodCallHandler {
19
+ public class AndroidPlugin implements FlutterPlugin , MethodCallHandler , ActivityAware {
20
+
21
+ public static final String MAIN_ACTIVITY_HOST_CLASS_NAME = "MAIN_ACTIVITY_HOST_CLASS_NAME" ;
22
+ public static Activity mActivity = null ;
23
+
16
24
/// The MethodChannel that will the communication between Flutter and native
17
25
/// Android
18
26
///
@@ -30,6 +38,16 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBindin
30
38
this .context = flutterPluginBinding .getApplicationContext ();
31
39
}
32
40
41
+ @ Override
42
+ public void onAttachedToActivity (@ NonNull ActivityPluginBinding activityPluginBinding ) {
43
+ mActivity = activityPluginBinding .getActivity ();
44
+ try {
45
+ Os .setenv (MAIN_ACTIVITY_HOST_CLASS_NAME , this .getClass ().getCanonicalName (), true );
46
+ } catch (Exception e ) {
47
+ // nothing to do
48
+ }
49
+ }
50
+
33
51
@ Override
34
52
public void onMethodCall (@ NonNull MethodCall call , @ NonNull Result result ) {
35
53
if (call .method .equals ("getPlatformVersion" )) {
@@ -38,6 +56,13 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
38
56
ContextWrapper contextWrapper = new ContextWrapper (context );
39
57
String nativeLibraryDir = contextWrapper .getApplicationInfo ().nativeLibraryDir ;
40
58
result .success (nativeLibraryDir );
59
+ } else if (call .method .equals ("loadLibrary" )) {
60
+ try {
61
+ System .loadLibrary (call .argument ("libname" ));
62
+ result .success (null );
63
+ } catch (Throwable e ) {
64
+ result .error ("Error" , e .getMessage (), null );
65
+ }
41
66
} else if (call .method .equals ("setEnvironmentVariable" )) {
42
67
String name = call .argument ("name" );
43
68
String value = call .argument ("value" );
@@ -56,4 +81,14 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
56
81
public void onDetachedFromEngine (@ NonNull FlutterPluginBinding binding ) {
57
82
channel .setMethodCallHandler (null );
58
83
}
84
+
85
+ @ Override
86
+ public void onDetachedFromActivity () {}
87
+
88
+ @ Override
89
+ public void onDetachedFromActivityForConfigChanges () {}
90
+
91
+ @ Override
92
+ public void onReattachedToActivityForConfigChanges (ActivityPluginBinding binding ) {}
93
+
59
94
}
0 commit comments