2011-12-20 72 views
0

希望你能帮助我有以下:长按图片后在浏览器的上下文菜单上添加操作?

我需要补充的是,在浏览器中的图像的 长按(即具有“保存图像”一前一后弹出上下文菜单中的动作,“复制图像”,‘查看图像’,‘设置为墙纸’等)

如选择我的行动的结果应该叫我的服务和 等.... 我不希望我的应用程序覆盖浏览器的所有上下文菜单 ,但仅向其添加操作。 我还没有找到任何有关如何做到这一点的信息。可能吗? 谢谢!

see the image

回答

0

总之,你不能做到这一点。浏览器就像你的应用程序一样。如果您正在开发浏览器,您将如何在浏览器应用程序中公开此类功能?

Android大师:我在这里丢失什么?

作为一个便笺,最接近你可以做的是定义Intent.ACTION_VIEW和资源,并希望浏览器使用IntentChooser,在这种情况下,你的应用程序(以及其他)将显示出来。

一般操作由Android Intent系统(http://developer.android.com/reference/android/content/Intent.html)定义。

+0

我同意你的看法,但有一件事情可以拨打应用程序。当您安装Skype时,如果您尝试拨打号码,或者如果您从联系人列表中选择,它会询问您是否要通过Skype或拨号程序拨打电话。它不是同一个机制?我不确定。 – akd 2011-12-20 02:20:42

+0

这些可以使用Intent解析机制完成。Skype会实施类似ACTION_PICK的事情。 ACTION_NEW_OUTGOING_CALL也看起来似乎合理(也很有趣!) – 2011-12-20 02:23:36

0

按照上面的aswer。不,您不能将菜单项添加到任何应用程序。 当你使用呼叫和看到Skype,它只是该Skype具有处理呼叫的能力。 并已在清单中注册。 因此,当提出呼叫操作时,所有注册了清单的应用程序将作为选项提供。

类似的行为可以通过简单地在清单文件中声明适当的字段来实现。 例如,如果要处理图像,您只需在意图过滤器的数据部分中处理mime

+0

请让我说清楚。如果我在应用程序中执行您的操作并将其安装在设备上。之后,只需转到本地浏览器并转到网页,然后长按一下该页面中的图像,我就可以看到将该图像以某种方式传输到了我的应用程序中? – akd 2011-12-20 03:46:09

+0

如果你按照我所说的去做,那么当你点击一个图片(不需要很长时间点击,因为它会打开上下文菜单),如果url被重定向到完整的图片路径,那么你的应用程序将作为一个选项给出(如果你已经注册了您的特定MIME应用程序)。 – Abhinava 2011-12-20 08:50:54

0

好的,如果你想添加一个上下文菜单到网页视图,你将需要执行以下操作。在主应用程序类,它扩展DroidGap你将需要添加下面一行到onCreate方法:

this.registerForContextMenu(this.appView); 

,那么你就需要将以下两个方法添加到同一个Java类:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
           ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.example, menu); 
} 

当然,您需要将R.menu.example更新为菜单的XML文件的名称。

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case R.id.settings: 
      this.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); 
      return true; 
     case R.id.help: 
      this.appView.sendJavascript("navigator.notification.alert('No help')"); 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 

在这种方法中,您需要处理所有的菜单选项活动。

相关问题