【发布时间】:2019-12-11 10:54:22
【问题描述】:
我有一个基于 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 应用程序(如 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.java 中的代码
package com.shop.dev;
import androidx.appcompat.app.AppCompatActivity;
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);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
myWebView.loadUrl("http://192.168.1.14/mzdec");
myWebView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if(myWebView.canGoBack()) {
myWebView.goBack();
} else {
super.onBackPressed();
}
}
}
以下是我在 AndroidManifest.xml 中的代码
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:usesCleartextTraffic="true" android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
帮助解决错误。
以下是通过 UPI 链接付款时的错误。
【问题讨论】:
-
我认为您需要拦截 URL 的加载并检查方案是否为 UPI,然后自己启动意图。我看不出有任何其他方式可以让 webview 将您重定向到 UPI:// 方案,但它支持 HTTP 和 HTTPS
-
如果可能的话,你能给我一些例子或感谢你会修改一些代码,这样我就可以通过了。我是android开发的新手。
-
试试这个例子中提到的stackoverflow.com/a/53059413/5933012 使用 webviewclient 获取
shouldOverrideUrlLoading的句柄,您可以在其中检查方案是否为 UPI 并自己调用不同应用的 Intents -
可能对androidride.com/…有帮助
-
陷入了代码中,您能否指导我放入 MainActivity.java 中的代码并建议我是否也需要更改其他文件。那将是最好的