[英]Android add item to global context menu
當您在Android中長按某些內容時,會出現一個上下文菜單。 我想為系統中所有TextViews
上下文菜單添加一些內容。
例如,系統使用“復制”和“粘貼”執行此操作。 我想添加自己的,並讓它出現在每個應用程序中。
目前Android不支持此功能,如果沒有特定活動實現您公開的意圖或活動,則無法在系統級別全局覆蓋或掛鈎功能。 即使在發布意圖的情況下,除非運行的應用程序是消費者,否則無關緊要......並且所有基本系統應用程序以及顯然所有應用程序之前的應用程序都不會沒有更新要使用的應用程序。
基本上看來,這是不可能的。
您正在嘗試使用此全局上下文菜單,某種通過您的應用程序運行的某種全局“搜索”或“發送到”功能來完成什么?
在選擇菜單中按“共享”按鈕(三個點的樹)。 然后你應該選擇自己的應用程序。 遺憾的是,它不適用於輸入字段內容。
在文件android-manifest.xml中添加intent-filter:
<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
}
感謝用戶: YungBlade
嗯; 我不知道你是否可以擴展內置類型,例如。 Ruby(我的Java知識不是那么大)。
但是,您可以從TextView派生自己的MyTextView。 然后在布局中替換所有TextView,如下所示:
<TextView android:id="@+id/TextView01" />
至
<com.mydomain.mypackage.MyTextView android:id="@+id/TextView01" />
自動更改所有這些字段的類型。
然后,您需要覆蓋所有構造函數(尤其是TextView(Context context, AttributeSet attrs)
)。
之后,所有布局的inflaters(自動或手動)將創建這種類型,沒有大驚小怪。
然后,您可以根據需要創建/注冊上下文菜單回調。
這可能有點hacky,但您可以在應用程序/活動級別捕獲菜單鍵,檢查當前活動視圖是否是文本輸入視圖,然后構建並顯示您自己的自定義彈出菜單。
有可能,這有點棘手。
如果您創建/膨脹TextView,請在其上調用setFocusable(false),然后將其設置為活動視圖,您的Activity仍將接收關鍵事件。 您必須手動將所有這些事件(軌跡球,觸摸,鍵)轉發到您的View樹。 (在你的“onKeyDown”函數中,你必須為頂級視圖調用適當的“onKeyDown”方法)你有效地必須捕獲“焦點”的概念並將其自己發送到正確的視圖。
雖然有點難看,它可能會給你想要的結果。
但是,這只適用於您自己的應用程序。 以前的答案是正確的,在整個手機上是不可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.