如何使用自定义网址方案启动Android应用程序

时间:2015-08-19 18:02:44

标签: android android-activity url-scheme deep-linking

我想从自定义网址方案启动我的应用。我检查了dev android上的深层链接部分,这里是我的代码片段。虽然看起来像这样的URL,但似乎没有:myApp://?host = myhost.com

清单:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="myApp" />
</intent-filter>

在我的主要活动中,我有:

Intent intent = getIntent();
Uri uri = intent.getData();
if (uri != null) {
    String host = uri.getQueryParameter("host");
}

当我的电子邮件将网址作为超链接时,应用程序无法启动。 另外,测试这个的好方法是什么?

3 个答案:

答案 0 :(得分:1)

试试这个,编辑IntentFilter

<intent-filter>
  <action android:name="android.intent.action.VIEW"></action>
  <category android:name="android.intent.category.DEFAULT"></category>
  <category android:name="android.intent.category.BROWSABLE"></category>
  <data android:host="www.youtube.com" android:scheme="http"></data>
</intent-filter>

修改

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>


<intent-filter>
  <action android:name="android.intent.action.VIEW"></action>
  <category android:name="android.intent.category.DEFAULT"></category>
  <category android:name="android.intent.category.BROWSABLE"></category>
  <data android:host="www.youtube.com" android:scheme="http"></data>
</intent-filter>

答案 1 :(得分:1)

浏览器将方案转换为小写,因此您需要将数据标记更改为

<data android:scheme="myapp"/>

答案 2 :(得分:0)

看起来ACTION_VIEW似乎是支持自定义URI方案的必需品。我可以添加VIEW和MAIN,虽然它可以让它工作。