0

我有一个 Xamarin.Forms 应用程序,我在其中为 iOS 和 Android 开发了一个跨平台应用程序。在那里,我在 webview 中渲染了一个网站。我将在该 web 视图中有一个 venmo 按钮用于付款。单击 venmo 按钮后,已安装在我的手机中的 venmo 应用程序将启动并返回我的应用程序并获得授权。在 iOS 中一切正常。但是在 Android 中,当我在 webview 中单击 venmo 按钮时,venmo 应用程序没有启动。我在 MainActivity.cs 中添加了如下意图过滤器。

[IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, DataScheme = "com.venmo")]

还在 AndroidManifest.xml 中添加了这个

<queries>
<package android:name="venmo" />
<intent>
<action android:name="android.intent.action.LAUNCH" />
<data android:scheme="com.venmo" />
</intent>
</queries>
4

1 回答 1

0

对于 Android,您可以使用自定义渲染器从 JavaScript 调用 C#。

像下面的代码一样注册操作。

 webView.RegisterAction(data => DisplayAlert("Alert", "Hello " + data, "OK"));//you could use your own code to launch the app.

有关更多详细信息,您可以参考 MS 文档。https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview#create-the-custom-renderer-on-each-platform

您可以下载代码示例表单 GitHub 以供参考。https://docs.microsoft.com/en-us/samples/xamarin/xamarin-forms-samples/customrenderers-hybridwebview/

当您想在此应用程序中启动另一个应用程序时,您可以StartActivity使用应用程序包名称。

 public Task<bool> Launch(string stringUri)
{

    Intent intent = Android.App.Application.Context.PackageManager.GetLaunchIntentForPackage(stringUri);
    if (intent != null)
    {
        intent.AddFlags(ActivityFlags.NewTask);
        Forms.Context.StartActivity(intent);
        return Task.FromResult(true);
    }
    else
    {
        return Task.FromResult(true);
    }
}

有关从另一个应用程序启动应用程序的整个代码,您可以参考我之前完成的线程。如何在 Xamarin 表单中从另一个应用程序启动应用程序

于 2022-01-28T07:29:15.970 回答