【问题标题】:Blackberry: Launch native browser from embeded browser黑莓:从嵌入式浏览器启动本机浏览器
【发布时间】:2011-02-17 03:23:35
【问题描述】:

我正在编写一个 JRE 5.0.0 应用程序。该应用程序有一些我用field2.BrowserField 显示的HTML 提示 内容。当用户单击某些链接时,我想启动本机浏览器。我已经阅读了BrowserFieldListener 的文档,但这看起来不像是解决方案。

[编辑]

或者:使用本地文档调用本机浏览器。例如:

BrowserSession session = Browser.getDefaultSession();
session.displayPage("file:///Blark/");

[/编辑]

谢谢。

【问题讨论】:

    标签: java browser blackberry browserfield


    【解决方案1】:

    RIM 的app integration summary 提供了一些示例代码来执行此操作。它晦涩难懂,但确实有效。

    【讨论】:

    • 我看到的只是“调用黑莓浏览器”,它没有涵盖它。
    • 如果你想调用一个指向外部站点的链接,代码肯定在那个页面和那个部分。只需单击“单击此处获取说明如何从 BlackBerry 应用程序中启动 BlackBerry Browser 会话的代码示例”链接。公开您需要的 Java 代码。
    • 也许当时的问题还不够清楚。我已经有一个 field2.BrowserField 显示与我的应用程序一起打包的 HTML 内容。当用户单击链接时,我想启动 BlackBerry 浏览器。
    • 该页面上的代码正是这样做的。你看过吗?你基本上找到浏览器的后台进程,设置一些参数,然后调用runApplication来调用它。
    • 没有办法从BrowserField捕获点击事件,所以一旦BrowserField显示本地资源,我就无法调用本机浏览器。
    【解决方案2】:

    我决定启动系统浏览器并提供本地文件。

    public boolean launchBrowserWithLocalResource(String resource)
    {
        boolean answer = false;
    
        InputStream input = AppLauncher.class.getResourceAsStream(resource);
    
        if( input != null )
        {
            DataBuffer buffer = new DataBuffer();
            ByteArrayOutputStream output = null;
    
            try
            {
                byte[] temp = new byte[input.available()];
    
                while(true)
                {
                    int bytesRead = input.read(temp);
    
                    if( bytesRead == -1 )
                        break;
    
                    buffer.write( temp, 0, bytesRead );
                }
                input.close();
    
                output = new ByteArrayOutputStream();
    
                Base64OutputStream boutput = new Base64OutputStream(output);
    
                output.write( "data:text/html;base64,".getBytes() );
                boutput.write( buffer.getArray() );
    
                boutput.flush();
                boutput.close();
    
                output.flush();
                output.close();
    
            } catch( IOException e )
            {
                Logger.log( "Caught IOException: " + e.getMessage() );
            }
    
            if( output != null )
            {
                BrowserSession bSession = Browser.getDefaultSession();
                bSession.displayPage( output.toString() );
                answer = true;
            }
    
        } else
        {
            Logger.log( "File not found: " + resource );
        }
        return answer;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 2011-10-14
      相关资源
      最近更新 更多