まず、質問を明確にするために、M エミュレーターでテキストを強調表示すると、新しいフローティング アクション モードが表示されます。オーバーフロー アイコンをクリックすると、「API DEMOS」が表示されます。

クリックすると、API Demo アプリからアクティビティが表示され、強調表示されたテキストが表示されます。

フィールドの値を置き換えてボタンをクリックすると、強調表示したものの代わりに置換テキストが挿入されます。
警告: 以下の説明は、API デモ コードと M Developer Preview ドキュメントを調べたものです。これは、M が realz に出荷される前に変更される可能性が非常に高いです。メートル法を使用しない場合は YMMV (メートル法を使用する場合は YKMV)。
テキストを受け取る問題のアクティビティはACTION_PROCESS_TEXT
、アクションとしてサポートされIntent
ます。EXTRA_PROCESS_TEXT
テキストEXTRA_PROCESS_TEXT_READONLY
を保持するか、テキストが読み取り専用の場合は保持します。アクティビティは を介して呼び出されますstartActivityForResult()
。結果は、置換テキストとなるIntent
独自の値を持つことができます。EXTRA_PROCESS_TEXT
したがって、特定の質問に:
アプリの外部から選択したテキストを処理できるようにするには、コード (およびマニフェスト) に何を追加する必要がありますか?
上記を参照。API Demos アクティビティ ( ProcessText
) には次の内容があることに注意して<intent-filter>
ください。
<intent-filter >
<action android:name="android.intent.action.PROCESS_TEXT"/>
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
このドキュメントでは、MIME タイプについて説明していません。MIME タイプが必要かどうか、および他に何が得られるか (text/html
スパンを持つものについては?) を判断するための実験は行っていません。
選択を特定の種類のテキストに限定することは可能ですか? たとえば、テキスト タイプが有効な電話番号の場合にのみアプリを表示することを提案しますか?
ドキュメントを考えると、それは不可能のようです。そうは言っても、それは確かに合理的な考えです (たとえば、テキストが一致する必要があるマニフェストのメタデータを介して、正規表現または複数の正規表現を宣伝します)。