カスタムファイルタイプを使用するアプリに取り組んでいます。インテントフィルターを使用してこのタイプのファイルを開くことができるようにアプリをシステムに登録する方法を理解しました。アプリはアプリのリストにも表示されますこのタイプの添付ファイルを開こうとするときに、組み込みの電子メール クライアントからこのファイルを開くために使用できます。問題は、ファイル ブラウザーから渡されたときにファイルを開く処理を行うコードが、電子メール クライアントから渡されたときに機能しないことです。正しいタイプのファイルを選択した後、アクティビティがファイル ブラウザーから呼び出されたときに正しく動作するコードを次に示します。
Intent i = getIntent();
if(i == null) return;
Uri u = i.getData();
if(u == null) return;
String filePath = u.getEncodedPath();
if(filePath == null) return;
Util.loadOTDRFile(filePath);
ファイルブラウザからロードするときに「filePath」文字列に表示されるのは、「mnt/storage/Android/data/com.fiberdroid.001/downloads/filename.trc ...」のようなもので、アプリがロードするのに問題なく動作しますloadOTDRFile() 関数が正常に実行されました。
ただし、電子メールクライアントから同じタイプのファイルを開くと、そのコードの filePath 変数は次のようなものになります: "//mail/parts/4217" これはロードされず、ロード関数はファイルが見つからないことを返しますエラー。
loadOTDRFile() 関数の関連コードは次のとおりです。
File file = new File(filePath);
InputStream is;
try
{
is = new FileInputStream(filePath);
}
catch(FileNotFoundException e)
{
return D.ERROR_FILENOTFOUND;
}
私の質問は、「//mail/parts/4217」とはどのようなパスで、なぜ開けないのですか?
ありがとうございました。