7

カスタム ファイル タイプ (.sor) を生成するアプリがあります。アプリ内には、これらのファイルのいずれかを添付してメールを送信する機能があります。また、このタイプのファイルを開くことができるアプリのリストにアプリが表示されるようにするインテント フィルターもあります。これにより、(場合によっては)電話のユーザーのメール クライアントから直接アプリでファイルを開くことができます。

ただし、これは電子メールが PC の電子メール クライアントから送信された場合にのみ機能し、電子メールが電話から受信された場合には機能しません。たとえば、これらの .sor ファイルのいずれかを生成し、アプリを使用して自分のメール アカウントにメールを送信すると、電話でメールを受信しますが、アプリで添付ファイルを開くことはできません... しかし、同じアカウントに電子メールを送信し、電話ではなく PC (Thunderbird を使用) で開き、それを転送するか、新しい電子メールとして電話に送信すると、同じ電子メール アプリを使用できるようになります。電話でアプリで添付ファイルを開く...ここでは1つの電子メールアカウントについてのみ話しています。唯一の違いは、電子メールがどこから送信されたか、電話またはWindows 7 PCです。

考えられる唯一のことは、電話から電子メールを送信すると、PC の Thunderbird から送信する場合とは異なる MIME タイプが添付ファイルに埋め込まれているということです... MIME タイプを「application/」と指定します。 octet-stream" をアプリからメールを送信すると、この MIME タイプを検索するインテント フィルターがありますが、正しく機能しません。

私の意図フィルター:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="application/octet-stream" />
  <data android:scheme="file" />
</intent-filter>

電話から電子メールの添付ファイルでファイルを送信するときに、電話の電子メール クライアントに渡すインテント:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("application/octet-stream");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + fullPathString));
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "FiberDroid OTDR Trace File: \"" + ContextMenuFileName + "\"");
sendIntent.putExtra(Intent.EXTRA_TEXT, "This e-mail was sent from the TTI FiberDroid Android application.");
startActivity(Intent.createChooser(sendIntent, "Select E-Mail Application"));

ここでも、ファイルが添付された電子メールの送信は正しく機能します...そして、同じファイルを PC の電子メール クライアント (Outlook や Thunderbird など) から電話に返信すると、アプリケーションでファイルを開くことができます。電話のメールアプリから直接。問題は、仲介者として PC を介さずに電話でメールを開くと、添付ファイルを開くことができず、「SD カードに保存」というオプションしか表示されないことです...

要約すると、同じファイルが添付され、両方とも最初にアプリケーションから同じアカウントに送信された (両方とも同じアカウントから受信した) 同一のメールが 2 通電話にありましたが、通過したメールの添付ファイルは不要な仲介者としての私の PC は正しく動作し、私の電話から直接送受信されたものは正しく動作しません。

何か案は?前もって感謝します。

4

2 に答える 2

11

私はこれを解決しましたが、ほとんどの場合、暗闇の中で撮影し、何を解決したのかよくわかりませんが、マニフェストのインテントフィルターに使用できるものは次のとおりです。ここで、「。sor」はカスタムファイルの拡張子です。タイプ。これは、K-9メールやAstroを含む、私が試したすべてのメールおよびファイル管理アプリで機能します。

<!-- For email attachments -->
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
   <category android:name="android.intent.category.DEFAULT" />
   <data android:mimeType="application/*" host="*" android:pathPattern=".*.sor" android:scheme="content" />
</intent-filter>

<!--  For file browsers -->
<intent-filter>
   <action android:name="android.intent.action.VIEW"/>
   <category android:name="android.intent.category.DEFAULT"/>
   <data android:mimeType="application/*" host="*" android:pathPattern=".*.sor" android:scheme="file" />
</intent-filter>
于 2012-09-18T13:09:19.213 に答える