我有一个基于WordPress和Woo-commerce的购物网站,并安装了UPI付款插件。并且我已经使用Web View为我的网站制作了Android APP。
****问题****
WebView一切正常 但是我在一页中使用了UPI付款链接来重定向到upi付款 (“ upi:// pay?pn = DevShop&pa = eshop @ kotak&tr = 40766&tn = OrderID40766&am = 1149&cu = INR”)像这样的链接,但出现错误 ERR_UNKNOWN_URL_SCHEME
点击上方的“我的UPI付款链接”时,我希望它在默认的UPI APP(例如BHIM,PayTM,PhonePe等)中打开。Rest将通过列出的应用进行处理。以下是目标应用程序的链接。
https://play.google.com/store/apps/details?id=com.google.android.apps.nbu.paisa.user
https://play.google.com/store/apps/details?id=in.org.npci.upiapp
https://play.google.com/store/apps/details?id=net.one97.paytm
https://play.google.com/store/apps/details?id=com.phonepe.app
https://play.google.com/store/apps/details?id=com.mobikwik_new
https://play.google.com/store/apps/details?id=com.freecharge.android
以下是我的MainActivity.xml代码。
package com.shop.dev;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView) findViewById(R.id.webView);
// Force links and redirects to open in the WebView instead of in a browser
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wv, String url) {
if(url.startsWith("upi:") || url.startsWith("whatsapp:")) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
return true;
}
return false;
}
});
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
myWebView.loadUrl("http://192.168.1.14/mzfeb");
myWebView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if(myWebView.canGoBack()) {
myWebView.goBack();
} else {
super.onBackPressed();
}
}
}