当您长时间按下Android中的某些内容时,会出现一个上下文菜单。我想为系统中所有TextViews
的上下文菜单添加一些内容。
例如,系统使用“复制”和“粘贴”执行此操作。我想添加自己的,并让它出现在每个应用程序中。
答案 0 :(得分:5)
目前Android不支持此功能,如果没有特定活动实现您公开的意图或活动,则无法在系统级别全局覆盖或挂钩功能。即使在发布意图的情况下,除非运行的应用程序是消费者,否则无关紧要......并且所有基本系统应用程序以及显然所有应用程序之前的应用程序都不会没有更新要使用的应用程序。
基本上看来,这是不可能的。
您要使用此全局上下文菜单,某种全局“搜索”或“发送到”功能在您的应用程序中运行,您究竟想要完成什么?
答案 1 :(得分:0)
嗯;我不知道你是否可以扩展内置类型,例如。 Ruby(我的Java知识不是那么大)。
但是,您可以从TextView派生自己的MyTextView。然后在布局中替换所有TextViews,如下所示:
<TextView android:id="@+id/TextView01" />
到
<com.mydomain.mypackage.MyTextView android:id="@+id/TextView01" />
自动更改所有这些字段的类型。
然后你需要覆盖所有构造函数
(尤其是TextView(Context context, AttributeSet attrs)
)。
之后,所有布局的inflaters(自动或手动)都会创建这种类型,而不会大惊小怪。
然后您可以根据需要创建/注册上下文菜单回调。
答案 2 :(得分:0)
这可能有点hacky,但您可以在应用程序/活动级别捕获菜单键,检查当前活动视图是否是文本输入视图,然后构建并显示您自己的自定义弹出菜单。
有可能,这有点棘手。
如果您创建/充气TextView,请在其上调用setFocusable(false),然后将其设置为活动视图,活动仍会收到关键事件。 您必须手动将所有这些事件(轨迹球,触摸,键)转发到您的View树。 (在你的“onKeyDown”函数中你必须为顶级视图调用适当的“onKeyDown”方法)你有效地必须捕获“焦点”的概念并将其自己发送到正确的视图。
虽然有点难看,但它可能会给你带来理想的效果。
但是,这只适用于您自己的应用程序。以前的答案是正确的,因为整个手机都不可能。
答案 3 :(得分:0)
在选择菜单中按“共享”按钮(三个点的树)。然后你应该选择自己的应用程序。遗憾的是,它不适用于输入字段内容。
答案 4 :(得分:0)
在文件android-manifest.xml中添加意图过滤器:
let response = await fnCaller.postFunction('/path/to/function',anObject);
通过onCreate()方法中的应用在活动中按用户文本突出显示
<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>
有关medium的文章中的更多信息。
感谢用户:YungBlade
在ru.stackoverflow.com上提示答案