単純なデータの受信に関するドキュメントを読みました。他のアプリからURL、つまりtext/plainを受け取りたいです。
したがって、このインテント フィルターのみを宣言しました。
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
私のMainActivity.classでは:
void onCreate (Bundle savedInstanceState) {
...
// Get intent, action and MIME type
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if ("text/plain".equals(type)) {
handleSendText(intent); // Handle text being sent
}
}
}
受け取ったテキストを次のように処理しています。
void handleSendText(Intent intent) {
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
if (sharedText != null) {
// Update UI to reflect text being shared
textBox.setText(sharedText);
}
}
しかし、ドキュメントには、他のタイプの MIME タイプを慎重に扱う必要があると書かれています。
1) しかし、プレーン/テキストのみを登録したので、型処理コードがさらに必要ですか?
2)さらに、ドキュメントを引用する:
このアクティビティをシステムの他の部分 (ランチャーなど) から開始できる場合は、インテントを調べるときにこれを考慮する必要があることに注意してください。
MainActivity.java も LAUNCHER によって開始されます。どうすればそれを処理できますか?
3) ユーザーがダイアログからアプリを選択したら、常にそのアプリを開きますか? アプリを開く必要はありません。それを回避できますか?
編集:アプリの UI を開く必要はありません。しかし、私はテキストを受け取りたいです。