Android で何かを長押しすると、コンテキスト メニューが表示されます。システム内のすべてのコンテキスト メニューに何かを追加したいと考えてTextViews
います。
たとえば、システムはこれをコピー アンド ペーストで行います。自分で追加して、すべてのアプリケーションに表示したいと思います。
Android で何かを長押しすると、コンテキスト メニューが表示されます。システム内のすべてのコンテキスト メニューに何かを追加したいと考えてTextViews
います。
たとえば、システムはこれをコピー アンド ペーストで行います。自分で追加して、すべてのアプリケーションに表示したいと思います。
現在、Androidはこれをサポートしていません。公開するインテントまたはアクティビティを実装する特定のアクティビティがなければ、システムレベルで機能をグローバルにオーバーライドまたはフックすることはできません。インテントを公開する場合でも、実行中のアプリケーションがコンシューマーでない限り問題にはなりません...そして、すべての基本システムアプリケーションと、明らかにそれ以前のすべてのアプリケーションは、消費するアプリを更新しないといけません。
基本的に、これは不可能です。
このグローバルコンテキストメニュー、つまりアプリケーション全体で実行されるある種のグローバルな「検索」または「送信」機能を使用して、正確に何を達成しようとしていますか?
ファイル android-manifest.xml にインテント フィルターを追加します。
<activity
android:name=".ProcessTextActivity"
android:label="@string/process_text_action_name">
<intent-filter>
<action android:name="android.intent.action.PROCESS_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
メソッド onCreate() でアプリのアクティビティのユーザー テキストによって強調表示されます。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.process_text_main);
CharSequence text = getIntent()
.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT);
// process the text
}
詳細については、mediumの記事を参照してください。
ユーザーに感謝: YungBlade
うーん; 例のように組み込み型を拡張できるかどうかはわかりません。Ruby(私のJavaの知識はそれほど深くありません)。
ただし、TextViewから独自のMyTextViewを派生させることができます。次に、すべてのTextViewを次のようなレイアウトに置き換えます。
<TextView android:id="@+id/TextView01" />
に
<com.mydomain.mypackage.MyTextView android:id="@+id/TextView01" />
これらすべてのフィールドのタイプを自動的に変更します。
次に、すべてのコンストラクター(特に)をオーバーライドする必要がありますTextView(Context context, AttributeSet attrs)
。
その後、すべてのレイアウトインフレータ(自動または手動)は、大騒ぎせずにこのタイプを作成します。
次に、必要に応じてコンテキストメニューコールバックを作成/登録できます。