Android ical URL的意图过滤器

Android ical URL的意图过滤器,android,android-manifest,android-intent,Android,Android Manifest,Android Intent,我正在尝试将我的Android应用程序注册为iCal URL的处理程序。为此,我在清单中为webcal://伪协议和使用text/calendarMIME类型的HTTP URL设置了意图过滤器(见下文) 这在模拟器中工作得非常好,但在实际设备上我遇到了问题。webcal://过滤器可以工作,但是text/calendar过滤器不能工作。相反,浏览器将ical文件显示为纯文本,而不是将URL传递给我的应用程序 我检查了浏览器是否未配置为ical的默认处理程序(在设置->应用程序->浏览器中),并询

我正在尝试将我的Android应用程序注册为iCal URL的处理程序。为此,我在清单中为
webcal://
伪协议和使用
text/calendar
MIME类型的HTTP URL设置了意图过滤器(见下文)

这在模拟器中工作得非常好,但在实际设备上我遇到了问题。
webcal://
过滤器可以工作,但是
text/calendar
过滤器不能工作。相反,浏览器将ical文件显示为纯文本,而不是将URL传递给我的应用程序

我检查了浏览器是否未配置为ical的默认处理程序(在设置->应用程序->浏览器中),并询问了其他一些人是否可以在他们的手机上重现该问题。结果都一样

注册文本/日历URL的正确方法是什么

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="org.splitbrain.giraffe"
  android:versionName="0.31" android:versionCode="4">
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar">
    <activity android:label="@string/app_name" android:name="MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <category android:name="android.intent.category.BROWSABLE"></category>
            <action android:name="android.intent.action.VIEW"></action>
            <data android:mimeType="text/calendar" android:scheme="http"></data>
            <category android:name="android.intent.category.DEFAULT"></category>
        </intent-filter>
        <intent-filter>
            <category android:name="android.intent.category.BROWSABLE"></category>
            <action android:name="android.intent.action.VIEW"></action>
            <data android:scheme="webcal"></data>
            <category android:name="android.intent.category.DEFAULT"></category>
        </intent-filter>
    </activity>
    <activity android:name="OptionsActivity"></activity>
    <activity android:name="DetailActivity"></activity>
    <activity android:name="AboutActivity"></activity>

</application>
</manifest>


更新:结果表明,上述功能在Android 1.6仿真器上运行良好,但在2.3.3仿真器上却无法正常工作,因为它显示的行为与我的手机相同。这可能是安卓系统中的一个bug吗?

只需使用默认类别,可浏览类别可能是导致问题的原因

添加一个
*.ics
路径模式,以捕获服务器提供错误mime类型的任何文件

将所有匹配的数据放入同一个筛选器

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="org.splitbrain.giraffe"
  android:versionName="0.31" android:versionCode="4">
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar">
    <activity android:label="@string/app_name" android:name="MainActivity">
        <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:mimeType="text/calendar" />
            <data android:scheme="webcal" />
            <data android:pathPattern=".*.ics" />
        </intent-filter>
    </activity>
    <activity android:name="OptionsActivity"></activity>
    <activity android:name="DetailActivity"></activity>
    <activity android:name="AboutActivity"></activity>

</application>
</manifest>


我在

打开了一个错误报告,是否服务器没有准确地发送正确的内容类型?如果不是,浏览器可能只是将其解释为纯文本。如果使用路径意图过滤器(regexes*.icalYes),则服务器可能会发送正确的mime类型。以下是我用于测试的URL:您是否尝试过另一种针对*.ics的路径参数方法?如果这不起作用,您是否可以将默认应用程序设置为浏览器,使其不再提示?否。没有区别。即使使用*.ics pathPattern和您提供的规则,浏览器仍会继续显示数据,而不是将URL交给我的应用程序。我相信您要查找的表达式是:“.*.ics”有关详细信息,请参阅文档:@it很好!这是一篇古老的文章,但我希望有人会觉得它有用。我会更新答案。逃出第二个周期不是
*\.ics