混合android应用程序集成的UPI深层链接问题

时间:2020-02-10 12:55:51

标签: android

我有一个基于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();
    }
}
}

0 个答案:

没有答案