CucumberWebview is specialized for WebView for the Web DApp. You can integrate your Web DApp into mobile.
The Blockchain Platform SDK provides the CucumberWebView for android WebView. For further android WebView information, see https://developer.android.com/guide/webapps.
CucumberWebView is capable of Javascript SDKs for Ethereum and Tron as follows:
Web3.js TronWeb
To add a CucumberWebView to your app, you need to add a component in the layout.
<com.samsung.android.sdk.blockchain.ui.CucumberWebView android:id="@+id/cucumberWebView" android:layout_width="match_parent" android:layout_height="match_parent" />
init API was deprecated in 1.1.00.
See Add Coin Service Connector section.
To use a CucumberWebView, your app must run the addCoinServiceConnector.
With CucumberWebView only one Ethereum or Tron account can be received from addCoinServiceConnector when used. onSendTransaction is described below.
// SBlockchain and CoinService initialize code ... // WebView webView = view.findViewById(R.id.cucumberWebView); webView.addCoinServiceConnector(coinType, coinService, account, onSendTransactionListener);
Sends a transaction request on the onSendTransaction method. You have to implement the OnSendEthereumTransactionListener or OnSendTronTransactionListener to complete the request. You have to handle the request with onSendTransaction. A simpler way to handle the request is to use the PaymentSheet.
When the processing is completed, the result must be sent to the WebView. onActivityResult must be overrided including the CucumberWebView.onActivityResult.
createEthereumPaymentSheetActivityIntent() without EthereumTransactionType parameter API has been deprecated in 1.2.00.
Use createEthereumPaymentSheetActivityIntent(Context, String, HardwareWallet, EthereumTransactionType, String, BigInteger, String, BigInteger) instead.
public class WebViewFragment extends Fragment implements OnSendEthereumTransactionListener{ ... @Override public void onSendTransaction( String requestId, EthereumAccount fromAccount, String toAddress, BigInteger value, String data, BigInteger nonce ) { HardwareWallet connectedHardwareWallet = hardwareWalletManager.getConnectedHardwareWallet(); EthereumTransactionType ethereumTransactionType = EthereumTransactionType.EIP1559; Intent intent = webView.createEthereumPaymentSheetActivityIntent( context, requestId, connectedHardwareWallet, ethereumTransactionType, toAddress, value, data, nonce ); startActivityForResult(intent, 0); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode != 0) { return; } webView.onActivityResult(requestCode, resultCode, data); }
public class WebViewFragment extends Fragment implements OnSendTronTransactionListener{ ... @Override public void onSendTransaction( String requestId, TronPaymentType paymentType, TronAccount fromAccount, String toAddress, BigInteger value, String tokenId, BigInteger tokenValue, String data, BigInteger feeLimit ) { HardwareWallet connectedHardwareWallet = hardwareWalletManager.getConnectedHardwareWallet(); Intent intent = null; switch (paymentType) { case TRX: intent = webView.createTronPaymentSheetActivityIntent( context, requestId, connectedHardwareWallet, fromAccount, toAddress, value ); break; case TRC10: intent = webView.createTrc10PaymentSheetActivityIntent( context, requestId, connectedHardwareWallet, fromAccount, toAddress, tokenId, tokenValue ); break; case SMART_CONTRACT: intent = webView.createTronSmartContractPaymentSheetActivityIntent( context, requestId, connectedHardwareWallet, fromAccount, toAddress, data, value, tokenId, tokenValue, feeLimit ); break; } startActivityForResult(intent, 0); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode != 0) { return; } webView.onActivityResult(requestCode, resultCode, data); }
CucumberWebView uses the CucumberWebViewClient. If you want to use your WebViewClient, you have to inherit CucumberWebViewClient class.
webView = view.findViewById(R.id.cucumberWebView); try { webView.setWebViewClient(customWebViewClient); }catch(IllegalArgumentException e){ //customWebViewClient is not a CucumberWebViewClient }