从浏览器打开现有或新活动

时间:2014-06-19 08:32:24

标签: android android-intent url-scheme

我正在尝试实现一个意图过滤器,但由于某种原因(我不知道)可以成功。

我以下列方式宣布活动:

<activity
    android:name="com.example.StartActivity"
    android:label="@string/start_activity_title"
    android:windowSoftInputMode="adjustPan"
    android:exported="true">

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

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

        <data
            android:scheme="myapp"
            android:host="terms-signed.com"
            android:pathPrefix="/?"/>
    </intent-filter>
</activity>

浏览器尝试打开myapp://terms-signed.com/?documentKey=SOME-HEX

之类的URI

无论我将这样的URI放在浏览器地址字段中,还是点击HTML页面中的类似链接,都不会发生任何事情。

没有显示选择器,我的应用程序不会成为最重要的,如果Android没有运行,Android不会启动我的应用程序。没有。只有浏览器显示页面,其中包含该地址的网页可能暂时关闭的消息等。

我使用的是Android 4.2.1 / Galaxy Nexus。

可以做些什么来完成这项工作?

1 个答案:

答案 0 :(得分:1)

从pathPrefix中删除?,它不是路径的一部分。也许您甚至可以删除整个pathPrefix参数,因为您在主机之后没有任何路径。

Edit2:正如在评论中可以看到的那样,另外从主机声明中删除连字符和.com解决了这个问题。我最好的猜测是,由于.com,浏览器会将URI视为Web URI,无论它是否使用自定义方案。