From 4dc3e6f5294c5630efca1822b7aeb56e6fc337ed Mon Sep 17 00:00:00 2001 From: Kien Nguyen Date: Thu, 18 Nov 2021 17:30:18 +0700 Subject: [PATCH 1/2] (feature) implement show incoming call [graamteam/smartcontact-projects#2476] --- .gitignore | 9 ++ .idea/caches/build_file_checksums.ser | Bin 533 -> 537 bytes .idea/gradle.xml | 12 ++- .idea/jarRepositories.xml | 30 ++++++ .idea/misc.xml | 2 +- .idea/modules.xml | 9 -- app/build.gradle | 13 ++- app/google-services.json | 47 +++++++++ app/src/main/AndroidManifest.xml | 67 +++++++++--- .../at/xtools/pwawrapper/CallActivity.java | 31 ++++++ .../at/xtools/pwawrapper/CallService.java | 95 ++++++++++++++++++ .../java/at/xtools/pwawrapper/Constants.java | 6 +- .../HeadsUpNotificationActionReceiver.java | 36 +++++++ .../pwawrapper/JavaScriptInterface.java | 36 +++++++ .../at/xtools/pwawrapper/MainActivity.java | 61 ++++++++--- .../MyFirebaseMessagingService.java | 37 +++++++ .../pwawrapper/webview/WebViewHelper.java | 9 ++ app/src/main/res/drawable-xhdpi/acpt_btn.png | Bin 0 -> 6514 bytes app/src/main/res/drawable-xhdpi/call_bg.png | Bin 0 -> 8975 bytes .../res/drawable-xhdpi/ic_stat_ac_unit.png | Bin 0 -> 1308 bytes app/src/main/res/drawable-xhdpi/rjt_btn.png | Bin 0 -> 4878 bytes app/src/main/res/layout/activity_call.xml | 81 +++++++++++++++ app/src/main/res/values-de/strings.xml | 2 + app/src/main/res/values-en/strings.xml | 2 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 2 + build.gradle | 5 +- gradle.properties | 1 + gradle/wrapper/gradle-wrapper.properties | 4 +- 29 files changed, 548 insertions(+), 50 deletions(-) create mode 100644 .idea/jarRepositories.xml delete mode 100644 .idea/modules.xml create mode 100644 app/google-services.json create mode 100644 app/src/main/java/at/xtools/pwawrapper/CallActivity.java create mode 100644 app/src/main/java/at/xtools/pwawrapper/CallService.java create mode 100644 app/src/main/java/at/xtools/pwawrapper/HeadsUpNotificationActionReceiver.java create mode 100644 app/src/main/java/at/xtools/pwawrapper/JavaScriptInterface.java create mode 100644 app/src/main/java/at/xtools/pwawrapper/MyFirebaseMessagingService.java create mode 100644 app/src/main/res/drawable-xhdpi/acpt_btn.png create mode 100644 app/src/main/res/drawable-xhdpi/call_bg.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_stat_ac_unit.png create mode 100644 app/src/main/res/drawable-xhdpi/rjt_btn.png create mode 100644 app/src/main/res/layout/activity_call.xml diff --git a/.gitignore b/.gitignore index 47a01f1..6e93aad 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,12 @@ local.properties .idea/vcs.xml *.iml +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml + # OS-specific files .DS_Store .DS_Store? @@ -35,3 +41,6 @@ local.properties .Trashes ehthumbs.db Thumbs.db +.idea/caches/build_file_checksums.ser +.idea/caches/build_file_checksums.ser +.idea/caches/build_file_checksums.ser diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 107a48338dfa79496967baa4de8aed27edfa8bc5..1bef91b83c3aef07d23ff2df1378f08c83c53dd0 100644 GIT binary patch delta 209 zcmbQrGLvP(bkoDHc9EMed;PAw_P%u6qZX)I)@V_*ZRop&=~pUr*t zJlzC6sc@&m3riSyCck486JR*HrFBKT_q?t|jW|Y-ZtDoA?zWSR=pKKKC zmB~GoB@7zQRxzQ)sYS&xjw!jBc`;D)Vb*bk?lhYn=Kg&haXrPTXgs-sQC98a z*P^oRoj2?BZ$3S2_=5Fz34@A$XmM&$v3_<{l0MWH{mJ_oJ?*yi#tC2h+VLp%MDPRG v8>#C`7z7dv3iOjoGjmd4&M9Q5V_*ZhU^>fIssFwVB|aTfY#Q#?w^aZDvBOYu diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2996d53..9bba60d 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,14 +1,20 @@ + diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..1593062 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 37a7509..d5d35ec 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 74f19b5..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index f3a7109..19ec114 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,10 +1,11 @@ apply plugin: 'com.android.application' +apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 28 defaultConfig { applicationId "at.xtools.pwawrapper" - minSdkVersion 20 + minSdkVersion 19 targetSdkVersion 28 versionCode 1 versionName "1.0" @@ -16,13 +17,21 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { + implementation platform('com.google.firebase:firebase-bom:29.0.0') + implementation 'com.google.firebase:firebase-messaging' implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support.constraint:constraint-layout:1.1.3' androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - implementation 'com.android.support:appcompat-v7:28.0.0' +// implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'androidx.appcompat:appcompat:1.2.0' testImplementation 'junit:junit:4.12' } diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..ea6e930 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "358518785097", + "project_id": "android-pwa-wrapper", + "storage_bucket": "android-pwa-wrapper.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:358518785097:android:77af61a87f6eace28eeb98", + "android_client_info": { + "package_name": "at.xtools.pwawrapper" + } + }, + "oauth_client": [ + { + "client_id": "358518785097-s8122ujh702e3mc27d3208n76baenoj6.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "at.xtools.pwawrapper", + "certificate_hash": "42e03e1c91a2ecb6a02e096174660addd5046e02" + } + }, + { + "client_id": "358518785097-jc5hmqp1alc2lg7f5h69bkdr50mq3fc3.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCpuWTJmrXZXkBJYTtSKwo4aGMSVwlr1GE" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "358518785097-jc5hmqp1alc2lg7f5h69bkdr50mq3fc3.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f60de54..cf2d09f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,33 +1,30 @@ - - - - - - - - + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/at/xtools/pwawrapper/CallActivity.java b/app/src/main/java/at/xtools/pwawrapper/CallActivity.java new file mode 100644 index 0000000..0b77956 --- /dev/null +++ b/app/src/main/java/at/xtools/pwawrapper/CallActivity.java @@ -0,0 +1,31 @@ +package at.xtools.pwawrapper; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.view.WindowManager; + +public class CallActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_call); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + setShowWhenLocked(true); + setTurnScreenOn(true); + } + + getWindow().addFlags( + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD + | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); + + stopService(new Intent(this, CallService.class)); + + } +} \ No newline at end of file diff --git a/app/src/main/java/at/xtools/pwawrapper/CallService.java b/app/src/main/java/at/xtools/pwawrapper/CallService.java new file mode 100644 index 0000000..7704466 --- /dev/null +++ b/app/src/main/java/at/xtools/pwawrapper/CallService.java @@ -0,0 +1,95 @@ +package at.xtools.pwawrapper; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.app.Service; +import android.content.Intent; +import android.graphics.Color; +import android.os.Build; +import android.os.IBinder; + +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; +import androidx.core.app.NotificationCompat; + +public class CallService extends Service { + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + Notification notification = buildNotification(intent); + startForeground(1, notification); + sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); + return START_NOT_STICKY; + } + + @Override + public void onDestroy() { + super.onDestroy(); + stopForeground(true); + } + + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + private Notification buildNotification(Intent intent) { + String title = intent.getStringExtra("title"); + String number = intent.getStringExtra("number"); + + Intent receiveCallAction = new Intent(this, HeadsUpNotificationActionReceiver.class); + receiveCallAction.putExtra("CALL_RESPONSE_ACTION_KEY", "CALL_RECEIVE_ACTION"); + receiveCallAction.setAction("RECEIVE_CALL"); + + Intent cancelCallAction = new Intent(this, HeadsUpNotificationActionReceiver.class); + cancelCallAction.putExtra("CALL_RESPONSE_ACTION_KEY", "CALL_CANCEL_ACTION"); + cancelCallAction.setAction("CANCEL_CALL"); + + PendingIntent receiveCallPendingIntent = PendingIntent.getBroadcast(this, 1200, receiveCallAction, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent cancelCallPendingIntent = PendingIntent.getBroadcast(this, 1201, cancelCallAction, PendingIntent.FLAG_UPDATE_CURRENT); + + + Intent fullScreenIntent = new Intent(this, CallActivity.class); + fullScreenIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + PendingIntent fullScreenPendingIntent = PendingIntent.getActivity(this, 0, fullScreenIntent, PendingIntent.FLAG_ONE_SHOT); + + + String channelId = ""; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + channelId = createNotificationChannel("incoming_call", "Incoming call"); + } + + NotificationCompat.Builder notificationBuilder = + new NotificationCompat.Builder(this, channelId) + .setSmallIcon(R.drawable.ic_appbar) + .setContentTitle(title) + .setContentText(number) + .setAutoCancel(true) + .setPriority(NotificationCompat.PRIORITY_HIGH) + .setCategory(NotificationCompat.CATEGORY_CALL) + .addAction(R.drawable.acpt_btn, "Answer", receiveCallPendingIntent) + .addAction(R.drawable.rjt_btn, "Decline", cancelCallPendingIntent) + // Use a full-screen intent only for the highest-priority alerts where you + // have an associated activity that you would like to launch after the user + // interacts with the notification. Also, if your app targets Android 10 + // or higher, you need to request the USE_FULL_SCREEN_INTENT permission in + // order for the platform to invoke this notification. + .setFullScreenIntent(receiveCallPendingIntent, true); + notificationBuilder.setAutoCancel(true); + Notification incomingCallNotification = notificationBuilder.build(); + return incomingCallNotification; + } + + @RequiresApi(Build.VERSION_CODES.O) + private String createNotificationChannel(String channelId, String channelName) { + NotificationChannel chan = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_HIGH); + chan.setLightColor(Color.BLUE); + chan.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); + NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + notificationManager.createNotificationChannel(chan); + return channelId; + } +} \ No newline at end of file diff --git a/app/src/main/java/at/xtools/pwawrapper/Constants.java b/app/src/main/java/at/xtools/pwawrapper/Constants.java index 13b136e..59752a1 100644 --- a/app/src/main/java/at/xtools/pwawrapper/Constants.java +++ b/app/src/main/java/at/xtools/pwawrapper/Constants.java @@ -3,8 +3,10 @@ public class Constants { public Constants(){} // Root page - public static String WEBAPP_URL = "https://www.leasingrechnen.at/"; - public static String WEBAPP_HOST = "leasingrechnen.at"; // used for checking Intent-URLs +// public static String WEBAPP_URL = "https://test.wephone.app/phone/"; + public static String WEBAPP_URL = "https://knguyen.wephone.app/phone/"; +// public static String WEBAPP_HOST = "test.wephone.app"; // used for checking Intent-URLs + public static String WEBAPP_HOST = "knguyen.wephone.app"; // used for checking Intent-URLs // User Agent tweaks public static boolean POSTFIX_USER_AGENT = true; // set to true to append USER_AGENT_POSTFIX to user agent diff --git a/app/src/main/java/at/xtools/pwawrapper/HeadsUpNotificationActionReceiver.java b/app/src/main/java/at/xtools/pwawrapper/HeadsUpNotificationActionReceiver.java new file mode 100644 index 0000000..685a4d2 --- /dev/null +++ b/app/src/main/java/at/xtools/pwawrapper/HeadsUpNotificationActionReceiver.java @@ -0,0 +1,36 @@ +package at.xtools.pwawrapper; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class HeadsUpNotificationActionReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + if (intent != null && intent.getExtras() != null) { + String action = intent.getStringExtra("CALL_RESPONSE_ACTION_KEY"); + + if (action != null) { + performClickAction(context, action); + } + + Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); + context.sendBroadcast(it); + context.stopService(new Intent(context, CallService.class)); + } + } + + private void performClickAction(Context context, String action) { + if (action.equals("CALL_RECEIVE_ACTION")) { + Intent openIntent = null; + openIntent = new Intent(context, CallActivity.class); + openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(openIntent); + } else if (action.equals("CALL_CANCEL_ACTION")) { + context.stopService(new Intent(context, CallService.class)); + Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); + context.sendBroadcast(it); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/at/xtools/pwawrapper/JavaScriptInterface.java b/app/src/main/java/at/xtools/pwawrapper/JavaScriptInterface.java new file mode 100644 index 0000000..fe1907a --- /dev/null +++ b/app/src/main/java/at/xtools/pwawrapper/JavaScriptInterface.java @@ -0,0 +1,36 @@ +package at.xtools.pwawrapper; + +import android.app.Activity; +import android.util.Log; +import android.webkit.JavascriptInterface; +import android.widget.Toast; + +import androidx.annotation.NonNull; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.messaging.FirebaseMessaging; + +public class JavaScriptInterface { + Activity mActivity; + + public JavaScriptInterface(Activity activity) { + this.mActivity = activity; + } + + @JavascriptInterface + public void subscribeToTopic(String userId) { + FirebaseMessaging.getInstance().subscribeToTopic("incoming-call") + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + String msg = "Subscribed to incoming-call topic " + userId; + if (!task.isSuccessful()) { + msg = "Failed to subscribe to incoming-call topic"; + } + Log.d("JavaScriptInterface", msg); + Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT).show(); + } + }); + } +} diff --git a/app/src/main/java/at/xtools/pwawrapper/MainActivity.java b/app/src/main/java/at/xtools/pwawrapper/MainActivity.java index 0e20a64..a4c0744 100644 --- a/app/src/main/java/at/xtools/pwawrapper/MainActivity.java +++ b/app/src/main/java/at/xtools/pwawrapper/MainActivity.java @@ -1,9 +1,20 @@ package at.xtools.pwawrapper; +import android.app.PendingIntent; +import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.support.v7.app.AppCompatActivity; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; + import android.os.Bundle; +import android.util.Log; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.messaging.FirebaseMessaging; import at.xtools.pwawrapper.ui.UIManager; import at.xtools.pwawrapper.webview.WebViewHelper; @@ -34,25 +45,27 @@ protected void onCreate(Bundle savedInstanceState) { Intent i = getIntent(); String intentAction = i.getAction(); // Handle URLs opened in Browser - if (!intentHandled && intentAction != null && intentAction.equals(Intent.ACTION_VIEW)){ - Uri intentUri = i.getData(); - String intentText = ""; - if (intentUri != null){ - intentText = intentUri.toString(); - } - // Load up the URL specified in the Intent - if (!intentText.equals("")) { - intentHandled = true; - webViewHelper.loadIntentUrl(intentText); - } - } else { - // Load up the Web App - webViewHelper.loadHome(); - } + if (!intentHandled && intentAction != null && intentAction.equals(Intent.ACTION_VIEW)) { + Uri intentUri = i.getData(); + String intentText = ""; + if (intentUri != null) { + intentText = intentUri.toString(); + } + // Load up the URL specified in the Intent + if (!intentText.equals("")) { + intentHandled = true; + webViewHelper.loadIntentUrl(intentText); + } + } else { + // Load up the Web App + webViewHelper.loadHome(); + } } catch (Exception e) { // Load up the Web App webViewHelper.loadHome(); } + +// this.subscribeToTopic(); } @Override @@ -76,4 +89,20 @@ public void onBackPressed() { super.onBackPressed(); } } + + private void subscribeToTopic() { + FirebaseMessaging.getInstance().subscribeToTopic("weather") + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + String msg = "Subscribed to weather topic"; + if (!task.isSuccessful()) { + msg = "Failed to subscribe to weather topic"; + } + Log.d("MainActivity", msg); + Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); + } + }); + } } + diff --git a/app/src/main/java/at/xtools/pwawrapper/MyFirebaseMessagingService.java b/app/src/main/java/at/xtools/pwawrapper/MyFirebaseMessagingService.java new file mode 100644 index 0000000..e91c1af --- /dev/null +++ b/app/src/main/java/at/xtools/pwawrapper/MyFirebaseMessagingService.java @@ -0,0 +1,37 @@ +package at.xtools.pwawrapper; + +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.os.IBinder; + +import com.google.firebase.messaging.FirebaseMessagingService; +import com.google.firebase.messaging.RemoteMessage; + +import java.util.Map; + +public class MyFirebaseMessagingService extends FirebaseMessagingService { + @Override + public void onMessageReceived(RemoteMessage remoteMessage) { + this.sendNotification(remoteMessage); + } + + private void sendNotification(RemoteMessage remoteMessage) { + String title = remoteMessage.getData().get("title"); + String number = remoteMessage.getData().get("number"); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Context context = getApplicationContext(); + Intent intent = new Intent(context, CallService.class); + intent.putExtra("title", title); + intent.putExtra("number", number); + context.startForegroundService(intent); + } else { + Intent intent = new Intent(this, CallService.class); + intent.putExtra("title", title); + intent.putExtra("number", number); + startService(intent); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/at/xtools/pwawrapper/webview/WebViewHelper.java b/app/src/main/java/at/xtools/pwawrapper/webview/WebViewHelper.java index f19f49c..dfe3e39 100644 --- a/app/src/main/java/at/xtools/pwawrapper/webview/WebViewHelper.java +++ b/app/src/main/java/at/xtools/pwawrapper/webview/WebViewHelper.java @@ -13,6 +13,7 @@ import android.os.Handler; import android.os.Message; import android.webkit.CookieManager; +import android.webkit.HttpAuthHandler; import android.webkit.WebChromeClient; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; @@ -21,6 +22,7 @@ import android.webkit.WebViewClient; import at.xtools.pwawrapper.Constants; +import at.xtools.pwawrapper.JavaScriptInterface; import at.xtools.pwawrapper.R; import at.xtools.pwawrapper.ui.UIManager; @@ -81,6 +83,8 @@ public void setupWebView() { // must be set for our js-popup-blocker: webSettings.setSupportMultipleWindows(true); + webView.addJavascriptInterface(new JavaScriptInterface(this.activity), "Android"); + // PWA settings if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { webSettings.setDatabasePath(activity.getApplicationContext().getFilesDir().getAbsolutePath()); @@ -167,6 +171,11 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc } } } + + @Override + public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { + handler.proceed("wephone", "smartcontact"); + } }); } diff --git a/app/src/main/res/drawable-xhdpi/acpt_btn.png b/app/src/main/res/drawable-xhdpi/acpt_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f5ce3e2ed60f9004246cbe48053d9e43721c93 GIT binary patch literal 6514 zcmV-&8I9(NP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91sGtJ?1ONa40RR91r~m)}0C9{R)&Kw)+(|@1RCodHT?u$qMV3Bw-^&7K zMOFo55dl#e2Nx7NCJ}_71Lz2&EFox1+dADYgEQS~kBYXR(~XUvimj+5ghks{6qHRM z#I!37HUlCci-3UuLCD6EJ$K?Wov{p11o+z;>D>52%0vzW&oBMGdY*_)snvz_q6mNBR$^RaTrVQnVa zq(6E6P}-0taEu7P%|s4&a36C`ONR_p6_=>k}vpv7G}L(`du!Ob2( zjY(5K!qL>0B+mm!`?-*R?6{Qyu`WRucjyicu31RRnYvE}S+#~~3JchLNOaDDsVB>= zSPbhCbU}I_klnw<&dGEnW}+2AkGaeY8W5|6z@+El?&|$9&tF4^)*+~8n&?>^jo*i0 zJ2aFzexovI!qNY0I8F70Rr;vbAZTIQG$iI6BxdLMWf#YiGdPY!orPbk7I92fm!!;1 z(4r25psDdyEP0kLr5A~ofg|C5C^)&ptWcPfpzn4{fx3n#v9I|M0_QX}xI-BXpyw;FG^H(wC;fjOukhAu)Y4PL;nq(Sc3+Gx+U%jUZ=C>pZ;7 zXiAUjhU$pw${=Tq231Ds^~-Q>bCf~l7THFE0AuSQCFyn}M)|QP=z^}e{O!zYB1~MRN9wT@gi2+z?=F4>;Lq$glo^Tbdyf ziXA~0W)8+ZKxLn@2aL zE~!pq;PfYGVd}qvyJ;=1+f0u^c|;a5K>+KL>XhnMXQyuyPyc095E+tnE{90o2m~0M z1IaNO3aY4e)WzvXP^HgF&AQN>y40L$5@prkbY$t(C)J0bG+J+Te~uW6KBsAjq^lqm zkRT1$V|35I4@&c#G?gUCsVgH)mN*Wau+Eh^ZoZQ7B`AF%@=U^uc}~9dWd78Yxo!La zqi}$qxcmr8-)rlX&zIs05x@GeR!a1BkT}5c+daQU0D0xl;1{9-YauG6)d7LN(74Y5 z%j-*cq|IlLL`&vqfPfFa-*dNu_2hA&g3Nk>{N;17Xb*dGP#kCyri z4973}Cf>9Ak~X+$)576MDc-R%0&d(bdULe9MWZ7q&2`nD+li=&-IrFTPV8haht%YO z(X7aiPWzEj1wqc(Rj>7P>aG~#h@u>kYfz6lnyr|Zu=o)L;Bg$qg=Th!L~3Ryat-RS zl_ba+$4rZ|=+5(Ywjzoi89~X)oG|1S5y0Z*RtRK)heNGAgFS@b#FKqaxoNkUkPil@ z2n&gTVi3a7KV18y5ol018jltBIYU-}cp*3f3WtzOVY=`%D4E>`_xDIpZ4>)p3MF2% zIRa$q8Kld?F-IQWV25nNgEh&SC?!BazbSA>uL&@u!(hlrN{18YeuB*>zJX;2K7u9t z{)%VCx@^t}lNC=Lh7CXf_e1Rg$S<1- zpB?)uz#GC_7X;{Fhs1=wp-vwO-3M)OJ!(aAj_5KBKEHKcP;wIRy;FNZY2IqMtIr*} z)PqPg00N}&h+83Ca1Ba_WVy~9K!WOfBy|WOBMl~UuD*F0q$J=DlrUYBy9uV1-3xE; ze=p1!;x)|(&^b=d_Pv4~HWpli(g|)BBj?Y%Tpuwx322ApfJIqv2u-S)brB>$+#-$z zae*}`&3n4thj3rJWsVmla<01h{fIQDFE*q}sZY9e|KEIr#Ir64(6NnD&p`8{K{O~H z%xWQWW_7tCD$VJOIcd`3tobmx&qUuK@vI91qyUL){#{^#dQJ`YAIoIEL{8G27bIN3 zMKYD7Q~FHelAcH;1Oh?0=AWR&=~rWtmN?RyH#t=(iKGj&UI#%^6%k#p1EDD0?{;XWj_7<$Qlhwk7DsZ2Y<;-{tRRGx=SZ z)B*mMTgL#3+jYifH@0LUk``sX27;tM4C49dhkLCFs;v2x z$MMWlkF+NBz8w-BiFza*G)xM;!EWtqBV5F&LKQ6>iGg5jY`l zlp~TZ&0YYc#f9UJ0CG>^U~|H)3F?+}n?p=|Go-_nhDz5l`9gSLV91qXhRSH!%zZf6 znxKqXf}kCeG7ZOn`lXW%m%)|-_;9d=pv9Rz(R^ZGD-=3C(f9*HdZcuRRA>0BrL2If zDP$xL5*N?A7J@dpETKI~?lZ14s{DptFHG)WX#Td%+>47X1eKX(hNh<)s!UNgN6#KJ zg&ejM!i$Su1hvKhi7KPw%u&PZWZTJa;apR_;d0ng0J(*W9)cF8(V+*HF$A{#)OUv0 z%fdZN4VS^j0(3_M56VFt9)iknos|mvedRQR>i9R+X=X4Hch;eo?%kF9OI- zBq&&7frvjO{(%!pAN5-ke5vv; zS)BPIH*uQDI;L&>RnPK+D`8LdUVlMR`!&gEUsX60ARwnAL78Q2FZn~vjZMIl|9sA0 zP}F{dGAv=UBI@#4Cn6()f~5&cVE=Xh`>_4w4sN)Q?Qt`=v_wLh5I}-5+49T6NsIpe zn`bm3;T?HG&s(9rqn)>xxHkd;qM>*rbV9 z@%!~xv%ux%b0ETRF27GrR$PrkAk_im6RB-<7$*b2oGbD4j!fK8cYSANDWRr>$*j&! zT(u-tE@^^MTVw`K1`AT_u?v@|EhY2BPD@CI9k*}dVz-G-02%Q9P-t*Bnx}yABnh4b zLVeI$JC(Vnu@>(A?AKh1L??j!*Od=(NlPRW4Far|rkQL-P=aC2;q_4X{i0|PX%pwk zt9}PJbhgxvm^Njwum=%TwjDvKLLS-l7|`|%t^4HPsQuIXp+&nc@bQmpG^Z7A0wjB{l%6m!y+0&7lAxxs2I!+i+&IR*BXi%j zY~s~QoW1pV$mx~^Kks^j>J|0%mjmur4x)X6<5w$x!gNCGd5{0>Q9M*^B6M!oV(hxE zu?`QveHZ3ze+l;1?)MkfW_~hi&~eFQu~b8BRe$f$8XIlKX;;6Vr}9FD2U>N*@w zH=c$sj(^>p2hW>a{AVi3TM0K^l-@0@jUL4w)g$OA=8h_Pz~h z-_+NYo4Lwhs>CE#>VOGJmmxv(OeL5O!W=qXuI#11wI>;o*6xPmfwh<7G2b5@T8;fe z?E^8AXvN5Pl+%~Pl`gOQD0`EXv8AX%lQVE%lIagl2)ELLy|?+Nf5JuWy24OwCV9BQ zsPU-Dr!GXTt4>pr*eI1M6cRehB`HK`=MC_w_-9Wg2vj_|;jk0^xVRRo$L z*mm2OFs=u6<)e3xUio0ukzXA4zwqGYzlu7(X(J*xC768b5Kix%HLZ}G1#{tcjypC? zgRMVpK*vY4RfQK&>!D(ER5|jT9Z6P(uW4!uPF^vMJ7%nH*xNn(Lgt@ z%w|w?Job}+gF|&ca;=m52HXRCCvJs@2R#6ZQbJg1-_dJ4EWYv0u-*;z(%kEww+~5) zlgLfakaj|HE*5@JC;;pfUgtUuYs=RIow;;DLVIpSYv*hSqq~n(&i70}k{+l%=(m5` zIk_V|ebr+y7d0QxGoQv_-Zc$1IBQ{?1wbxfGWIDfuYb?;?XECwHhvTQJ(q+nmIxhb zQ_$f=!Zi$$MWH&&Fv-;aI)mFG@iJ{d3)4+5jX6`i@HmwV*v-@)7+^Ylty|8ynx z49uwc9}hu`(xyO@yjcHS&6&fs9f!jDycLj&Yf0_o{`2d{;Lkf=v1XARY$_DgEb;sc z%dp9srQjp=rW0G>mQU_5&FLY0N(J!3bggZ_h8aTouDTB8v9NxALR4*2=X(XhYf2mLaMamuvU-!cc_I-SkRvW1}e z^hJs7i!pAd&F=e}y>R`w#W%=u&q-2}`DOOuU~7Vc zL>q3z0hB(~*o0q$9{l>hVMf`npx(mga~?jUeV3~bG`t^?dkP1e(``-A8C6x-4_(n5 zDsEaKP_%amWUU+nM=W|)QrXeZTb0Lj55zsw^G&b^4bNN5J~S z%>zxJH_ZE3v}cKVg;OMxi+u%bOVD0JSL6CndrboRmRjTUv2&F$dhG;weDl-Xtm$bK zDP;6DQ3T$Kk0asR!U z9a&hJ@prSYxJS+@+-r?wTY^%!#EM(LCY}NzK--V6Ts90|-?bpnD~9?LIcciw=-K0j z$`La20Gw-CEaIEOTdCin*Faxy@f;X|k+_%r%@MD_C1?%A3{EAd1&loG#Kj?(`@_t? z2BkM8X`#Oe!Y?oa>yMPe70a%JKW%>z8V$B7T7LSlqB$)<&Y)ZitU(JiGQjP|&Xu*# zQ3^~aeM1JIEvJ`<&4G~@=jfY}pVU=y?yI%JS^_j)CrLehr^6mq+AR=F5tU);m5ji$XR_08Wpobvwj{i#$JVjlkW$^FK{1J zjkUN#cW7wbhfTe04q8x)X5@8Pr)%IBmrX|_U=uWNF`*@aw{MsNKjOg1G7b+&fW(Bp zF!f}4FquOWlw!Y?Iv@Yu8!RCa799fZ9LX@@l3RgJw;P26s!*2gymKL&Os}9;es=30 zq2Ar#9b|?3H*jicW+*|!Bj|$kJ^=3TQHuue5`@Z4ga<`{EGl1vTcC$^z6J(o4uUH( zFITKOXC$Sgh2>9bE=@SMLuB2nL2nP)emR z?G-fc@Ia^pMYup9Bmxqfha>l}_Cp6B#ka~ydIITe^6zD>1QriwL_pyXaw$v~K0!Te zMQ4SXu6Ru#;2#0TW(As*_ZK1jCSHyGR_dpCo25RAt3V(E1j=w=bYleXdl_yBH|6r}1yl z3DyYZ5U<-Cf%5a5iMW)}5p+^z9XO-{%*`Efjv_+5A>dZHLY#@hMMqG|sGxcS?f`u@ ziabS>ctU_ULR^W`MNd%5FlF>?oEt5TGH(&h?g$V!W;{aO!KfXJI;I+NQO9o3SicoN zgT`jTqnfX{ni~O{kWWY&0@F@ZXc1JK2Bn-y047bvJJBE2QWN%y>sC0Sk(>mHc7jqW zGpg5NfAl%J6;2?aaDh0%!SNv|36e7UDHM#0P#nr7k}wJZ;s9}hlhfV@^%msaPAO1V zUy5cNhkAR9`#3>>u`Q62lnqf%DfvT*p9ZDW6~Wr)p(c&1lk5Be8+U$6onzf|Bqw3W zSA(jxQk>o!H->+XkKI%+akVu96_6kehx}^p8>0AXP_+(7P^S|QW@pu^m$=#$0jy)H zYaPf*i0MO6N_qOJZTN|69O~$E^eCJS5um!II;OhT$>~Q>61bqM3<)|(kW{DIGcs8s zC)F+0v5rokKB%w2MHyMpjn->GmjsxcbWTe`yZQ6Re)i}j@5pqSvE z)^pM_N=~biqAii}1SQEmi=LMvNwcFZh=|7#0a^*4kThBAVq+c>8Pml3N=^$~Q^t(M z=43Voi6-9{pV&Q9lRjIi3l58od5CQe4eDKzqV$_^Qojhj_*!`N&O_Y$L!eyQeW_uC zo4-W0`k6z6dY6I#N=+V!{hvALEi9OLW24W#OTn5jHyJspxaQNK-jz_)VGuMmzKUL1 z-rnM#8v4De9R2Z##(Ajo(K@eiQ6WIsDHtM_79b~;(Ha`myEe!ix$OQeNNE|n zSf;wQE2^tCqdO(+L-Nx16%SyW;9JT4!x7qAd6q?@ss2VVDcj9HFP!Pl-l-#hP?^u z%|bd}9Nc5@tfyS8+*~AVU+-Yk-!q2CQOYGaO;m!Lao5$j(Bwj* zvK*}VTnskbxBqhdM=C)rxe*-B639Pw$hQdb@EpGc^{w5)w0=0ZdM&P{8h}Clk+l8s zxu5P+STq$R!yY8#Zp?Q#S}NFu&zo=}U6>C-KmwSy*P@0d+w7iuKz|0+_}ixtG66|B88stgvUj%Pz6F8* Y2ipPofsyrtIsgCw07*qoM6N<$f`&OnMF0Q* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/call_bg.png b/app/src/main/res/drawable-xhdpi/call_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..271ebafe41e4798c42e5f227972b1fb17f9948f3 GIT binary patch literal 8975 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_call.xml b/app/src/main/res/layout/activity_call.xml new file mode 100644 index 0000000..e40ff64 --- /dev/null +++ b/app/src/main/res/layout/activity_call.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2ce9744..1947280 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -3,4 +3,6 @@ Hier tippen um es erneut zu versuchen! Keine App gefunden. Keine App auf diesem Gerät kann die gewählte Aktion ausführen. + CallActivity + Incoming Call diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index a4ca516..8daffe4 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -3,4 +3,6 @@ Tap here to retry! App not found. No App on this device can carry out this action. + CallActivity + Incoming Call diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 3e9cbae..ade5c50 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -6,4 +6,5 @@ #FFFFFF #FFFFFF #4caf50 + #000000 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bcef444..ba6b8fb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,4 +4,6 @@ Tap here to retry! App not found. No App on this device can carry out this action. + CallActivity + Incoming Call diff --git a/build.gradle b/build.gradle index a359e95..31d39ae 100644 --- a/build.gradle +++ b/build.gradle @@ -6,8 +6,8 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.0' - + classpath "com.android.tools.build:gradle:4.1.3" + classpath 'com.google.gms:google-services:4.3.10' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -15,6 +15,7 @@ buildscript { allprojects { repositories { + google() jcenter() maven { url "https://maven.google.com" diff --git a/gradle.properties b/gradle.properties index aac7c9b..c79c847 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,3 +15,4 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.useAndroidX=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 995d300..eed1a29 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed May 15 15:21:45 CEST 2019 +#Tue Nov 16 17:32:38 ICT 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip From d0792879a0f032821d9f3101777ad39fadde2914 Mon Sep 17 00:00:00 2001 From: David Minh Phan Date: Wed, 29 Dec 2021 23:38:24 +0100 Subject: [PATCH 2/2] (fix) Add code to grant micro access to js code running inside webview --- .idea/deploymentTargetDropDown.xml | 17 +++++++++++++++++ .idea/runConfigurations.xml | 12 ------------ app/build.gradle | 6 +++--- app/src/main/AndroidManifest.xml | 3 +++ .../pwawrapper/webview/WebViewHelper.java | 18 ++++++++++++++++++ 5 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 .idea/runConfigurations.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..be81f06 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 19ec114..89e70e6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,11 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { - compileSdkVersion 28 + compileSdkVersion 29 defaultConfig { applicationId "at.xtools.pwawrapper" - minSdkVersion 19 - targetSdkVersion 28 + minSdkVersion 21 + targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cf2d09f..f3c1664 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,9 @@ + + +