Android 4.0从url启动应用程序无法正常工作

时间:2012-08-13 11:41:09

标签: android android-intent android-browser

我有一个奇怪的问题,而不是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>

感谢。

更新

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

更新

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

2 个答案:

答案 0 :(得分:0)

您的第二个和第三个<intent-filter>元素可能无效,因为android:host未记录为支持通配符。

答案 1 :(得分:0)

这里的问题是\。这是转义字符,因此要使此表达式起作用,您需要\\Documentation clearly says您需要使用\\.作为点(有\\*的示例)。

我也同意CommonsWare的回答,我在documentation这样的陈述中找到了:

  

这些属性中的每一个都是可选的,但它们并不是独立的   彼此:为了使权威有意义,一个计划也必须如此   指定。对于有意义的路径,无论是方案还是权威   必须指定。

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

IMO让你变得复杂,你不需要在这里定义路径! Mime类型应该做的工作。尝试找一些读取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>