【问题标题】:Intent filter works from Google+, but not Chrome & FacebookIntent 过滤器适用于 Google+,但不适用于 Chrome 和 Facebook
【发布时间】:2013-04-17 23:00:25
【问题描述】:

我的 AndroidManifest.xml 文件中有以下my app on Google Play

    <activity
        android:name="com.enigmadream.picturecode.Viewer"
        android:exported="true"
        android:label="@string/title_activity_viewer"
        android:parentActivityName="com.enigmadream.picturecode.Editor" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.enigmadream.picturecode.Editor" />

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

我认为它工作得很好。如果您单击link from Google+,它似乎仍然可以正常工作 - 当您单击使用服务器名称picturecode.enigmadream.com 的链接时,它提供了启动我的应用程序而不是浏览器的选项。但是当我在 Facebook 或 Chrome 中单击 link to picturecode.enigmadream.com 时,它不提供该选项,而只是导航到 Chrome 中的页面。我错过了什么?

【问题讨论】:

    标签: java android xml android-manifest intentfilter


    【解决方案1】:

    您需要使用自己的方案(例如,picturecode://)。 Facebook 和 Chrome 可能都可以自己处理 http 方案,因此不要检查是否有任何其他活动可以处理它。这样做的结果是,对于较短的 URI,您可能也不需要将主机放在适当的位置。只是picturecode://01sv...。当然,您也可以保留此过滤器。如果浏览器访问该页面,只需有一个指向正确 URI 的链接,或者甚至在可能的情况下自动重定向。

    作为参考,您可以看到 Google Play 使用 market:// 方案以这种方式工作。

    【讨论】:

    • 页面如何避免重定向到当前设备不支持的方案?例如,如果我有一个指向 picturecode.enigmadream.com/?0110 的链接,并且 picturecode.enigmadream.com 上的内容重定向到 picturecode://0110,但您正在桌面上查看不支持 picturecode 方案的页面,该怎么办。会不会出错;它会停留在其方案被理解的最后一页吗?
    • 另外,我觉得奇怪的是,当我点击进入 picturecode.enigmadream.com 的 http 链接时,我手机上的标准浏览器确实提供启动 PictureCode,但是当我在平板电脑上单击 Chrome 中的相同链接时,它提供启动外部应用程序。这导致我在groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/… 报告了一个似乎引起了一些关注的错误。所以我在想我可以让它与替代方案一起工作,但它应该也可以按原样工作。
    • 我终于实现了这个解决方案,它似乎运行良好。我在目标地址有一个 .shtml 文件,该文件在 中有这个:"/>.然后,当我使用 Android 浏览时,它会立即跳转到应用程序,但如果我使用桌面浏览,它会根据需要停留在目标地址的信息页面上。
    • 不幸的是,当我从移动浏览器浏览该地址时,如果它不理解重定向中的协议,它就不会停留在页面上。它跳转到错误页面。 :( ...所以我要问一个新问题:stackoverflow.com/questions/16670029/…
    • Chrome for Android 已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多