1

我有一个奇怪的问题,而不是 url 应该启动我的应用程序,它将应用程序加载到浏览器本身,在这种情况下加载到 mozella!

这是我用于我的应用程序的意图过滤器,如果有人可以告诉我我做错了什么。

<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
    android:name=".Globals"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".RSS_ViewerActivity"
        android:label="@string/app_name" >
        <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" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:scheme="itpc" />
               <data android:scheme="pcast" />
               <data android:scheme="feed" />
               <data android:scheme="feeds" />
               <data android:scheme="rss" />
        </intent-filter>

        <intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="text/xml" android:scheme="http" />
               <data android:mimeType="application/rss+xml" android:scheme="http" />
               <data android:mimeType="application/atom+xml" android:scheme="http" />
               <data android:mimeType="text/xml" android:scheme="https" />
               <data android:mimeType="application/rss+xml" android:scheme="https" />
               <data android:mimeType="application/atom+xml" android:scheme="https" />
        </intent-filter>

    </activity>
    <activity android:name="RSSFeedActivity"></activity>
    <activity android:name="com.CertificateAuthentication.Authenticator"></activity>
</application>

谢谢。

更新

再多一点信息,当对话框要求选择和应用程序打开链接弹出时,它不会显示我的应用程序,或者任何与此相关的。

更新

我删除了第二个和第三个意图过滤器,我试图将剩余的 2 个意图过滤器合并为 1 个,但这不会从浏览器加载应用程序。上面的代码是现在的样子,得到的结果和以前一样 =( 这很烦人,因为这意味着用户可以运行 2 个应用程序会话,一个来自浏览器,一个来自启动器。

4

2 回答 2

0

这里的问题是\。这是转义字符,因此要使此表达式起作用,您需要\\. 文档清楚地表明您需要使用\\.for dot (有示例\\*)。

我也同意 CommonsWare 的回答,我在文档中发现了这样的声明:

这些属性中的每一个都是可选的,但它们并不是相互独立的:为了使权限有意义,还必须指定方案。要使路径有意义,必须同时指定方案和权限。

所以The host and port together constitute the URI authority在实践中,权威意味着主持人,所以你不能省略它,显然你不能在那里放一颗星。

IMO 你让它变得复杂,你不需要在这里定义路径!哑剧类型应该可以完成这项工作。尝试找到一些读取 RSS 的开源项目,看看它们是如何定义清单的。

我认为你需要这样的东西:

<activity
    android:name=".RSS_ViewerActivity"
    android:label="@string/app_name" >
    <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" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="itpc" />
        <data android:scheme="pcast" />
        <data android:scheme="feed" />
        <data android:scheme="feeds" />
        <data android:scheme="rss" />
        <data android:mimeType="text/xml" android:scheme="http" />
        <data android:mimeType="application/rss+xml" android:scheme="http" />
        <data android:mimeType="application/atom+xml" android:scheme="http" />
        <data android:mimeType="text/xml" android:scheme="https" />
        <data android:mimeType="application/rss+xml" android:scheme="https" />
        <data android:mimeType="application/atom+xml" android:scheme="https" />
    </intent-filter>

</activity>
于 2012-08-13T14:25:59.003 回答
0

您的第二个和第三个<intent-filter>元素可能不起作用,因为android:host没有记录支持通配符。

于 2012-08-13T12:21:36.830 回答