2012-09-21 6 views
8

これは私が解決したと思った質問how to open an attachment with my applicacion from within the email app? (mime type, intent filter ...)に関連していますが、そうではありません。アンドロイドで新しいMIMEタイプを登録する

メールクライアント(サムスンギャラクシーSIIは電子メールクライアントなどに組み込まれています)はsendIntent.setType()メソッドを尊重せず、電子メールに添付ファイルを追加するときには指定されたMIMEタイプを追加していませんsetTypeメソッドで指定します。その結果、電子メールが届いたときに添付ファイルを開くことができなくなります。

メールクライアントから添付ファイルを開くには、自分のカスタム拡張子に関連付けられた新しいMIMEタイプを作成するしかありません。

しかし、私は新しいMIMEタイプを登録する方法を見つけることができません。私はそれがいくつかのアプリケーション(ASTROファイルエクスプローラ)を行うように行うことができます知っているが、私は新しいmimeの種類を追加するための情報を探すために他の場所を知りません。

EDIT(2012年10月1日) ASTROファイルエクスプローラは、プロセスにMIMEタイプのみを追加します。彼らはプロセスの外で読むことができないので、私はそれが動作する例を持っていません。

私はMimeTypeMapのソースコードを見ていて、あらかじめ定義されたMIMEタイプのセットしか使用していないようだし、新しいタイプを追加することはできません。

私はリフレクションを使用してみましたが(チェックするだけで)、MIMEタイプを追加できましたが、私のプロセスにはMimeTypeMapのコピーがあるかのように見えます。添付ファイルを開きます。

誰かが助けることができますか?事前

+0

私は可能ではないと思います。私は少し時間を探してみて、あきらめました。それは私にとっては必須ではないといいですね。 – Ifor

答えて

1

おかげでそれはあなたのデータ仕様は、ファイルの拡張子.xyzにのみベースである私の理解です。したがって、インテントフィルタで宣言するときは、patternPathを除くすべてのパラメータに対してできるだけジェネリックであることを確認する必要があります。

は、いくつかの<data>タグにそれを分割してみて、それがmimeTypeへの不可知論だことを確認してください。

<data android:scheme="file" />        
    <data android:mimeType="*/*" /> 
    <data android:pathPattern=".*\\.xyz" /> 
    <data android:host="*" /> 

は、すべてのサブタイプが一致することを確認することもthe documentation on <data>を参照してください。

ファイルの基礎となるデータ構造によっては、一部のデバイスで問題が発生する可能性があると私は理解しています。たとえば、.xyzというファイルタイプがXMLであるとします。電子メールクライアントは、text/xmlのMIMEタイプを指定する方が、宣言したものよりも具体的で、代わりにそれを呼び出すと考えるかもしれません。

そのような場合は、代わりに<data android:mimeType="text/xml" />も含めて、複数のインテントフィルタを宣言するという解決策があります。 (これは多かれ少なかれthis answerが示唆している通りです)

+0

私はそれを試しましたが、一部の電子メールクライアント(SGII)でもうまくいきませんでした。 – richardtz

関連する問題