From 467ec7c6726ad39dd9d2fee1a079ca0275003c98 Mon Sep 17 00:00:00 2001 From: david Date: Thu, 21 Mar 2019 16:03:37 +0800 Subject: [PATCH 1/4] Fix IllegalArgumentException --- android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index 1466545d..420fb2c0 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -49,7 +49,7 @@ // @see https://github.com/kbagchiGWC/voice-quickstart-android/blob/9a2aff7fbe0d0a5ae9457b48e9ad408740dfb968/exampleConnectionService/src/main/java/com/twilio/voice/examples/connectionservice/VoiceConnectionServiceActivity.java public class RNCallKeepModule extends ReactContextBaseJavaModule { - public static final int REQUEST_READ_PHONE_STATE = 394858; + public static final int REQUEST_READ_PHONE_STATE = 1337; public static final int REQUEST_REGISTER_CALL_PROVIDER = 394859; public static final String CHECKING_PERMS = "CHECKING_PERMS"; From 61701f8de02010fd871f434b38c9a342ef7543a3 Mon Sep 17 00:00:00 2001 From: dy93 Date: Thu, 21 Mar 2019 17:44:57 +0800 Subject: [PATCH 2/4] Move google() above jcenter() --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index 07e88d0c..fe2c8ef2 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,7 +1,7 @@ buildscript { repositories { - jcenter() google() + jcenter() } dependencies { From 0ff4096509f60ec2adaf98c83b222fc6e164124d Mon Sep 17 00:00:00 2001 From: bob Date: Fri, 22 Mar 2019 18:11:34 +0800 Subject: [PATCH 3/4] Added backToForeground method --- .../io/wazo/callkeep/RNCallKeepModule.java | 23 +++ index.d.ts | 136 ++++++++++++++++++ index.js | 8 ++ package.json | 1 + 4 files changed, 168 insertions(+) create mode 100644 index.d.ts diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index 420fb2c0..626635c0 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -49,6 +49,8 @@ // @see https://github.com/kbagchiGWC/voice-quickstart-android/blob/9a2aff7fbe0d0a5ae9457b48e9ad408740dfb968/exampleConnectionService/src/main/java/com/twilio/voice/examples/connectionservice/VoiceConnectionServiceActivity.java public class RNCallKeepModule extends ReactContextBaseJavaModule { + Activity mActivity = null; + public static final int REQUEST_READ_PHONE_STATE = 1337; public static final int REQUEST_REGISTER_CALL_PROVIDER = 394859; @@ -228,6 +230,20 @@ public static Boolean isConnectionServiceAvailable() { return Build.VERSION.SDK_INT >= 23; } + @ReactMethod + public void backToForeground() { + Context context = getAppContext(); + String packageName = context.getApplicationContext().getPackageName(); + Intent focusIntent = context.getPackageManager().getLaunchIntentForPackage(packageName).cloneFilter(); + + focusIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + + final Activity activity = getActivity(); + if (activity != null) { + activity.startActivity(focusIntent); + } + } + private void registerPhoneAccount(Context appContext) { if (!isConnectionServiceAvailable()) { return; @@ -296,6 +312,13 @@ private Context getAppContext() { return this.reactContext.getApplicationContext(); } + private Activity getActivity() { + Activity activity = getCurrentActivity(); + if (activity == null) activity = mActivity; + + return activity; + } + private class VoiceBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 00000000..955662e7 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,136 @@ +export type Events = 'didReceiveStartCallAction' | + 'answerCall' | + 'endCall' | + 'didActivateAudioSession' | + 'didDisplayIncomingCall' | + 'didPerformSetMutedCallAction'; + +type HandleType = 'generic' | 'number' | 'email'; + +interface IOptions { + ios: { + appName: string, + imageName?: string, + ringtoneSound?: string, + }, + android: { + alertTitle: string, + alertDescription: string, + cancelButton: string, + okButton: string, + }, +} + +export type DidReceiveStartCallActionPayload = { handle: string }; +export type AnswerCallPayload = { callUUID: string }; +export type EndCallPayload = AnswerCallPayload; +export type DidDisplayIncomingCallPayload = string | undefined; +export type DidPerformSetMutedCallActionPayload = boolean; + +export default class RNCallKeep { + static addEventListener(type: Events, handler: (args: any) => void) { + + } + + static removeEventListener(type: Events, handler: (args: any) => void) { + + } + + static async setup(options: IOptions): Promise { + + } + + static displayIncomingCall( + uuid: string, + handle: string, + localizedCallerName?: string, + handleType?: HandleType, + hasVideo?: boolean, + ) { + + } + + /** + * @description startCall method is available only on iOS. + */ + static startCall( + uuid: string, + handle: string, + handleType?: HandleType, + hasVideo: boolean, + contactIdentifier?: string, + ) { + + } + + /** + * @description reportConnectedOutgoingCallWithUUID method is available only on iOS. + */ + static reportConnectedOutgoingCallWithUUID(uuid: string) { + + } + + static endCall(uuid: string) { + + } + + static endAllCalls() { + + } + + /** + * @description supportConnectionService method is available only on Android. + */ + static supportConnectionService(): boolean { + + } + + /** + * @description hasPhoneAccount method is available only on Android. + */ + static async hasPhoneAccount(): Promise { + + } + + /** + * @description setMutedCall method is available only on iOS. + */ + static setMutedCall(uuid: string, muted: boolean) { + + } + + /** + * @description setMutedCall method is available only on iOS. + */ + static checkIfBusy(): Promise { + + } + + /** + * @description setMutedCall method is available only on iOS. + */ + static checkSpeaker(): Promise { + + } + + /** + * @description setAvailable method is available only on Android. + */ + static setAvailable(active: boolean) { + + } + + /** + * @description setAvailable method is available only on Android. + */ + static setCurrentCallActive() { + + } + + /** + * @description setAvailable method is available only on Android. + */ + static backToForeground() { + + } +} \ No newline at end of file diff --git a/index.js b/index.js index 18a88a3c..18d88809 100644 --- a/index.js +++ b/index.js @@ -148,6 +148,14 @@ class RNCallKeep { }); }; + backToForeground() { + if (isIOS) { + return; + } + + NativeModules.RNCallKeep.backToForeground(); + } + /* static holdCall(uuid, onHold) { RNCallKeepModule.setHeldCall(uuid, onHold); diff --git a/package.json b/package.json index 2877d226..c013eaaf 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "url": "https://github.com/wazo-pbx/react-native-callkeep/issues" }, "homepage": "https://github.com/wazo-pbx/react-native-callkeep#readme", + "typings": "./index.d.ts", "peerDependencies": { "react-native": ">=0.40.0" }, From 87783b78232a2db78b7e549fb46e95d535867a01 Mon Sep 17 00:00:00 2001 From: bob Date: Fri, 22 Mar 2019 18:17:28 +0800 Subject: [PATCH 4/4] Removed garbage code --- .../java/io/wazo/callkeep/RNCallKeepModule.java | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java index 626635c0..b4c8073a 100644 --- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java +++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java @@ -49,8 +49,6 @@ // @see https://github.com/kbagchiGWC/voice-quickstart-android/blob/9a2aff7fbe0d0a5ae9457b48e9ad408740dfb968/exampleConnectionService/src/main/java/com/twilio/voice/examples/connectionservice/VoiceConnectionServiceActivity.java public class RNCallKeepModule extends ReactContextBaseJavaModule { - Activity mActivity = null; - public static final int REQUEST_READ_PHONE_STATE = 1337; public static final int REQUEST_REGISTER_CALL_PROVIDER = 394859; @@ -238,10 +236,8 @@ public void backToForeground() { focusIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - final Activity activity = getActivity(); - if (activity != null) { - activity.startActivity(focusIntent); - } + Activity activity = getCurrentActivity(); + activity.startActivity(focusIntent); } private void registerPhoneAccount(Context appContext) { @@ -312,13 +308,6 @@ private Context getAppContext() { return this.reactContext.getApplicationContext(); } - private Activity getActivity() { - Activity activity = getCurrentActivity(); - if (activity == null) activity = mActivity; - - return activity; - } - private class VoiceBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) {