@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
WebView webview = (WebView) v;
WebView.HitTestResult result = webview.getHitTestResult();
if (result == null) {
return;
}
int type = result.getType();
if (type == WebView.HitTestResult.UNKNOWN_TYPE) {
Log.w(LOGTAG,
"We should not show context menu when nothing is touched");
return;
}
if (type == WebView.HitTestResult.EDIT_TEXT_TYPE) {
// let TextView handles context menu
return;
}
// Note, http://b/issue?id=1106666 is requesting that
// an inflated menu can be used again. This is not available
// yet, so inflate each time (yuk!)
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.browsercontext, menu);
// Show the correct menu group
String extra = result.getExtra();
menu.setGroupVisible(R.id.PHONE_MENU,
type == WebView.HitTestResult.PHONE_TYPE);
menu.setGroupVisible(R.id.EMAIL_MENU,
type == WebView.HitTestResult.EMAIL_TYPE);
menu.setGroupVisible(R.id.GEO_MENU,
type == WebView.HitTestResult.GEO_TYPE);
menu.setGroupVisible(R.id.IMAGE_MENU,
type == WebView.HitTestResult.IMAGE_TYPE
|| type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE);
menu.setGroupVisible(R.id.ANCHOR_MENU,
type == WebView.HitTestResult.SRC_ANCHOR_TYPE
|| type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE);
// Setup custom handling depending on the type
switch (type) {
case WebView.HitTestResult.PHONE_TYPE:
menu.setHeaderTitle(Uri.decode(extra));
menu.findItem(R.id.dial_context_menu_id).setIntent(
new Intent(Intent.ACTION_VIEW, Uri
.parse(WebView.SCHEME_TEL + extra)));
Intent addIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
addIntent.putExtra(Insert.PHONE, Uri.decode(extra));
addIntent.setType(Contacts.People.CONTENT_ITEM_TYPE);
menu.findItem(R.id.add_contact_context_menu_id).setIntent(
addIntent);
menu.findItem(R.id.copy_phone_context_menu_id).setOnMenuItemClickListener(
new Copy(extra));
break;
case WebView.HitTestResult.EMAIL_TYPE:
menu.setHeaderTitle(extra);
menu.findItem(R.id.email_context_menu_id).setIntent(
new Intent(Intent.ACTION_VIEW, Uri
.parse(WebView.SCHEME_MAILTO + extra)));
menu.findItem(R.id.copy_mail_context_menu_id).setOnMenuItemClickListener(
new Copy(extra));
break;
case WebView.HitTestResult.GEO_TYPE:
menu.setHeaderTitle(extra);
menu.findItem(R.id.map_context_menu_id).setIntent(
new Intent(Intent.ACTION_VIEW, Uri
.parse(WebView.SCHEME_GEO
+ URLEncoder.encode(extra))));
menu.findItem(R.id.copy_geo_context_menu_id).setOnMenuItemClickListener(
new Copy(extra));
break;
case WebView.HitTestResult.SRC_ANCHOR_TYPE:
case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE:
TextView titleView = (TextView) LayoutInflater.from(this)
.inflate(android.R.layout.browser_link_context_header,
null);
titleView.setText(extra);
menu.setHeaderView(titleView);
// decide whether to show the open link in new tab option
menu.findItem(R.id.open_newtab_context_menu_id).setVisible(
mTabControl.getTabCount() < TabControl.MAX_TABS);
PackageManager pm = getPackageManager();
Intent send = new Intent(Intent.ACTION_SEND);
send.setType("text/plain");
ResolveInfo ri = pm.resolveActivity(send, PackageManager.MATCH_DEFAULT_ONLY);
menu.findItem(R.id.share_link_context_menu_id).setVisible(ri != null);
if (type == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
break;
}
// otherwise fall through to handle image part
case WebView.HitTestResult.IMAGE_TYPE:
if (type == WebView.HitTestResult.IMAGE_TYPE) {
menu.setHeaderTitle(extra);
}
menu.findItem(R.id.view_image_context_menu_id).setIntent(
new Intent(Intent.ACTION_VIEW, Uri.parse(extra)));
menu.findItem(R.id.download_context_menu_id).
setOnMenuItemClickListener(new Download(extra));
break;
default:
Log.w(LOGTAG, "We should not get here.");
break;
}
}
分享到:
相关推荐
在标题“browser.min.js和browser-polyfill.min.js.rar”中,提到的两个JavaScript文件,`browser.min.js` 和 `browser-polyfill.min.js`,就是针对这个问题提供解决方案的关键工具。 `browser.min.js` 是一个小型...
5. **UI设计**:Browser的用户界面是用Android的布局和视图构建的,如WebView用于显示网页内容,ActionBar用于导航和操作,以及各种触摸事件的处理。源码分析能帮助开发者理解和定制Android UI。 6. **多进程架构**...
MibBrowser可以接收和解析这些Trap,帮助管理员及时发现并处理问题。 5. **配置和命令操作**:除了读取设备状态,MibBrowser也允许用户设置设备的配置,例如修改接口参数、重启服务等,通过执行SNMP SET请求。 6. ...
手册讲解了如何处理SNMP陷阱和通知消息,内容包括SNMPv1、SNMPv2和SNMPv3的陷阱通知消息处理,以及如何配置IP/UDP或IPX端口来接收通知消息。 15. 扫描实现SNMP代理的MIB模块 手册指导用户如何扫描SNMP代理中实现的...
**绿色版mibbrowser详解** "Mibbrowser"是一款专业用于SNMP(Simple Network Management Protocol)网络监控的工具,主要用于管理网络设备,如路由器、交换机等。它通过查询MIB(Management Information Base)来...
《MapBrowser 1.2:梦幻西游的资源探索利器》 MapBrowser 1.2 是一款专为梦幻西游玩家设计的资源提取工具,它以其高效、易用的特性深受用户喜爱。作为一款强大的游戏辅助软件,MapBrowser 1.2 能够帮助玩家深入挖掘...
标题中的"LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op"指的是LdapBrowser的282版本的压缩文件,它包含了该软件的相关组件和可能的操作指南。LdapBrowser是一款专用于管理和查看OpenLDAP...
"browser.min.js and browser-polyfill.min.js.zip"这个压缩包就是为了解决这个问题而提供的。这个压缩包包含了两个关键文件:`browser.min.js` 和 `browser-polyfill.min.js`,它们是让Vue.js项目在IE上运行的必要...
你可以编辑YANG模型中的配置数据,然后提交更改到设备,以测试设备的配置处理能力。 6. **状态查询**:除了配置操作,netconf browser还允许你查询设备的状态数据,这有助于监控设备运行状况和诊断问题。 7. **...
MIB Browser 中文使用说明 MIB Browser 是一种功能强大且易于使用的网络管理软件,它允许用户浏览和管理 network devices 的管理信息库(MIB)。下面是 MIB Browser 的使用说明,包括基本操作和高级功能。 目录5.1...
**标题:“ObjectBrowser10中文版”** **描述解析:** `SI Object Browser`是一款专为Oracle应用开发和数据库管理设计的图形用户界面(GUI)工具。它集成了多种功能,方便开发者和DBA进行高效的工作。通过GUI,...
### DB Browser的使用详解 #### 一、DB Browser概述 **DB Browser**是一种数据库浏览工具,主要用于在开发环境中直观地查看和操作数据库内容。对于使用MyEclipse等集成开发环境(IDE)进行软件开发的工程师来说,DB ...
在Android 8.0系统中,内置的Browser2是一个重要的组成部分,它为用户提供了浏览网页的基本功能。这个浏览器是Google为了提升用户体验而精心设计的,特别是在Android 8.0(代号Oreo)这一版本中,它融合了多项技术...
浏览器MD5文件处理库browser-md5-file是一款轻量级的JavaScript工具,主要用于在客户端计算文件的MD5哈希值。这个库特别适用于那些需要验证文件完整性的场景,比如上传文件时确保文件未被篡改或者在不同的设备间同步...
它具有零配置、跨平台、自包含的特点,能够处理大量的数据,同时提供事务处理能力,确保数据的一致性和完整性。 DBBrowser for SQLite的特性包括: 1. **用户友好**:DBBrowser提供了直观的界面,允许用户轻松地...
【标题】"GeckoBrowser_delphi_gecko_browser_" 指的是一个专为 Delphi 开发的应用程序设计的浏览器组件,基于 Mozilla 的 Gecko 渲染引擎。Delphi 是一款流行的面向对象的编程环境,用于创建 Windows 和 macOS 应用...
而MIB Browser则是一款用于浏览和管理MIB数据库的工具软件,可以帮助用户轻松地查找、检索和分析MIB信息。 通过MIB Browser,用户可以: 浏览MIB数据库:MIB Browser能够将MIB数据库中的所有信息展现在用户面前,...
MIB Browser 的 Listen 功能使得用户可以实时接收并处理这些陷阱,以便快速响应网络问题,提高故障排除效率。 **使用MG-SOFT MIB Browser** 可以执行以下操作: 1. **浏览MIB结构**:可视化呈现MIB树,方便查找和...
4. **对象操作**:允许用户创建、修改、删除和搜索目录中的条目,支持多种操作的快捷键和批量处理。 5. **属性编辑**:提供了丰富的编辑功能,如编辑属性值、添加和删除属性等。 6. **安全特性**:支持SSL/TLS加密,...