From 8a2ff5adbdab18c6dc1e6e9316a679416673c68b Mon Sep 17 00:00:00 2001 From: James Brown Date: Sat, 30 Nov 2024 09:01:43 +0800 Subject: [PATCH 1/6] - Add DappBrowser protection for browsing non-whitelisted sites. - Lock DeveloperOverride with warning page. --- app/src/main/assets/dapps_list.json | 2 +- .../app/ui/AdvancedSettingsActivity.java | 39 ++++++++++++++++++- .../app/ui/DappBrowserFragment.java | 14 +++++++ .../app/util/DappBrowserUtils.java | 18 +++++++++ .../app/viewmodel/DappBrowserViewModel.java | 6 +++ app/src/main/res/values-es/strings.xml | 4 ++ app/src/main/res/values-fr/strings.xml | 4 ++ app/src/main/res/values-id/strings.xml | 4 ++ app/src/main/res/values-my/strings.xml | 4 ++ app/src/main/res/values-vi/strings.xml | 4 ++ app/src/main/res/values-zh/strings.xml | 4 ++ app/src/main/res/values/colors_misc.xml | 2 +- app/src/main/res/values/strings.xml | 4 ++ 13 files changed, 106 insertions(+), 3 deletions(-) diff --git a/app/src/main/assets/dapps_list.json b/app/src/main/assets/dapps_list.json index 8e3a3a2da5..15309cc7e2 100644 --- a/app/src/main/assets/dapps_list.json +++ b/app/src/main/assets/dapps_list.json @@ -1,6 +1,7 @@ [ {"name": "TokenScript", "description": "Smart Token Labs TokenScript Viewer", "url": "https://viewer.tokenscript.org/", "category": "Infrastructure"}, {"name": "SmartLayer", "description": "Smart Token Labs Smart Layer Network", "url": "https://smartlayer.network", "category": "Infrastructure"}, + {"name": "TLink", "description": "Smart Token Labs TLink", "url": "https://tlink.store/", "category": "Infrastructure"}, {"name": "X", "description": "Social Media", "url": "https://x.com", "category": "Social Media"}, {"name": "Aave", "description": "A decentralized non-custodial liquidity protocol where users can participate as depositors or borrowers", "url": "https://app.aave.com/", "category": "Finance"}, {"name": "Tbull", "description": "A Utility Token on Binance Smart Chain for Payments for Services", "url": "tbull.live", "category": "Utility"}, @@ -40,7 +41,6 @@ {"name": "SmartDrops", "description": "A platform that lets people earn crypto by joining new token projects.", "url": "https://www.smartdrops.io/", "category": "Tool"}, {"name": "xDai Bridge", "description": "xDai/Ethereum bridge for self transfers of Dai to xDai", "url": "https://dai-bridge.poa.network/", "category": "Tool"}, {"name": "Alfacash", "description": "Trade crypto instantly. ETH, BTC, XRP and 30+ other coins and tokens", "url": "https://www.alfa.cash/", "category": "Exchange"}, - {"name": "0x Instant", "description": "A free and flexible way to offer simple crypto purchasing", "url": "http://0x-instant-staging.s3-website-us-east-1.amazonaws.com/", "category": "Exchange"}, {"name": "KyberSwap", "description": "Instant and Secure Token to Token Swaps", "url": "https://kyber.network/swap/eth_knc", "category": "Exchange"}, {"name": "Kyber Migration Portal", "description": "Migration portal to upgrade legacy KNC to ERC-20 KNC tokens", "url": "https://kyber.org/migrate", "category": "Token Migration"}, {"name": "localethereum", "description": "Peer-to-peer marketplace allowing to trade eth to fiat", "url": "https://localethereum.com/", "category": "Exchange"}, diff --git a/app/src/main/java/com/alphawallet/app/ui/AdvancedSettingsActivity.java b/app/src/main/java/com/alphawallet/app/ui/AdvancedSettingsActivity.java index 58534c9f3a..e9f051927a 100644 --- a/app/src/main/java/com/alphawallet/app/ui/AdvancedSettingsActivity.java +++ b/app/src/main/java/com/alphawallet/app/ui/AdvancedSettingsActivity.java @@ -159,9 +159,46 @@ private void initializeSettings() tokenScriptViewer.setToggleState(viewModel.getTokenScriptViewerState()); } + @FunctionalInterface + public interface Callback + { + void onResult(boolean choice); + } + private void onDeveloperOverride() { - viewModel.toggleDeveloperOverride(developerOverride.getToggleState()); + boolean developerOverrideState = developerOverride.getToggleState(); + if (developerOverrideState) + { + //display warning popup + showWarningPopup(R.string.developer_override_warning, result -> { + viewModel.toggleDeveloperOverride(result); + developerOverride.setToggleState(result); + }); + } + else + { + viewModel.toggleDeveloperOverride(developerOverride.getToggleState()); + } + } + + private void showWarningPopup(int message, Callback callback) + { + AWalletAlertDialog dialog = new AWalletAlertDialog(this); + dialog.setIcon(AWalletAlertDialog.WARNING); + dialog.setTitle(R.string.warning); + dialog.setMessage(message); + dialog.setButtonText(R.string.i_accept); + dialog.setButtonListener(v -> { + callback.onResult(true); + dialog.dismiss(); + }); + dialog.setSecondaryButtonText(R.string.action_cancel); + dialog.setSecondaryButtonListener(v -> { + callback.onResult(false); + dialog.dismiss(); + }); + dialog.show(); } private void onFullScreenClicked() diff --git a/app/src/main/java/com/alphawallet/app/ui/DappBrowserFragment.java b/app/src/main/java/com/alphawallet/app/ui/DappBrowserFragment.java index dc45a2c937..2bc870b741 100644 --- a/app/src/main/java/com/alphawallet/app/ui/DappBrowserFragment.java +++ b/app/src/main/java/com/alphawallet/app/ui/DappBrowserFragment.java @@ -1,5 +1,6 @@ package com.alphawallet.app.ui; +import static com.alphawallet.app.C.ALPHAWALLET_WEB; import static com.alphawallet.app.C.ETHER_DECIMALS; import static com.alphawallet.app.C.RESET_TOOLBAR; import static com.alphawallet.app.entity.tokens.Token.TOKEN_BALANCE_PRECISION; @@ -1485,10 +1486,22 @@ public void onWebpageLoadComplete() private boolean loadUrl(String urlText) { + requireContext(); AnalyticsProperties props = new AnalyticsProperties(); props.put(Analytics.PROPS_URL, urlText); viewModel.track(Analytics.Action.LOAD_URL, props); + // ensure the URL is whitelisted, that is it is featured in the dapp list, and check if the app is in developer override mode + if (!viewModel.getDeveloperOverrideState(getContext()) && !DappBrowserUtils.isInDappsList(this.getContext(), urlText)) + { + //reset url string back to AlphaWallet + setUrlText(ALPHAWALLET_WEB); + + //display a warning dialog + displayError(R.string.title_dialog_error, R.string.not_recommended_to_visit); + return false; + } + detachFragments(); addToBackStack(DAPP_BROWSER); cancelSearchSession(); @@ -1500,6 +1513,7 @@ else if (handlePrefix(urlText)) { return true; } + web3.resetView(); web3.loadUrl(Utils.formatUrl(urlText)); setUrlText(Utils.formatUrl(urlText)); diff --git a/app/src/main/java/com/alphawallet/app/util/DappBrowserUtils.java b/app/src/main/java/com/alphawallet/app/util/DappBrowserUtils.java index 43eedd4c89..ffc3f941cb 100644 --- a/app/src/main/java/com/alphawallet/app/util/DappBrowserUtils.java +++ b/app/src/main/java/com/alphawallet/app/util/DappBrowserUtils.java @@ -13,6 +13,7 @@ import com.alphawallet.app.C; import com.alphawallet.app.entity.DApp; +import com.google.android.gms.common.util.HttpUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -253,6 +254,23 @@ public static List getDappsList(Context context) return dapps; } + public static boolean isInDappsList(Context context, String candidateURL) + { + List knownDapps = getDappsList(context); + //strip the URL to get only the domain + String candidateDomain = Utils.getDomainName(candidateURL); + + for (DApp dapp : knownDapps) + { + String thisDomain = Utils.getDomainName(dapp.getUrl()); + if (candidateDomain.equals(thisDomain)) + { + return true; + } + } + return false; + } + private static void saveHistory(Context context, List history) { if (context != null) diff --git a/app/src/main/java/com/alphawallet/app/viewmodel/DappBrowserViewModel.java b/app/src/main/java/com/alphawallet/app/viewmodel/DappBrowserViewModel.java index 6cc8585058..3955d65633 100644 --- a/app/src/main/java/com/alphawallet/app/viewmodel/DappBrowserViewModel.java +++ b/app/src/main/java/com/alphawallet/app/viewmodel/DappBrowserViewModel.java @@ -1,6 +1,7 @@ package com.alphawallet.app.viewmodel; import static com.alphawallet.app.C.Key.WALLET; +import static com.alphawallet.app.repository.SharedPreferenceRepository.DEVELOPER_OVERRIDE; import static com.alphawallet.app.util.Utils.isValidUrl; import android.app.Activity; @@ -481,4 +482,9 @@ public GasService getGasService() { return gasService; } + + public boolean getDeveloperOverrideState(Context context) + { + return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(DEVELOPER_OVERRIDE, false); + } } diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e6677c60ab..4e038de139 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -996,4 +996,8 @@ Es posible que esté a punto de firmar una transacción sin saberlo, lo que podría vaciar sus fondos. Es posible que desee firmar el código de bytes como desarrollador y puede anular esta advertencia si configura el modo de desarrollador en la configuración avanzada. Constructor Visor de TokenScript + Esta URL no está en la lista blanca. Aún es posible visitarla modificando las opciones de protección en la configuración, pero no se recomienda. Podrías estar a punto de perder tus fondos, especialmente si se trata de una inversión en minería de criptomonedas. Hay muchos sitios de inversión en criptomonedas regulados. + Advertencia: estás a punto de desactivar la protección estándar. Esto evita que te estafen. Utiliza el modo de desarrollador solo si estás probando tu dapp o si estás 100 % seguro de que el sitio es seguro. Recuerda: si alguien te dice que actives esta configuración, es casi seguro que perderás tus fondos de criptomonedas. + Advertencia + Acepto el riesgo diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 7a89ba1805..540e04bd74 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1010,4 +1010,8 @@ Vous êtes peut-être sur le point de signer sans le savoir une transaction, ce qui pourrait vider vos fonds. Vous souhaiterez peut-être signer le bytecode en tant que développeur et vous pouvez ignorer cet avertissement si vous définissez le mode développeur dans les paramètres avancés. Constructor Visionneuse TokenScript + Cette URL n\'est pas sur liste blanche. Il est toujours possible de la visiter en modifiant les options de protection dans les paramètres, mais cela n\'est pas recommandé. Vous pourriez être sur le point de perdre vos fonds, surtout s\'il s\'agit d\'un investissement dans le minage de crypto-monnaies. Il existe de nombreux sites d\'investissement en crypto-monnaies réglementés. + Attention : vous êtes sur le point de désactiver la protection standard. Cela vous évite de vous faire arnaquer. N\'utilisez le mode développeur que si vous testez votre dapp ou si vous êtes sûr à 100 % que le site est sûr. N\'oubliez pas : si quelqu\'un vous dit d\'activer ce paramètre, vous êtes presque certainement sur le point de perdre vos fonds cryptographiques. + Attention + J\'accepte le risque diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index c5dd9e7c50..e82826d2d3 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -1001,4 +1001,8 @@ Anda mungkin tanpa sadar menandatangani transaksi, yang dapat mengosongkan dana Anda. Anda mungkin ingin menandatangani bytecode sebagai pengembang, dan Anda dapat mengabaikan peringatan ini jika Anda menyetel mode pengembang di Setelan lanjutan. Constructor Penampil TokenScript + URL ini tidak masuk daftar putih. Anda masih dapat mengunjunginya dengan mengubah opsi perlindungan di pengaturan, tetapi tidak disarankan. Anda bisa kehilangan dana, terutama jika itu adalah investasi dalam penambangan kripto. Ada banyak situs investasi kripto yang teregulasi. + Peringatan: Anda akan menonaktifkan perlindungan standar. Ini mencegah Anda dari penipuan. Gunakan mode pengembang hanya jika Anda sedang menguji dapp Anda, atau jika Anda 100% yakin bahwa situs tersebut aman. Ingat: jika seseorang memberi tahu Anda untuk mengaktifkan pengaturan ini, Anda hampir pasti akan kehilangan dana kripto Anda. + Peringatan + Saya menerima risikonya diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 44938aead2..644ddd474d 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -1031,4 +1031,8 @@ သင့်ငွေများကို အချည်းနှီးဖြစ်စေနိုင်သည့် ငွေပေးငွေယူတစ်ခုအား သင်မသိလိုက်ဘဲ လက်မှတ်ထိုးပါတော့မည်။ သင်သည် ဆော့ဖ်ဝဲအင်ဂျင်နီယာတစ်ဦးအနေဖြင့် bytecode ကို လက်မှတ်ထိုးလိုနိုင်ပြီး၊ Advanced ဆက်တင်များတွင် developer မုဒ်ကို သင်သတ်မှတ်ပါက ဤသတိပေးချက်ကို အစားထိုးနိုင်ပါသည်။ Constructor TokenScript ကြည့်ရှုသူ + ဤ URL ကို တရားဝင်စာရင်းမသွင်းပါ။ ဆက်တင်များတွင် အကာအကွယ်ရွေးချယ်မှုများ ပြောင်းလဲခြင်းဖြင့် ဝင်ကြည့်ရန် ဖြစ်နိုင်သေးသော်လည်း ၎င်းကို အကြံပြုထားခြင်း မရှိပါ။ အထူးသဖြင့် crypto-mining တွင် ရင်းနှီးမြုပ်နှံပါက သင့်ရန်ပုံငွေများ ဆုံးရှုံးတော့မည်ဖြစ်သည်။ ထိန်းညှိထားသော crypto ရင်းနှီးမြှုပ်နှံမှုဆိုက်များစွာရှိသည်။ + သတိပေးချက်- သင်သည် စံကာကွယ်ရေးကို ပိတ်ပါတော့မည်။ ၎င်းသည် သင့်အား အလိမ်ခံရခြင်းမှ ကာကွယ်ပေးသည်။ သင့် dapp ကို စမ်းသပ်နေပါက သို့မဟုတ် ဆိုက်သည် 100% စိတ်ချရကြောင်း 100% သေချာပါက developer မုဒ်ကို အသုံးပြုပါ။ သတိရပါ- တစ်စုံတစ်ယောက်က ဤဆက်တင်ကိုဖွင့်ရန် သင့်အားပြောနေပါက၊ သင်သည် သင်၏ crypto ရန်ပုံငွေများကို ဆုံးရှုံးတော့မည်မှာ သေချာပါသည်။ + သတိပေးချက် + အန္တရာယ်ကို ငါလက်ခံတယ်။ diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 66cef1f537..7eff26d2cf 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1010,4 +1010,8 @@ Bạn có thể sắp vô tình ký một giao dịch, điều này có thể khiến tiền của bạn bị rỗng. Bạn có thể muốn ký mã byte với tư cách là nhà phát triển và bạn có thể ghi đè cảnh báo này nếu bạn đặt chế độ nhà phát triển trong cài đặt Nâng cao. Constructor Trình xem TokenScript + URL này không nằm trong danh sách trắng. Bạn vẫn có thể truy cập bằng cách thay đổi tùy chọn bảo vệ trong cài đặt, nhưng không được khuyến khích. Bạn có thể sắp mất tiền, đặc biệt nếu đó là khoản đầu tư vào khai thác tiền điện tử. Có rất nhiều trang web đầu tư tiền điện tử được quản lý. + Cảnh báo: Bạn sắp tắt chế độ bảo vệ tiêu chuẩn. Điều này giúp bạn tránh bị lừa đảo. Chỉ sử dụng chế độ nhà phát triển nếu bạn đang thử nghiệm dapp của mình hoặc nếu bạn chắc chắn 100% rằng trang web an toàn. Hãy nhớ rằng: nếu ai đó bảo bạn bật cài đặt này, bạn gần như chắc chắn sẽ mất tiền mã hóa của mình. + Cảnh báo + Tôi chấp nhận rủi ro diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 261d8e2244..b9e234bfab 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -997,4 +997,8 @@ 您可能会在不知情的情况下签署一项交易,这可能会清空您的资金。 您可能希望以开发人员的身份对字节码进行签名,如果您在高级设置中设置开发人员模式,则可以覆盖此警告。 Constructor 使用 TokenScript 查看器 + 此 URL 未列入白名单。仍可通过更改设置中的保护选项来访问,但不建议这样做。您可能会损失资金,尤其是如果这是对加密货币挖矿的投资。有很多受监管的加密货币投资网站。 + 警告:您即将关闭标准保护。这可以防止您被骗。仅在测试 dapp 或 100% 确定网站安全时才使用开发者模式。请记住:如果有人告诉您打开此设置,您几乎肯定会失去您的加密货币资金。 + 警告 + 我接受风险 diff --git a/app/src/main/res/values/colors_misc.xml b/app/src/main/res/values/colors_misc.xml index fade36fe38..f44d5652f8 100644 --- a/app/src/main/res/values/colors_misc.xml +++ b/app/src/main/res/values/colors_misc.xml @@ -34,7 +34,7 @@ #40678c #83488c #93589c - #FE3300 + #9FD009 #414597 #00D4D5 #6BBE47 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 34530750c1..dc128ee7db 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1073,4 +1073,8 @@ You might be about to unknowingly sign a transaction, which could empty your funds. You may want to sign bytecode as a developer, and you can override this warning if you set developer mode in Advanced settings. Constructor Use TokenScript Viewer + This URL is not whitelisted. It is still possible to visit by changing protection options in the settings, but it is not recommended. You could be about to lose your funds, especially if it\'s an investment in crypto-mining. There are plenty of regulated crypto investment sites. + Warning: You are about to switch off standard protection. This prevents you from getting scammed. Only use the developer mode if you are testing your dapp, or if you are 100% sure that the site is safe. Remember: if someone is telling you to switch this setting on, you are almost certainly about to lose your crypto funds. + Warning + I accept the risk From 24324347ab2b0d5df2038ec56b16ba91a6a5d71c Mon Sep 17 00:00:00 2001 From: James Brown Date: Sat, 30 Nov 2024 19:46:43 +0800 Subject: [PATCH 2/6] escape the % symbol --- app/src/main/res/values-es/strings.xml | 2 +- app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values-id/strings.xml | 2 +- app/src/main/res/values-my/strings.xml | 2 +- app/src/main/res/values-vi/strings.xml | 2 +- app/src/main/res/values-zh/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 4e038de139..f3e7d03ba2 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -997,7 +997,7 @@ Constructor Visor de TokenScript Esta URL no está en la lista blanca. Aún es posible visitarla modificando las opciones de protección en la configuración, pero no se recomienda. Podrías estar a punto de perder tus fondos, especialmente si se trata de una inversión en minería de criptomonedas. Hay muchos sitios de inversión en criptomonedas regulados. - Advertencia: estás a punto de desactivar la protección estándar. Esto evita que te estafen. Utiliza el modo de desarrollador solo si estás probando tu dapp o si estás 100 % seguro de que el sitio es seguro. Recuerda: si alguien te dice que actives esta configuración, es casi seguro que perderás tus fondos de criptomonedas. + Advertencia: estás a punto de desactivar la protección estándar. Esto evita que te estafen. Utiliza el modo de desarrollador solo si estás probando tu dapp o si estás 100 \% seguro de que el sitio es seguro. Recuerda: si alguien te dice que actives esta configuración, es casi seguro que perderás tus fondos de criptomonedas. Advertencia Acepto el riesgo diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 540e04bd74..1f36b80825 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1011,7 +1011,7 @@ Constructor Visionneuse TokenScript Cette URL n\'est pas sur liste blanche. Il est toujours possible de la visiter en modifiant les options de protection dans les paramètres, mais cela n\'est pas recommandé. Vous pourriez être sur le point de perdre vos fonds, surtout s\'il s\'agit d\'un investissement dans le minage de crypto-monnaies. Il existe de nombreux sites d\'investissement en crypto-monnaies réglementés. - Attention : vous êtes sur le point de désactiver la protection standard. Cela vous évite de vous faire arnaquer. N\'utilisez le mode développeur que si vous testez votre dapp ou si vous êtes sûr à 100 % que le site est sûr. N\'oubliez pas : si quelqu\'un vous dit d\'activer ce paramètre, vous êtes presque certainement sur le point de perdre vos fonds cryptographiques. + Attention : vous êtes sur le point de désactiver la protection standard. Cela vous évite de vous faire arnaquer. N\'utilisez le mode développeur que si vous testez votre dapp ou si vous êtes sûr à 100 \% que le site est sûr. N\'oubliez pas : si quelqu\'un vous dit d\'activer ce paramètre, vous êtes presque certainement sur le point de perdre vos fonds cryptographiques. Attention J\'accepte le risque diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index e82826d2d3..efbefbe3e7 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -1002,7 +1002,7 @@ Constructor Penampil TokenScript URL ini tidak masuk daftar putih. Anda masih dapat mengunjunginya dengan mengubah opsi perlindungan di pengaturan, tetapi tidak disarankan. Anda bisa kehilangan dana, terutama jika itu adalah investasi dalam penambangan kripto. Ada banyak situs investasi kripto yang teregulasi. - Peringatan: Anda akan menonaktifkan perlindungan standar. Ini mencegah Anda dari penipuan. Gunakan mode pengembang hanya jika Anda sedang menguji dapp Anda, atau jika Anda 100% yakin bahwa situs tersebut aman. Ingat: jika seseorang memberi tahu Anda untuk mengaktifkan pengaturan ini, Anda hampir pasti akan kehilangan dana kripto Anda. + Peringatan: Anda akan menonaktifkan perlindungan standar. Ini mencegah Anda dari penipuan. Gunakan mode pengembang hanya jika Anda sedang menguji dapp Anda, atau jika Anda 100\% yakin bahwa situs tersebut aman. Ingat: jika seseorang memberi tahu Anda untuk mengaktifkan pengaturan ini, Anda hampir pasti akan kehilangan dana kripto Anda. Peringatan Saya menerima risikonya diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 644ddd474d..b6c3d2a7b4 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -1032,7 +1032,7 @@ Constructor TokenScript ကြည့်ရှုသူ ဤ URL ကို တရားဝင်စာရင်းမသွင်းပါ။ ဆက်တင်များတွင် အကာအကွယ်ရွေးချယ်မှုများ ပြောင်းလဲခြင်းဖြင့် ဝင်ကြည့်ရန် ဖြစ်နိုင်သေးသော်လည်း ၎င်းကို အကြံပြုထားခြင်း မရှိပါ။ အထူးသဖြင့် crypto-mining တွင် ရင်းနှီးမြုပ်နှံပါက သင့်ရန်ပုံငွေများ ဆုံးရှုံးတော့မည်ဖြစ်သည်။ ထိန်းညှိထားသော crypto ရင်းနှီးမြှုပ်နှံမှုဆိုက်များစွာရှိသည်။ - သတိပေးချက်- သင်သည် စံကာကွယ်ရေးကို ပိတ်ပါတော့မည်။ ၎င်းသည် သင့်အား အလိမ်ခံရခြင်းမှ ကာကွယ်ပေးသည်။ သင့် dapp ကို စမ်းသပ်နေပါက သို့မဟုတ် ဆိုက်သည် 100% စိတ်ချရကြောင်း 100% သေချာပါက developer မုဒ်ကို အသုံးပြုပါ။ သတိရပါ- တစ်စုံတစ်ယောက်က ဤဆက်တင်ကိုဖွင့်ရန် သင့်အားပြောနေပါက၊ သင်သည် သင်၏ crypto ရန်ပုံငွေများကို ဆုံးရှုံးတော့မည်မှာ သေချာပါသည်။ + သတိပေးချက်- သင်သည် စံကာကွယ်ရေးကို ပိတ်ပါတော့မည်။ ၎င်းသည် သင့်အား အလိမ်ခံရခြင်းမှ ကာကွယ်ပေးသည်။ သင့် dapp ကို စမ်းသပ်နေပါက သို့မဟုတ် ဆိုက်သည် 100% စိတ်ချရကြောင်း 100\% သေချာပါက developer မုဒ်ကို အသုံးပြုပါ။ သတိရပါ- တစ်စုံတစ်ယောက်က ဤဆက်တင်ကိုဖွင့်ရန် သင့်အားပြောနေပါက၊ သင်သည် သင်၏ crypto ရန်ပုံငွေများကို ဆုံးရှုံးတော့မည်မှာ သေချာပါသည်။ သတိပေးချက် အန္တရာယ်ကို ငါလက်ခံတယ်။ diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 7eff26d2cf..7de9a91883 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1011,7 +1011,7 @@ Constructor Trình xem TokenScript URL này không nằm trong danh sách trắng. Bạn vẫn có thể truy cập bằng cách thay đổi tùy chọn bảo vệ trong cài đặt, nhưng không được khuyến khích. Bạn có thể sắp mất tiền, đặc biệt nếu đó là khoản đầu tư vào khai thác tiền điện tử. Có rất nhiều trang web đầu tư tiền điện tử được quản lý. - Cảnh báo: Bạn sắp tắt chế độ bảo vệ tiêu chuẩn. Điều này giúp bạn tránh bị lừa đảo. Chỉ sử dụng chế độ nhà phát triển nếu bạn đang thử nghiệm dapp của mình hoặc nếu bạn chắc chắn 100% rằng trang web an toàn. Hãy nhớ rằng: nếu ai đó bảo bạn bật cài đặt này, bạn gần như chắc chắn sẽ mất tiền mã hóa của mình. + Cảnh báo: Bạn sắp tắt chế độ bảo vệ tiêu chuẩn. Điều này giúp bạn tránh bị lừa đảo. Chỉ sử dụng chế độ nhà phát triển nếu bạn đang thử nghiệm dapp của mình hoặc nếu bạn chắc chắn 100\% rằng trang web an toàn. Hãy nhớ rằng: nếu ai đó bảo bạn bật cài đặt này, bạn gần như chắc chắn sẽ mất tiền mã hóa của mình. Cảnh báo Tôi chấp nhận rủi ro diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index b9e234bfab..430cef0f80 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -998,7 +998,7 @@ Constructor 使用 TokenScript 查看器 此 URL 未列入白名单。仍可通过更改设置中的保护选项来访问,但不建议这样做。您可能会损失资金,尤其是如果这是对加密货币挖矿的投资。有很多受监管的加密货币投资网站。 - 警告:您即将关闭标准保护。这可以防止您被骗。仅在测试 dapp 或 100% 确定网站安全时才使用开发者模式。请记住:如果有人告诉您打开此设置,您几乎肯定会失去您的加密货币资金。 + 警告:您即将关闭标准保护。这可以防止您被骗。仅在测试 dapp 或 100\% 确定网站安全时才使用开发者模式。请记住:如果有人告诉您打开此设置,您几乎肯定会失去您的加密货币资金。 警告 我接受风险 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dc128ee7db..482e286c93 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1074,7 +1074,7 @@ Constructor Use TokenScript Viewer This URL is not whitelisted. It is still possible to visit by changing protection options in the settings, but it is not recommended. You could be about to lose your funds, especially if it\'s an investment in crypto-mining. There are plenty of regulated crypto investment sites. - Warning: You are about to switch off standard protection. This prevents you from getting scammed. Only use the developer mode if you are testing your dapp, or if you are 100% sure that the site is safe. Remember: if someone is telling you to switch this setting on, you are almost certainly about to lose your crypto funds. + Warning: You are about to switch off standard protection. This prevents you from getting scammed. Only use the developer mode if you are testing your dapp, or if you are 100\% sure that the site is safe. Remember: if someone is telling you to switch this setting on, you are almost certainly about to lose your crypto funds. Warning I accept the risk From d5e10c222c28086fd29ac0683032f60516dcf34a Mon Sep 17 00:00:00 2001 From: James Brown Date: Sat, 30 Nov 2024 21:56:13 +0800 Subject: [PATCH 3/6] Update receivers to API34 --- .../app/entity/FinishReceiver.java | 26 +++++++++++++++--- .../alphawallet/app/entity/HomeReceiver.java | 27 ++++++++++++++++--- .../com/alphawallet/app/ui/HomeActivity.java | 4 +-- .../app/ui/WalletConnectSessionActivity.java | 23 ++++++++++++---- 4 files changed, 65 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java b/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java index 08b36dca49..9736f4df5b 100644 --- a/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java +++ b/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java @@ -1,10 +1,14 @@ package com.alphawallet.app.entity; +import static androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED; +import static androidx.core.content.ContextCompat.registerReceiver; + import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -19,12 +23,19 @@ public FinishReceiver(Activity ctx) { activity = ctx; broadcastManager = LocalBroadcastManager.getInstance(ctx); - register(); + register(ctx); } - private void register() + private void register(Activity ctx) { - broadcastManager.registerReceiver(this, new IntentFilter(C.PRUNE_ACTIVITY)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + registerReceiver(ctx, this, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE), RECEIVER_NOT_EXPORTED); + } + else + { + broadcastManager.registerReceiver(this, new IntentFilter(C.PRUNE_ACTIVITY)); + } } @Override @@ -35,6 +46,13 @@ public void onReceive(Context context, Intent intent) public void unregister() { - broadcastManager.unregisterReceiver(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + activity.unregisterReceiver(this); + } + else + { + broadcastManager.unregisterReceiver(this); + } } } diff --git a/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java b/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java index a5f9c74b32..136172bb2c 100644 --- a/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java +++ b/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java @@ -1,11 +1,15 @@ package com.alphawallet.app.entity; +import static androidx.core.content.ContextCompat.registerReceiver; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import android.os.Bundle; +import androidx.core.content.ContextCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.alphawallet.app.C; @@ -42,17 +46,32 @@ public void onReceive(Context context, Intent intent) } } - public void register() + public void register(Context ctx) { IntentFilter filter = new IntentFilter(); filter.addAction(C.REQUEST_NOTIFICATION_ACCESS); filter.addAction(C.BACKUP_WALLET_SUCCESS); filter.addAction(C.WALLET_CONNECT_REQUEST); - broadcastManager.registerReceiver(this, filter); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + registerReceiver(ctx, this, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE), ContextCompat.RECEIVER_NOT_EXPORTED); + } + else + { + broadcastManager.registerReceiver(this, filter); + } } - public void unregister() + public void unregister(Context ctx) { - broadcastManager.unregisterReceiver(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + ctx.unregisterReceiver(this); + } + else + { + broadcastManager.unregisterReceiver(this); + } } } diff --git a/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java b/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java index 57d365aa22..f2f7a65d76 100644 --- a/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java +++ b/app/src/main/java/com/alphawallet/app/ui/HomeActivity.java @@ -582,7 +582,7 @@ protected void onResume() if (homeReceiver == null) { homeReceiver = new HomeReceiver(this, this); - homeReceiver.register(); + homeReceiver.register(this); } initViews(); } @@ -669,7 +669,7 @@ public void onDestroy() viewModel.onClean(); if (homeReceiver != null) { - homeReceiver.unregister(); + homeReceiver.unregister(this); homeReceiver = null; } } diff --git a/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java b/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java index 9c01cc8c95..9a2093157e 100644 --- a/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java +++ b/app/src/main/java/com/alphawallet/app/ui/WalletConnectSessionActivity.java @@ -2,12 +2,11 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; -import static androidx.core.content.ContentProviderCompat.requireContext; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -24,7 +23,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.lifecycle.ViewModelProvider; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -60,6 +58,7 @@ public class WalletConnectSessionActivity extends BaseActivity { private final Handler handler = new Handler(Looper.getMainLooper()); private LocalBroadcastManager broadcastManager; + private WalletConnectViewModel viewModel; private RecyclerView recyclerView; private Button btnConnectWallet; @@ -246,12 +245,26 @@ public void onSessionDisconnected() private void startConnectionCheck() { - broadcastManager.registerReceiver(walletConnectChangeReceiver, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + registerReceiver(walletConnectChangeReceiver, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE), RECEIVER_NOT_EXPORTED); + } + else + { + broadcastManager.registerReceiver(walletConnectChangeReceiver, new IntentFilter(C.WALLET_CONNECT_COUNT_CHANGE)); + } } private void stopConnectionCheck() { - broadcastManager.unregisterReceiver(walletConnectChangeReceiver); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + { + unregisterReceiver(walletConnectChangeReceiver); + } + else + { + broadcastManager.unregisterReceiver(walletConnectChangeReceiver); + } } public class CustomAdapter extends RecyclerView.Adapter From e20df251b46f50e41f205318d608c24d25ed8921 Mon Sep 17 00:00:00 2001 From: James Brown Date: Sun, 1 Dec 2024 07:43:08 +0800 Subject: [PATCH 4/6] API34 receivers --- app/src/main/AndroidManifest.xml | 16 ++++++++++++++++ .../app/service/NotificationService.java | 2 ++ .../app/ui/RedeemSignatureDisplayActivity.java | 2 ++ 3 files changed, 20 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d40dc985c0..a18a7a0fb4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -39,6 +39,22 @@ android:usesCleartextTraffic="true" tools:replace="android:name, android:theme, android:allowBackup"> + + + + + + + + + + + + + + { + Intent pruneIntent = new Intent(PRUNE_ACTIVITY); + pruneIntent.setPackage("com.alphawallet.app.entity.FinishReceiver"); LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(PRUNE_ACTIVITY)); }); dialog.show(); From 6976cd12ae9ca178f2e8e2d4c6e834b148d5fdba Mon Sep 17 00:00:00 2001 From: James Brown Date: Sun, 1 Dec 2024 09:02:33 +0800 Subject: [PATCH 5/6] Update tests to allow for whitelisting --- .../java/com/alphawallet/app/DappBrowserTest.java | 4 ++-- app/src/main/assets/dapps_list.json | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java b/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java index 26f7dd6ad5..e1c16403ca 100644 --- a/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java +++ b/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java @@ -35,8 +35,8 @@ public class DappBrowserTest extends BaseE2ETest { - private static final String DEFAULT_HOME_PAGE = "https://courses.cs.washington.edu/courses/cse373/99sp/assignments/hw2/test1.html"; - private static final String URL_DAPP = "http://web.simmons.edu/~grovesd/comm244/notes/week3/html-test-page.html"; + private static final String DEFAULT_HOME_PAGE = "https://tlink.store/tapp?chain=84532&contract=0xb02082b18f74ab3853b6a11e5f487be4322167db&tokenId=6"; + private static final String URL_DAPP = "https://superrare.com/explore/releases"; @Override @Before diff --git a/app/src/main/assets/dapps_list.json b/app/src/main/assets/dapps_list.json index 15309cc7e2..6a4eb0a942 100644 --- a/app/src/main/assets/dapps_list.json +++ b/app/src/main/assets/dapps_list.json @@ -4,8 +4,8 @@ {"name": "TLink", "description": "Smart Token Labs TLink", "url": "https://tlink.store/", "category": "Infrastructure"}, {"name": "X", "description": "Social Media", "url": "https://x.com", "category": "Social Media"}, {"name": "Aave", "description": "A decentralized non-custodial liquidity protocol where users can participate as depositors or borrowers", "url": "https://app.aave.com/", "category": "Finance"}, - {"name": "Tbull", "description": "A Utility Token on Binance Smart Chain for Payments for Services", "url": "tbull.live", "category": "Utility"}, - {"name": "Rare Coin", "description": "Free Crypto Faucet & Yield Farming", "url": "make.rare.claims", "category": "Tool"}, + {"name": "Tbull", "description": "A Utility Token on Binance Smart Chain for Payments for Services", "url": "https://tbull.live", "category": "Utility"}, + {"name": "Rare Coin", "description": "Free Crypto Faucet & Yield Farming", "url": "https://make.rare.claims", "category": "Tool"}, {"name": "DeFiBox", "description": "one-stop DeFi asset, data and protocols aggregation platform", "url": "https://www.defibox.com/index?utm_source=2189969", "category": "Tool"}, {"name": "TokenSets", "description": "Enhance your portfolio with automated asset management strategies.", "url": "https://www.tokensets.com/", "category": "Finance"}, {"name": "State of the ÐApps", "description": "Directory of Decentralized Applications", "url": "https://www.stateofthedapps.com/", "category": "Directory"}, @@ -20,8 +20,6 @@ {"name": "Last Trip", "description": "A RPG game", "url": "http://lasttrip.matrixdapp.com/", "category": "Game"}, {"name": "LORDLESS", "description": "Be a bounty hunter in my tavern", "url": "https://game.lordless.io/home", "category": "Game"}, {"name": "MLB Crypto Baseball", "description": "Baseball collectible game", "url": "https://mlbcryptobaseball.com", "category": "Game"}, - {"name": "Radi.Cards", "description": "Creative, unique art pieces from from all around the interwebs.", "url": "https://radi.cards/cardshop", "category": "Game"}, - {"name": "Augur", "description": "Decentralized prediction market", "url": "https://www.augur.net/ipfs-redirect.html", "category": "Marketplace"}, {"name": "Name Bazaar", "description": "A peer-to-peer marketplace for the exchange of names registered via the ENS", "url": "https://namebazaar.io/", "category": "Marketplace"}, {"name": "OpenSea", "description": "Peer-to-peer marketplace for scarce digital goods", "url": "https://opensea.io", "category": "Marketplace"}, {"name": "SuperRare", "description": "Collect art or submit your art as a creator", "url": "https://superrare.co/", "category": "Marketplace"}, From d12b91409283c3d7e43a167ba330a1f070c979a9 Mon Sep 17 00:00:00 2001 From: James Brown Date: Sun, 1 Dec 2024 10:47:28 +0800 Subject: [PATCH 6/6] Update dappbrowser test --- .../java/com/alphawallet/app/DappBrowserTest.java | 4 +--- app/src/main/assets/dapps_list.json | 4 ++-- .../java/com/alphawallet/app/entity/FinishReceiver.java | 6 ++++++ .../main/java/com/alphawallet/app/entity/HomeReceiver.java | 6 ++++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java b/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java index e1c16403ca..0c6a8c1ef0 100644 --- a/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java +++ b/app/src/androidTest/java/com/alphawallet/app/DappBrowserTest.java @@ -20,8 +20,6 @@ import static com.alphawallet.app.util.Helper.waitUntilLoaded; import static junit.framework.TestCase.assertTrue; -import static org.hamcrest.core.IsNot.not; - import android.view.KeyEvent; import androidx.annotation.NonNull; @@ -36,7 +34,7 @@ public class DappBrowserTest extends BaseE2ETest { private static final String DEFAULT_HOME_PAGE = "https://tlink.store/tapp?chain=84532&contract=0xb02082b18f74ab3853b6a11e5f487be4322167db&tokenId=6"; - private static final String URL_DAPP = "https://superrare.com/explore/releases"; + private static final String URL_DAPP = "https://rarible.com/explore/all/collections"; @Override @Before diff --git a/app/src/main/assets/dapps_list.json b/app/src/main/assets/dapps_list.json index 6a4eb0a942..14e129c5bb 100644 --- a/app/src/main/assets/dapps_list.json +++ b/app/src/main/assets/dapps_list.json @@ -7,6 +7,7 @@ {"name": "Tbull", "description": "A Utility Token on Binance Smart Chain for Payments for Services", "url": "https://tbull.live", "category": "Utility"}, {"name": "Rare Coin", "description": "Free Crypto Faucet & Yield Farming", "url": "https://make.rare.claims", "category": "Tool"}, {"name": "DeFiBox", "description": "one-stop DeFi asset, data and protocols aggregation platform", "url": "https://www.defibox.com/index?utm_source=2189969", "category": "Tool"}, + {"name": "Rarible", "description": "Peer-to-peer marketplace for scarce digital goods", "url": "https://rarible.com/", "category": "Marketplace"}, {"name": "TokenSets", "description": "Enhance your portfolio with automated asset management strategies.", "url": "https://www.tokensets.com/", "category": "Finance"}, {"name": "State of the ÐApps", "description": "Directory of Decentralized Applications", "url": "https://www.stateofthedapps.com/", "category": "Directory"}, {"name": "BulkSender", "description": "Batch sending of tokens", "url": "https://bulksender.app/", "category": "Finance"}, @@ -22,8 +23,7 @@ {"name": "MLB Crypto Baseball", "description": "Baseball collectible game", "url": "https://mlbcryptobaseball.com", "category": "Game"}, {"name": "Name Bazaar", "description": "A peer-to-peer marketplace for the exchange of names registered via the ENS", "url": "https://namebazaar.io/", "category": "Marketplace"}, {"name": "OpenSea", "description": "Peer-to-peer marketplace for scarce digital goods", "url": "https://opensea.io", "category": "Marketplace"}, - {"name": "SuperRare", "description": "Collect art or submit your art as a creator", "url": "https://superrare.co/", "category": "Marketplace"}, - {"name": "Veil", "description": "A peer-to-peer trading platform for prediction markets and derivatives", "url": "https://app.veil.co/", "category": "Marketplace"}, + {"name": "Veil", "description": "A peer-to-peer trading platform for prediction markets and derivatives", "url": "https://app.veil.co/", "category": "Marketplace"}, {"name": "Gravity", "description": "Create your gravatar.", "url": "https://gravity.cool/", "category": "Property"}, {"name": "Mokens", "description": "Create your own collectibles", "url": "https://mokens.io/", "category": "Property"}, {"name": "TENZ-ID", "description": "TENZ-ID is a Decentralized Blockchain naming system", "url": "https://tenzorum.org/tenz_id/", "category": "Property"}, diff --git a/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java b/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java index 9736f4df5b..527e7724f7 100644 --- a/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java +++ b/app/src/main/java/com/alphawallet/app/entity/FinishReceiver.java @@ -26,6 +26,12 @@ public FinishReceiver(Activity ctx) register(ctx); } + public FinishReceiver() + { + activity = null; + broadcastManager = null; + } + private void register(Activity ctx) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) diff --git a/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java b/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java index 136172bb2c..505d1b8337 100644 --- a/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java +++ b/app/src/main/java/com/alphawallet/app/entity/HomeReceiver.java @@ -25,6 +25,12 @@ public HomeReceiver(Context context, HomeCommsInterface homeCommsInterface) this.homeCommsInterface = homeCommsInterface; } + public HomeReceiver() + { + homeCommsInterface = null; + broadcastManager = null; + } + @Override public void onReceive(Context context, Intent intent) {