2017-02-07 6 views
1

xmlファイルを開こうとすると、アプリケーションでXMLファイルを開くことができます。多くの同様の質問がありますが、私はそれらの多くを試して何も助けているようです。XMLファイルのインテントフィルタ

これらのインテントフィルタをPDFファイルに使用すると完全に動作しますが(PDFの場合)、「PDF」と「xml」の両方の記述を置き換えると、ファイルがXMLファイルでも機能しません同じフォルダ。

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="application/pdf" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="file" 
      android:host="*" 
      android:pathPattern=".*\\.pdf" /> 
</intent-filter> 
+1

MIMEタイプフィルタに 'application/xml'と一緒に' text/xml'を追加してみてください。必ずしも[XMLファイルのMIMEタイプは時としてXML自体の内容に依存する](https://en.wikipedia.org/wiki/XML_and_MIME)のように、どちらもアプリケーションで使用されるMIMEタイプではないことに注意してください。 'file'スキームの使用を止めるにつれて、第二のフィルタは時間の経過とともにあまり関連性がなくなります。 – CommonsWare

+0

'text/xml'を追加するとトリックができました。できれば答えとして受け入れます;) – Sander

答えて

1

2つの<intent-filter>要素があります。

最初はMIMEタイプに依存しています。 application/xmlは、XMLファイルの可能なMIMEタイプですが、text/xmlもあります。特定のXMLファイルでは、XMLのコンテンツに基づいて別のMIMEタイプを使用することができます(たとえば、Atomスキーマを使用して記述されたコンテンツの場合はapplication/atom+xml)。ファイルマネージャーやその他の「汎用」コンテンツマネージャーは、ファイル拡張子としてMimeTypeMapが報告するMIMEタイプを使用する傾向があります。電子メールクライアントやWebブラウザーなどの他のアプリケーションは、サーバーによって報告されたMIMEタイプを使用します。

スキーム(file)とファイル拡張子(.xml)に依存します。 fileスキームはゆっくりと消えていくので、この特定の<intent-filter>は将来はあまり使用されません。

関連する問題