2011-07-18 17 views
7

私はAndroidアプリケーションをiCal URLのハンドラとして登録しようとしています。これを行うには、webcal://擬似プロトコルのマニフェストとtext/calendar MIMEタイプ(下記参照)を使用するHTTP URLのインテントフィルタを設定します。URLのインテントフィルタ

これはエミュレータでは問題なく動作しますが、実際のデバイスでは問題が発生しています。 webcal://フィルターが機能しますが、text/calendarはありません。代わりにブラウザは、アプリケーションにURLを渡す代わりに、icalファイルをプレーンテキストとして表示します。

ブラウザーがic(設定 - >アプリケーション - >ブラウザー内)のデフォルトハンドラーとして設定されていないことを確認しました。私はいくつかの人にモバイルで問題を再現できるかどうか尋ねました。すべて同じ結果です。

テキスト/カレンダーの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エミュレータ上で正常に動作します上記判明。 Androidのバグでしょうか?

+0

サーバが正しいContent-Typeを正確に送信していない可能性はありますか?そうでない場合、ブラウザは単純なテキストとして解釈します。 regexes *。 –

+0

はい、サーバーは正しいMIMEタイプを送信します。テスト用URLは次のとおりです。http://re-publica.de/11/rp2011.ics –

+0

* .icsのパスパラメータのアプローチで別のフィルタを試しましたか?それでも問題が解決しない場合は、デフォルトのアプリをブラウザに設定して、プロンプトが表示されなくなる可能性がありますか? –

答えて

0

DEFAULTカテゴリを使用すると、BROWSABLEカテゴリ となり、問題の原因となっている可能性があります。

私がバグレポートを開いたサーバーによって

を間違った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> 
+0

変わりはない。 * .icsパスパターンとルールを指定した場合でも、ブラウザーはURLをアプリケーションに渡す代わりにデータを表示し続けます。 –

+1

あなたが探している表現は「。* .ics」です。詳しくは、ドキュメントをご覧ください:http://developer.android.com/guide/topics/manifest/data-element.html – TheIT

+0

@TheIT well見つかった!これは古代のポストですが、誰かがそれが有用であることを願っています。私は答えを更新します。彼が第二の期間を脱出するには '。* \。ics'ではないでしょうか? – Merlin

関連する問題