我们稍后将在我们的应用程序中实施应用程序内配置。 目前,我希望能够添加一个按钮来启动 Google Pay 应用程序,以允许用户添加付款方式。
我已经看过如何启动 Google Play 的代码。 我希望它是相似的,但具有不同的 URI。
有人可以帮忙吗。
好吧 - 还没有完全实现,但它确实让我震惊,我只需要启动一个应用程序。 因此,为此我将手机连接到电脑并运行 Android 设备监视器。 在我的手机上启动了 Google Pay,并通过麦子和谷壳进行排序,找到了当前的包名称“com.google.android.apps.walletnfcrel”。
再谷歌一下,我找到了一种测试应用程序是否已安装的方法......
private bool isAppInstalled(String packageName)
{
var context = Android.App.Application.Context;
var pm = context.PackageManager;
bool installed = false;
try
{
pm.GetPackageInfo(packageName, Android.Content.PM.PackageInfoFlags.Activities);
installed = true;
}
catch (Exception e)
{
//Handle this nicer
installed = false;
}
return installed;
}
...然后,如果安装了它,我可以按如下方式启动它......
var googlePayPackageNAme = "com.google.android.apps.walletnfcrel";
var context = Android.App.Application.Context;
Intent gpIntent = context.PackageManager.GetLaunchIntentForPackage(googlePayPackageNAme);
context.StartActivity(gpIntent);
目前我对此感到满意......还有其他事情要做,但我会在稍后尝试实际触发添加付款方式流程。
感谢 SO 上的其他帖子。 希望这对其他人有帮助。
我在我们的应用程序中想出了这个解决方案。该应用程序是使用 React Native 构建的,我实现了一个按钮,该按钮调用本机 Java 模块中的方法(如果您想知道为什么我在这里使用 Promise):
NativeModule.java
@ReactMethod
public void jumpToWallet(Promise promise) {
// Check first if wallet is installed
String packageName = "com.google.android.apps.walletnfcrel";
Context appContext = reactContext.getApplicationContext();
PackageManager pm = appContext.getPackageManager();
boolean installed = false;
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
installed = true;
} catch (PackageManager.NameNotFoundException e) {
promise.reject("WALLET_NOT_FOUND", "Couldn't find wallet");
}
if (installed) {
Intent launchIntent = pm.getLaunchIntentForPackage(packageName);
if (launchIntent != null) {
appContext.startActivity(launchIntent);
} else {
promise.reject("WALLET_NOT_LAUNCHABLE", "Couldn't launch wallet");
}
}
}
我按照上面的代码操作,它将我从我的应用程序重定向到 gpay。但这里有一个问题。付款总是失败,提示您已超出付款限额,并告诉您尝试较小的金额。但我尝试过只用 1 美元,这是向印度某人转账的最低限额。 任何人都可以帮忙解决这个错误吗?