Skip to content

Commit 40348f0

Browse files
author
Quoc Khanh
committed
fix background
1 parent 18bf304 commit 40348f0

File tree

3 files changed

+43
-46
lines changed

3 files changed

+43
-46
lines changed

android/src/main/java/com/incomingcall/IncomingCallModule.java

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
import com.facebook.react.bridge.ReactMethod;
1313
import com.facebook.react.bridge.Callback;
1414
import com.facebook.react.bridge.Promise;
15+
import com.facebook.react.bridge.WritableMap;
1516

1617
public class IncomingCallModule extends ReactContextBaseJavaModule {
1718

1819
public static ReactApplicationContext reactContext;
1920
public static Activity mainActivity;
2021

2122
private static final String TAG = "RNIC:IncomingCallModule";
23+
private WritableMap headlessExtras;
2224

2325
public IncomingCallModule(ReactApplicationContext context) {
2426
super(context);
@@ -57,11 +59,6 @@ public void display(String uuid, String name, String avatar, String info) {
5759
public void dismiss() {
5860
final Activity activity = reactContext.getCurrentActivity();
5961

60-
// if (MainActivity.active) {
61-
// Intent i = new Intent(reactContext, MainActivity.class);
62-
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
63-
// reactContext.getApplicationContext().startActivity(i);
64-
// }
6562
assert activity != null;
6663
}
6764

@@ -85,22 +82,40 @@ public void backToForeground() {
8582
}
8683

8784
@ReactMethod
88-
public void getLaunchParameters(final Promise promise) {
89-
final Activity activity = getCurrentActivity();
90-
final Intent intent = activity.getIntent();
91-
Bundle b = intent.getExtras();
92-
String value = "";
93-
if (b != null) {
94-
value = b.getString("uuid", "");
85+
public void openAppFromHeadlessMode(String uuid) {
86+
Context context = getAppContext();
87+
String packageName = context.getApplicationContext().getPackageName();
88+
Intent focusIntent = context.getPackageManager().getLaunchIntentForPackage(packageName).cloneFilter();
89+
Activity activity = getCurrentActivity();
90+
boolean isOpened = activity != null;
91+
92+
if (!isOpened) {
93+
focusIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
94+
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
95+
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
96+
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
97+
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
98+
99+
final WritableMap response = new WritableNativeMap();
100+
response.putBoolean("isHeadless", true);
101+
response.putString("uuid", uuid);
102+
103+
this.headlessExtras = response;
104+
105+
getReactApplicationContext().startActivity(focusIntent);
95106
}
96-
promise.resolve(value);
97107
}
98108

99109
@ReactMethod
100-
public void clearLaunchParameters() {
101-
final Activity activity = getCurrentActivity();
102-
final Intent intent = activity.getIntent();
103-
Bundle b = new Bundle();
104-
intent.putExtras(b);
110+
public void getExtrasFromHeadlessMode(Promise promise) {
111+
if (this.headlessExtras != null) {
112+
promise.resolve(this.headlessExtras);
113+
114+
this.headlessExtras = null;
115+
116+
return;
117+
}
118+
119+
promise.resolve(null);
105120
}
106121
}

android/src/main/java/com/incomingcall/UnlockScreenActivity.java

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -124,45 +124,27 @@ public void onBackPressed() {
124124

125125
private void acceptDialing() {
126126
WritableMap params = Arguments.createMap();
127-
params.putBoolean("done", true);
127+
params.putBoolean("accept", true);
128128
params.putString("uuid", uuid);
129+
if (!IncomingCallModule.reactContext.hasCurrentActivity()) {
130+
params.putBoolean("isHeadless", true);
131+
}
129132

130133
sendEvent("answerCall", params);
131134

132-
// if (!foregrounded()) {
133-
// // App in background or killed, start app and add launch params
134-
// String packageNames = IncomingCallModule.reactContext.getPackageName();
135-
// Intent launchIntent = IncomingCallModule.reactContext.getPackageManager().getLaunchIntentForPackage(packageNames);
136-
// String className = launchIntent.getComponent().getClassName();
137-
// try {
138-
// Class<?> activityClass = Class.forName(className);
139-
// Intent i = new Intent(IncomingCallModule.reactContext, activityClass);
140-
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
141-
// Bundle b = new Bundle();
142-
// b.putString("uuid", uuid);
143-
// i.putExtras(b);
144-
// IncomingCallModule.reactContext.startActivity(i);
145-
// } catch (Exception e) {
146-
// Log.e("RNIncomingCall", "Class not found", e);
147-
// return;
148-
// }
149-
// }
150-
151135
finish();
152136
}
153137

154138
private void dismissDialing() {
155139
WritableMap params = Arguments.createMap();
156-
params.putBoolean("done", false);
140+
params.putBoolean("accept", false);
157141
params.putString("uuid", uuid);
158-
159-
if (IncomingCallModule.reactContext.hasCurrentActivity()) {
160-
// App in foreground or background, send event for app to listen
161-
sendEvent("endCall", params);
162-
} else {
163-
// App killed, need to do something after
142+
if (!IncomingCallModule.reactContext.hasCurrentActivity()) {
143+
params.putBoolean("isHeadless", true);
164144
}
165145

146+
sendEvent("endCall", params);
147+
166148
finish();
167149
}
168150

example/yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5443,7 +5443,7 @@ react-native-bootsplash@^2.2.4:
54435443

54445444
"react-native-incoming-call@git+https://github.com/bkdev98/react-native-incoming-call.git#v2":
54455445
version "2.0.0"
5446-
resolved "git+https://github.com/bkdev98/react-native-incoming-call.git#e09438f3d2af7d2f346aa77fa65c572f6f699a3d"
5446+
resolved "git+https://github.com/bkdev98/react-native-incoming-call.git#18bf304653dd5ded1b080c984bd01deddc1e2554"
54475447

54485448
54495449
version "0.62.2"

0 commit comments

Comments
 (0)