11

これは、メールアプリ内からアプリケーションで添付ファイルを開く方法に関する質問に関連していますか?(mimeタイプ、インテントフィルター…)解決したと思っていたのですが、そうではありません。

一部の電子メールクライアント(たとえば、電子メールクライアントに組み込まれているSamsung Galaxy SII)は、sendIntent.setType()メソッドを尊重せず、電子メールに添付ファイルを追加するときに、setTypeメソッドで指定されたmime-typeを追加しないことがわかりました。 。その結果、メールが届いたときに添付ファイルを開くことができません。

したがって、任意の電子メールクライアントから添付ファイルを開くことができるようにするには、カスタム拡張機能に関連付けられた新しいmimeタイプを作成するしか方法がないと思います。

しかし、新しいmimeタイプを登録する方法が見つかりません。一部のアプリ(ASTROファイルエクスプローラー)と同じように実行できることは知っていますが、新しいmimeタイプの追加に関する情報を他にどこで探すべきかわかりません。

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

私はMimeTypeMapソースコードを見てきましたが、事前定義されたmimeタイプのセットのみを使用しており、新しいタイプを追加できないようです。

リフレクションを使用して(確認するためだけに)、mimeタイプを追加できましたが、プロセスにMimeTypeMapの独自のコピーがあるかのように、プロセスにのみ表示されるため、電子メールクライアントは添付ファイルを開きません。

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

前もって感謝します

4

2 に答える 2

1

あなたのデータ仕様はファイル拡張子のみに基づいていると理解しています.xyz。したがって、インテント フィルターで宣言するときは、patternPath.

いくつかのタグに分割してみて、次<data>のものにとらわれないようにしてmimeTypeください。

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

のドキュメント<data>も参照して、すべてのサブタイプが一致していることを確認してください。

ファイルの基礎となるデータ構造が一部のデバイスで問題を引き起こす可能性があることは理解しています。たとえば、.xyzファイルの種類が XML だとします。電子メール クライアントは、text/xmlMIME タイプを提供する方が、宣言したものよりも具体的であると判断し、代わりに MIME タイプを呼び出す可能性があります。

そのような場合、解決策は、複数のインテント フィルタを宣言することである可能性があります<data android:mimeType="text/xml" />(これは、この回答が示唆するものとほぼ一致しています。)

于 2012-10-05T16:34:05.743 に答える