Xamarin Android深层链接不起作用

时间:2017-01-16 16:00:39

标签: android xamarin deep-linking

我正在使用Xamarin开发Android应用程序。我希望能够在用户打开链接 <div id="page169" title="170" class="seitenumbruch"> <p class="_10_Lesetext_02_Txt_lb"><span class="semibold-semicondensed _idGenCharOverride-1">Name.</span> Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text</p> </div> <div id="page170" title="170" class="seitenumbruch"> <p class="_10_Lesetext_02_Txt_lb seitenumbruch"><span class="semibold-semicondensed _idGenCharOverride-1">Name.</span> Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text</p> </div> <div id="page171" title="171" class="seitenumbruch"> <p class="_10_Lesetext_02_Txt seitenumbruch">together Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text</p> <p class="_10_Lesetext_02_Txt_lb"><span class="semibold-semicondensed _idGenCharOverride-1">Name.</span> Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text</p> <p class="_10_Lesetext_02_Txt_lb"><span class="semibold-semicondensed _idGenCharOverride-1">Name.</span> Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text</p> </div>时打开应用程序,因此我将其添加到我的清单文件中:

example://gizmos

这是直接从Android文档中获取的。我尝试点击我的物理Android设备上的邮件应用程序中的<activity android:name="mynamespace.MyActivity" android:label="@string/application_name" > <intent-filter android:label="@string/application_name"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos” --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> <!-- Accepts URIs that begin with "example://gizmos” --> <data android:scheme="example" android:host="gizmos" /> </intent-filter> </activity> 链接,但收到消息:example://gizmos

修改

它与建议的副本不同,它们不使用Xamarin。

1 个答案:

答案 0 :(得分:4)

在Xamarin android中,活动配置在活动类的属性中设置

例如:

namespace XamarinAndroidDeepLink
{
    [Activity(Label = "XamarinAndroidDeepLink", MainLauncher = true, Icon = "@drawable/icon")]
    [IntentFilter(new[] { Android.Content.Intent.ActionView },
    DataScheme = "wori",
    DataHost = "example.com",
    DataPathPrefix ="/",
    Categories = new[] { Android.Content.Intent.CategoryDefault,Android.Content.Intent.CategoryBrowsable })]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);    
        }
    }
}

您不需要在清单中设置意图过滤器,c#将帮助您在清单中构建配置。

通过adb测试深层链接:

adb shell am start -W -a android.intent.action.VIEW -d "wori://example.com/?id=1234" XamarinAndroidDeepLink.XamarinAndroidDeepLink

你会发现你的应用程序开始:

enter image description here

某些浏览器无法区分网址。他们会在您的客户网址之前添加http://,当您在地址栏中输入网址时,它会使用搜索引擎。

我建议您设计自己的html页面并下载google chrome以打开html页面:

注意:请勿通过html viewer

打开html页面
<html>
 <head>
  <title>Product 12345</title>
 </head>
 <body>
  <a href="wori://example.com/?id=1234">lalala</a>
 </body>
</html>

下载谷歌浏览器并打开您的链接:

enter image description here