2016-06-23 21 views
1

とアンドロイドでDocumentFileを保存、ユーザーがディレクトリを選択し、onActivityResultで、DocumentFileがそうのように作成されます。私のアプリでカスタム拡張

Uri treeUri = resultData.getData(); 
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri); 
DocumentFile newFile = pickedDir.createFile("text/plain", filename); 

私は、その後のOutputStreamと、このDocumentFileに書き込み、 getUri()を使用してUriを取得し、このUriを電子メールの意図に余分に追加して、電子メールに添付します。

現在、MIMEタイプとして「text/plain」を選択しているため、添付ファイルの拡張子は「.txt」です。しかし、この拡張子を ".vtk"に変更したいのですが、どこにいても解決策を見つけることができませんでした。これを行う方法はありますか、または私はAndroidの認識されたMIMEタイプのみに限定されていますか? ".vtk"は認識されません。

答えて

1

により、私は私のMIMEタイプとして「プレーンテキストを/」選択したという事実のために、添付ファイルは「.TXT」拡張子正確

ないがあります。特定のファイル名構造の必要はありません。結局のところ、ファイルに関しては機能しないストレージプロバイダを作成することは完全に可能である(例えば、コンテンツはデータベース、ローカルまたはサーバ上のBLOBカラムに保存される)。そのcontentUriがあなたのコンテンツ

  • のためのようなの政策を見てどうなるかという点で

    • ストレージプロバイダの方針、:

      電子メールの添付ファイルは、以下に基づいて命名されますどのように

      電子メールクライアント、それはEXTRA_STREAMcontentUriに遭遇した(私はあなたが使用していると仮定するものである)

    • ユーザー
    • あなた

    filenameは、このことが呼び出される可能性のあるあなたの提案です。そこにファイル拡張子を置こうとすることはできますが、それは尊重されないかもしれません(ドキュメントでは提供しないことを推奨しています)。同様に、DocumentFilerenameTo()に電話して名前を変更することもできます。ストレージプロバイダがrenameTo()に含まれるファイル拡張子を尊重するかどうかは、プロバイダに依存します。ユーザーは、ストレージプロバイダーと連携している他のアプリにアクセスして、ユーザーが望むものに名前を付けることができます。電子メールクライアントは、添付ファイル名に必要なものは何でも行うことができます。等々。私は「.vtk」にこの拡張子を変更したいのですが、あなたはそれはあなたができるすべてで、あなたのfilename.vtkを入れている場合は、私はどこでも

    解決策を見つけることができていない

    行う。そこから起こることはあなたのコントロールを超えています。

    私はAndroidの認識されたMIMEタイプのみに限定されていますか?

    text/plainを任意の有効なMIMEタイプに置き換えることはできますが、ストレージプロバイダはこれをどのような方法で行いますかはプロバイダによって異なります。特に、私は、どんなプロバイダーも、そういうMIMEタイプは.vtkというファイル拡張子を持つべきだと知っているとは思っていません。のファイル拡張子.vtkに解決される標準のMIMEタイプであるかどうかはわかりません。

    ".vtk"が認識されません。

    これは、それが意味するところは、MIMEタイプではありません。

  • 関連する問題