1
1
package com .instabug .flutter ;
2
2
3
- import android .annotation .SuppressLint ;
4
3
import android .app .Activity ;
4
+ import android .app .Application ;
5
5
import android .content .Context ;
6
6
import android .content .Intent ;
7
7
import android .graphics .Bitmap ;
8
+ import android .nfc .Tag ;
8
9
import android .os .Bundle ;
9
10
import android .util .Log ;
10
11
import android .view .View ;
22
23
import com .instabug .flutter .modules .RepliesApi ;
23
24
import com .instabug .flutter .modules .SessionReplayApi ;
24
25
import com .instabug .flutter .modules .SurveysApi ;
26
+ import com .instabug .flutter .util .ThreadManager ;
25
27
26
28
import java .util .concurrent .Callable ;
27
29
30
+ import io .flutter .embedding .engine .FlutterEngine ;
28
31
import io .flutter .embedding .engine .plugins .FlutterPlugin ;
29
32
import io .flutter .embedding .engine .plugins .activity .ActivityAware ;
30
33
import io .flutter .embedding .engine .plugins .activity .ActivityPluginBinding ;
35
38
public class InstabugFlutterPlugin implements FlutterPlugin , ActivityAware {
36
39
private static final String TAG = InstabugFlutterPlugin .class .getName ();
37
40
38
- private Activity activity ;
41
+ private Activity flutterActivity ;
42
+
43
+ public InstabugFlutterPigeon .InstabugFlutterApi instabugFlutterApi ;
44
+
45
+ Application .ActivityLifecycleCallbacks callbacks = new Application .ActivityLifecycleCallbacks () {
46
+ @ Override
47
+ public void onActivityCreated (@ NonNull Activity activity , @ Nullable Bundle savedInstanceState ) {
48
+ if (activity == flutterActivity ) {
49
+ Log .v (TAG , "onActivityCreated" );
50
+ }
51
+ }
52
+
53
+ @ Override
54
+ public void onActivityStarted (@ NonNull Activity activity ) {
55
+
56
+ if (activity == flutterActivity ) {
57
+ Log .v (TAG , "onActivityStarted" );
58
+ ThreadManager .runOnMainThread (new Runnable () {
59
+ @ Override
60
+ public void run () {
61
+ try {
62
+ if (instabugApi != null ) {
63
+ instabugApi .reportLastScreenChange ();
64
+ }
65
+ } catch (Exception e ) {
66
+ e .printStackTrace ();
67
+ }
68
+ }
69
+ });
70
+
71
+ }
72
+
73
+ }
74
+
75
+ @ Override
76
+ public void onActivityResumed (@ NonNull Activity activity ) {
77
+
78
+ }
79
+
80
+
81
+ @ Override
82
+ public void onActivityPaused (@ NonNull Activity activity ) {
83
+ if (activity == flutterActivity ) {
84
+ Log .v (TAG , "onActivityPaused" );
85
+ }
86
+ }
87
+
88
+ @ Override
89
+ public void onActivityStopped (@ NonNull Activity activity ) {
90
+ if (activity == flutterActivity ) {
91
+ Log .v (TAG , "onActivityStopped" );
92
+ }
93
+
94
+ }
95
+
96
+ @ Override
97
+ public void onActivitySaveInstanceState (@ NonNull Activity activity , @ NonNull Bundle outState ) {
98
+
99
+ }
100
+
101
+ @ Override
102
+ public void onActivityDestroyed (@ NonNull Activity activity ) {
103
+
104
+ }
105
+ };
39
106
40
- public static InstabugFlutterPigeon .InstabugFlutterApi instabugFlutterApi ;
41
107
PluginRegistry .ActivityResultListener resultListener ;
108
+ private InstabugApi instabugApi ;
42
109
43
110
@ Override
44
111
public void onAttachedToEngine (@ NonNull FlutterPluginBinding binding ) {
@@ -47,59 +114,58 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
47
114
48
115
@ Override
49
116
public void onDetachedFromEngine (@ NonNull FlutterPluginBinding binding ) {
50
- activity = null ;
117
+ flutterActivity = null ;
51
118
}
52
119
53
120
@ Override
54
121
public void onAttachedToActivity (@ NonNull ActivityPluginBinding binding ) {
55
- activity = binding .getActivity ();
122
+ flutterActivity = binding .getActivity ();
56
123
initOnActivityResultListener (binding );
57
-
58
-
59
124
}
60
125
61
126
private void initOnActivityResultListener (@ NonNull ActivityPluginBinding binding ) {
62
- if (resultListener !=null ) {
63
- binding .removeActivityResultListener (resultListener );
64
- }
65
-
66
- resultListener = new PluginRegistry .ActivityResultListener () {
67
- @ Override
68
- public boolean onActivityResult (int requestCode , int resultCode , @ Nullable Intent data ) {
69
- if (instabugFlutterApi != null ) {
70
- instabugFlutterApi .reportLastScreenChange (new InstabugFlutterPigeon .InstabugFlutterApi .Reply <Void >() {
71
- @ Override
72
- public void reply (Void reply ) {
73
-
74
- }
75
- });
76
- }
77
-
78
-
79
- return false ;
80
- }
81
- };
82
-
83
127
84
- binding .addActivityResultListener (resultListener );
128
+ Application app = flutterActivity .getApplication ();
129
+
130
+ app .unregisterActivityLifecycleCallbacks (callbacks );
131
+ app .registerActivityLifecycleCallbacks (callbacks );
132
+
133
+ // if (resultListener != null) {
134
+ // binding.removeActivityResultListener(resultListener);
135
+ // }
136
+
137
+ // resultListener = new PluginRegistry.ActivityResultListener() {
138
+ // @Override
139
+ // public boolean onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
140
+ // Log.v(TAG, "onActivityResult");
141
+ //
142
+ //
143
+ //
144
+ //
145
+ // return false;
146
+ // }
147
+ // };
148
+ //
149
+ //
150
+ // binding.addActivityResultListener(resultListener);
85
151
}
86
152
87
153
88
154
@ Override
89
155
public void onDetachedFromActivityForConfigChanges () {
90
- activity = null ;
156
+ flutterActivity = null ;
91
157
92
158
}
93
159
94
160
@ Override
95
161
public void onReattachedToActivityForConfigChanges (@ NonNull ActivityPluginBinding binding ) {
96
- activity = binding .getActivity ();
162
+ flutterActivity = binding .getActivity ();
97
163
initOnActivityResultListener (binding );
98
164
}
99
165
100
166
@ Override
101
167
public void onDetachedFromActivity () {
102
- activity = null ;
168
+ flutterActivity = null ;
103
169
}
104
170
105
171
private void register (Context context , BinaryMessenger messenger , FlutterRenderer renderer ) {
@@ -114,7 +180,7 @@ public Bitmap call() {
114
180
BugReportingApi .init (messenger );
115
181
CrashReportingApi .init (messenger );
116
182
FeatureRequestsApi .init (messenger );
117
- InstabugApi .init (messenger , context , screenshotProvider );
183
+ instabugApi = InstabugApi .init (messenger , context , screenshotProvider );
118
184
InstabugLogApi .init (messenger );
119
185
RepliesApi .init (messenger );
120
186
SessionReplayApi .init (messenger );
@@ -126,7 +192,7 @@ public Bitmap call() {
126
192
@ Nullable
127
193
private Bitmap takeScreenshot (FlutterRenderer renderer ) {
128
194
try {
129
- final View view = activity .getWindow ().getDecorView ().getRootView ();
195
+ final View view = flutterActivity .getWindow ().getDecorView ().getRootView ();
130
196
131
197
view .setDrawingCacheEnabled (true );
132
198
final Bitmap bitmap = renderer .getBitmap ();
0 commit comments