`

Browser 长按之后的处理

阅读更多
@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;
        }
    }
分享到:
评论
1 楼 maoxy 2012-09-25  
这个长按指的是什么长按?我试了一下没有被调用。

相关推荐

    browser.min.js和browser-polyfill.min.js.rar

    在标题“browser.min.js和browser-polyfill.min.js.rar”中,提到的两个JavaScript文件,`browser.min.js` 和 `browser-polyfill.min.js`,就是针对这个问题提供解决方案的关键工具。 `browser.min.js` 是一个小型...

    android4.0 Browser 浏览器 源码

    5. **UI设计**:Browser的用户界面是用Android的布局和视图构建的,如WebView用于显示网页内容,ActionBar用于导航和操作,以及各种触摸事件的处理。源码分析能帮助开发者理解和定制Android UI。 6. **多进程架构**...

    MibBrowser

    MibBrowser可以接收和解析这些Trap,帮助管理员及时发现并处理问题。 5. **配置和命令操作**:除了读取设备状态,MibBrowser也允许用户设置设备的配置,例如修改接口参数、重启服务等,通过执行SNMP SET请求。 6. ...

    MIB_Browser用户操作手册

    手册讲解了如何处理SNMP陷阱和通知消息,内容包括SNMPv1、SNMPv2和SNMPv3的陷阱通知消息处理,以及如何配置IP/UDP或IPX端口来接收通知消息。 15. 扫描实现SNMP代理的MIB模块 手册指导用户如何扫描SNMP代理中实现的...

    绿色版mibbrowser

    **绿色版mibbrowser详解** "Mibbrowser"是一款专业用于SNMP(Simple Network Management Protocol)网络监控的工具,主要用于管理网络设备,如路由器、交换机等。它通过查询MIB(Management Information Base)来...

    MapBrowser1.2.rar_MapBrows_MapBrowser1.03_mapbrowser 1.2_梦幻_梦幻西游

    《MapBrowser 1.2:梦幻西游的资源探索利器》 MapBrowser 1.2 是一款专为梦幻西游玩家设计的资源提取工具,它以其高效、易用的特性深受用户喜爱。作为一款强大的游戏辅助软件,MapBrowser 1.2 能够帮助玩家深入挖掘...

    LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op

    标题中的"LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op"指的是LdapBrowser的282版本的压缩文件,它包含了该软件的相关组件和可能的操作指南。LdapBrowser是一款专用于管理和查看OpenLDAP...

    browser.min.js and browser-polyfill.min.js.zip

    "browser.min.js and browser-polyfill.min.js.zip"这个压缩包就是为了解决这个问题而提供的。这个压缩包包含了两个关键文件:`browser.min.js` 和 `browser-polyfill.min.js`,它们是让Vue.js项目在IE上运行的必要...

    【netconf browser 安装包】

    你可以编辑YANG模型中的配置数据,然后提交更改到设备,以测试设备的配置处理能力。 6. **状态查询**:除了配置操作,netconf browser还允许你查询设备的状态数据,这有助于监控设备运行状况和诊断问题。 7. **...

    MIB Browser 中文WORD使用说明

    MIB Browser 中文使用说明 MIB Browser 是一种功能强大且易于使用的网络管理软件,它允许用户浏览和管理 network devices 的管理信息库(MIB)。下面是 MIB Browser 的使用说明,包括基本操作和高级功能。 目录5.1...

    ObjectBrowser10中文版

    **标题:“ObjectBrowser10中文版”** **描述解析:** `SI Object Browser`是一款专为Oracle应用开发和数据库管理设计的图形用户界面(GUI)工具。它集成了多种功能,方便开发者和DBA进行高效的工作。通过GUI,...

    DB Browser的使用

    ### DB Browser的使用详解 #### 一、DB Browser概述 **DB Browser**是一种数据库浏览工具,主要用于在开发环境中直观地查看和操作数据库内容。对于使用MyEclipse等集成开发环境(IDE)进行软件开发的工程师来说,DB ...

    Android 8.0 系统自带Browser2

    在Android 8.0系统中,内置的Browser2是一个重要的组成部分,它为用户提供了浏览网页的基本功能。这个浏览器是Google为了提升用户体验而精心设计的,特别是在Android 8.0(代号Oreo)这一版本中,它融合了多项技术...

    browser-md5-file-1.0.0.zip

    浏览器MD5文件处理库browser-md5-file是一款轻量级的JavaScript工具,主要用于在客户端计算文件的MD5哈希值。这个库特别适用于那些需要验证文件完整性的场景,比如上传文件时确保文件未被篡改或者在不同的设备间同步...

    DBBrowser之DB.Browser.for.SQLite-3.10.1-win64.exe

    它具有零配置、跨平台、自包含的特点,能够处理大量的数据,同时提供事务处理能力,确保数据的一致性和完整性。 DBBrowser for SQLite的特性包括: 1. **用户友好**:DBBrowser提供了直观的界面,允许用户轻松地...

    GeckoBrowser_delphi_gecko_browser_

    【标题】"GeckoBrowser_delphi_gecko_browser_" 指的是一个专为 Delphi 开发的应用程序设计的浏览器组件,基于 Mozilla 的 Gecko 渲染引擎。Delphi 是一款流行的面向对象的编程环境,用于创建 Windows 和 macOS 应用...

    MIB Browser,一款比SNMPutil和SNMPutilg更好用的网络管理工具

    而MIB Browser则是一款用于浏览和管理MIB数据库的工具软件,可以帮助用户轻松地查找、检索和分析MIB信息。 通过MIB Browser,用户可以: 浏览MIB数据库:MIB Browser能够将MIB数据库中的所有信息展现在用户面前,...

    MG-SOFT MIB Browser 最新版本 带listen

    MIB Browser 的 Listen 功能使得用户可以实时接收并处理这些陷阱,以便快速响应网络问题,提高故障排除效率。 **使用MG-SOFT MIB Browser** 可以执行以下操作: 1. **浏览MIB结构**:可视化呈现MIB树,方便查找和...

    LdapBrowser ldap连接工具

    4. **对象操作**:允许用户创建、修改、删除和搜索目录中的条目,支持多种操作的快捷键和批量处理。 5. **属性编辑**:提供了丰富的编辑功能,如编辑属性值、添加和删除属性等。 6. **安全特性**:支持SSL/TLS加密,...

Global site tag (gtag.js) - Google Analytics