From e47ae88bd4a08cec4f6dc587be1a3cb5e7dacaca Mon Sep 17 00:00:00 2001 From: preyearegmi Date: Wed, 9 Jan 2019 11:50:42 +0900 Subject: [PATCH] Javascript interface added --- .idea/caches/build_file_checksums.ser | Bin 605 -> 605 bytes .../view/AutoDebitWebBrowserV2.java | 39 +++++++++++++++++- .../AutoDebitAccountListingV2Activity.java | 15 ++++++- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index b399ec0cb404d0fbd5e0a35df681c5bffe134798..f4c4f77fd26c5916a28a678966d6f63ecbec8a34 100644 GIT binary patch delta 15 Xcmcc1a+hVo3>E_)bLWk74l)7&F)s!5 delta 15 Xcmcc1a+hVo3>KZ8Y`h!i9ApFlG1dk4 diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/AutoDebitWebBrowserV2.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/AutoDebitWebBrowserV2.java index 72f844be..4b8319b0 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/AutoDebitWebBrowserV2.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/AutoDebitWebBrowserV2.java @@ -1,8 +1,10 @@ package com.gmeremit.online.gmeremittance_native.autodebitV2.view; +import android.content.Context; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.webkit.JavascriptInterface; import android.webkit.WebView; import com.gmeremit.online.gmeremittance_native.autodebitV2.model.autodebitaccountlisting.AutoDebitAddSeriveAuthenticationServiceModel; @@ -28,6 +30,8 @@ public class AutoDebitWebBrowserV2 extends WebBrowserV2Activity { private WebView webView; private WebRequestModel webRequestModel; private CompositeDisposable compositeDisposable; + private WebAppInterface webInterface; + private final static String WEB_INTERFACE_NAME="Android"; @Override protected void doTask(WebRequestModel webRequestModel, WebView webView) { @@ -35,6 +39,7 @@ public class AutoDebitWebBrowserV2 extends WebBrowserV2Activity { this.webView = webView; this.webRequestModel = webRequestModel; this.compositeDisposable = new CompositeDisposable(); + this.webInterface=new WebAppInterface(AutoDebitWebBrowserV2.this); authenticateService(); } @@ -51,10 +56,17 @@ public class AutoDebitWebBrowserV2 extends WebBrowserV2Activity { .subscribeWith(new AutoDebitAddRequestObserver())); } + @Override + public void onBackPressed() { + finish(); + } + + @Override protected void onDestroy() { super.onDestroy(); + webView.removeJavascriptInterface(WEB_INTERFACE_NAME); if (compositeDisposable != null && !compositeDisposable.isDisposed()) compositeDisposable.dispose(); } @@ -67,8 +79,10 @@ public class AutoDebitWebBrowserV2 extends WebBrowserV2Activity { String url=data.getAuthenticatedUrl(); if(url==null||url.length()<1) showPopUpMessage("Invalid url", CustomAlertDialog.AlertType.FAILED,alertType -> finish()); - else - webView.loadUrl(data.getAuthenticatedUrl()); + else { + webView.addJavascriptInterface(webInterface,WEB_INTERFACE_NAME); + webView.loadUrl(data.getAuthenticatedUrl()); + } } @Override @@ -82,4 +96,25 @@ public class AutoDebitWebBrowserV2 extends WebBrowserV2Activity { } } + class WebAppInterface { + + Context mContext; + + /** Instantiate the interface and set the context */ + WebAppInterface(Context c) { + mContext = c; + } + + /** Show a toast from the web page */ + @JavascriptInterface + public void onAutoDebitAccountSuccess(String message) { + showPopUpMessage(message, CustomAlertDialog.AlertType.SUCCESS,alertType -> finish()); + } + + @JavascriptInterface + public void onAutoDebitAccountFailed(String message) { + showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,alertType -> finish()); + } + } + } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/autodebitaccountlisting/AutoDebitAccountListingV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/autodebitaccountlisting/AutoDebitAccountListingV2Activity.java index 83cb5285..9a53992b 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/autodebitaccountlisting/AutoDebitAccountListingV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/view/autodebitaccountlisting/AutoDebitAccountListingV2Activity.java @@ -4,6 +4,7 @@ import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.view.View; @@ -52,6 +53,8 @@ public class AutoDebitAccountListingV2Activity extends BaseActivity implements A private GenericTextListingDialog genericTextListingDialog; + public static final int AUTO_DEBIT_ADD_REQUEST=5384; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -163,7 +166,7 @@ public class AutoDebitAccountListingV2Activity extends BaseActivity implements A return; Intent intent= new Intent(AutoDebitAccountListingV2Activity.this,AutoDebitWebBrowserV2.class); intent.putExtra(WEB_BROWSWER_URL_BUNDLE_KEY,this.presenter.getWebRequestDataForAddingAccount(countryPaymentService.getKey())); - startActivity(intent); + startActivityForResult(intent,AUTO_DEBIT_ADD_REQUEST); }); genericTextListingDialog.setHintAndTitle("Search Language","Select Language"); genericTextListingDialog.disableSearch(true); @@ -171,6 +174,16 @@ public class AutoDebitAccountListingV2Activity extends BaseActivity implements A genericTextListingDialog.show(getSupportFragmentManager(), "COUNTRY CHOOSER"); } + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + if(requestCode==AUTO_DEBIT_ADD_REQUEST) + { + if(this.presenter==null) + return; + this.presenter.getAllAutoDebitAccountList(); + } + } + @Override public void showAllAccountsToUser(List accountsList) { if(accountHintTextView.getVisibility()!=View.VISIBLE)