Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android将项目添加到全局上下文菜单_Java_Android_Menu_Contextmenu - Fatal编程技术网

Java Android将项目添加到全局上下文菜单

Java Android将项目添加到全局上下文菜单,java,android,menu,contextmenu,Java,Android,Menu,Contextmenu,当你在安卓系统中长按某个按钮时,会出现一个上下文菜单。我想为系统中的所有textview向上下文菜单添加一些内容 例如,系统通过复制和粘贴来执行此操作。我想添加我自己的,并在每个应用程序中显示 Hmm;我不知道是否可以像示例中那样扩展内置类型。Ruby(我的Java知识还不够深入) 但是,您可以从TextView派生自己的MyTextView。然后在布局中替换所有TextView,如下所示: <TextView android:id="@+id/TextView01" /> 到

当你在安卓系统中长按某个按钮时,会出现一个上下文菜单。我想为系统中的所有
textview
向上下文菜单添加一些内容


例如,系统通过复制和粘贴来执行此操作。我想添加我自己的,并在每个应用程序中显示

Hmm;我不知道是否可以像示例中那样扩展内置类型。Ruby(我的Java知识还不够深入)

但是,您可以从TextView派生自己的MyTextView。然后在布局中替换所有TextView,如下所示:

<TextView android:id="@+id/TextView01" />


自动更改所有这些字段的类型

然后您需要覆盖所有构造函数 (尤其是
文本视图(上下文、属性集属性)

之后,所有布局充气机(自动或手动)将创建此类型,无需大惊小怪


然后,您可以根据需要创建/注册上下文菜单回调。

这可能有点老套,但您可以在应用程序/活动级别捕获菜单键,检查当前活动视图是否为文本输入视图,然后构建并显示您自己的自定义弹出菜单

这是可能的,只是有点棘手

如果创建/膨胀文本视图,请对其调用setFocusable(false),然后将其设置为活动视图。您的活动仍将接收关键事件。 您必须手动将所有这些事件(轨迹球、触摸、按键)转发到视图树。(在“onKeyDown”函数中,您必须为顶层视图调用适当的“onKeyDown”方法)您必须有效地捕获“焦点”的概念,并自己分配给正确的视图

虽然有点难看,但它可能会给你想要的结果


但是,这只在您自己的应用程序中起作用。以前的答案是正确的,因为它不可能在整个手机上实现。

目前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>
更多信息请参阅关于的文章

感谢用户:


他回答

,这只适用于他的应用程序/版面中的文本视图。他想在所有应用程序中添加一些东西,包括那些他没有作者身份的应用程序。除非TextView使用一些内部意图来构建其操作列表,否则它似乎不可能进入其中。这难道不允许您在其他应用程序中查看某人的密码吗?如果你可以通过上下文菜单连接到所有文本视图,也可以转储其内容…在Android中,可以通过适当的权限查看某人的密码。谢谢。我试图制作一个翻译应用程序,可以翻译任何文本视图-你可以长按,选择翻译,选择语言,它会出现在文本视图中。我可以看到它在其他地方也很有用。啊,嗯。谢谢,艾萨克·沃勒哦,是的,那太好了。。你应该发布一份意向书,这样人们就可以订阅了,如果可以的话,我可能会把它用在我的应用上,仅供参考。祝你好运这是可能的,只是不太好看:-\n这在您尚未构建的应用程序上是如何工作的?如果您打开浏览器并选择导航文本视图,那么此时您的活动将消失。。您将如何附加和接收活动?对于现在浏览此问题的任何人,答案如下:
<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>
  @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
}