単一または複数のファイルまたはフォルダーをアップロードできるアプリを作成しています。インテントフィルターは次のように定義されます。
<activity android:name=".UploadActivity" android:launchMode="singleTop" android:theme="@style/Theme.Sherlock">
<intent-filter android:label="@string/upload_intent">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/*" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="media/*" />
<data android:mimeType="multipart/*" />
<data android:mimeType="text/*" />
<data android:mimeType="video/*" />
</intent-filter>
<intent-filter android:label="@string/upload_intent">
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
これは、BlackmoonファイルエクスプローラーとAndroid4.0.3ギャラリーでうまく機能します。私のアプリは共有メニューに表示されます。ただし、URLを長押ししてページの共有を選択すると、ブラウザにも表示されます。
アプリにテキストファイルを送信すると、次のようになります。
getIntent().getAction() returns Intent.ACTION_SEND
getIntent().getType() returns "text/plain"
getIntent().getScheme() returns null
getIntent().getExtras().getString(Intent.EXTRA_STREAM) returns the filename
ただし、ブラウザからURLを送信すると、Intent.EXTRA_STREAMを除いた同じものが返されます。これはコードで簡単に検出でき、「テキストをアップロードできません!」と言うことができます。ただし、EXTRA_STREAMがある場合にのみトリガーされるように、インテントフィルターを変更したいと思います。そうすることは可能ですか?
(android:schemeを使用してみましたが、ファイルと共有されているテキスト文字列はどちらもnullであるため、区別されません...)