黑莓storm设备中的java浏览器问题 2 周,1 日 Questions & Answers 513 我正在使用一个浏览器字段,它将显示在模拟器4.7 storm中。但当我在设备上执行时,它仍然是空的,页面不显示。有人能帮忙吗
# 1 楼答案 下面是代码,我试着在url后面加上“;interface=true”,但它在9550设备上仍不执行,而在9550模拟器中它仍在执行 /* *BrowserFieldDemo。JAVA * *版权所有©1998-2009运动研究有限公司。 * *注意:为了简单起见,此示例应用程序可能不会利用 *资源束和资源字符串。但是,强烈建议 *应用程序开发人员利用可用的本地化功能 *在BlackBerry开发平台内,确保无缝应用 *有跨多种语言和地域的经验。更多信息 *关于应用程序的本地化,请参阅BlackBerry Java开发 *与此版本相关的环境开发指南。 */ 导入java。伊奥。IOException 导入javax。微环境。伊奥。http连接 进口净额。边沿装置应用程序编程接口。浏览器菲尔德; 进口净额。边沿装置应用程序编程接口。伊奥。http。HttpHeaders; 进口净额。边沿装置应用程序编程接口。系统应用 进口净额。边沿装置应用程序编程接口。用户界面; 进口净额。边沿装置应用程序编程接口。用户界面。组成部分地位 进口净额。边沿装置应用程序编程接口。用户界面。容器主屏幕; 进口净额。边沿装置应用程序编程接口。系统。* 最终类BrowserFieldDemo扩展UiApplication实现渲染应用程序 { private static final String REFERER = "referer"; private RenderingSession _renderingSession; private HttpConnection _currentConnection; private MainScreen _mainScreen; /*************************************************************************** * Main. **************************************************************************/ public static void main(String[] args) { BrowserFieldDemo app = new BrowserFieldDemo(); app.enterEventDispatcher(); } private BrowserFieldDemo() { _mainScreen = new MainScreen(); pushScreen(_mainScreen); _renderingSession = RenderingSession.getNewInstance(); // Enable javascript. //_renderingSession.getRenderingOptions().setProperty(RenderingOptions.CORE_OPTIONS_GUID, RenderingOptions.JAVASCRIPT_ENABLED, true); PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread("http://wwww.vensi.com"+";interface=true", null, null, null, this); thread.start(); } void processConnection(HttpConnection connection, Event e) { // Cancel previous request. if (_currentConnection != null) { try { _currentConnection.close(); } catch (IOException e1) { } } _currentConnection = connection; BrowserContent browserContent = null; try { browserContent = _renderingSession.getBrowserContent(connection, this, e); if (browserContent != null) { Field field = browserContent.getDisplayableContent(); if (field != null) { synchronized (Application.getEventLock()) { _mainScreen.deleteAll(); _mainScreen.add(field); } } browserContent.finishLoading(); } } catch (RenderingException re) { } finally { SecondaryResourceFetchThread.doneAddingImages(); } } /** * @see net.rim.device.api.browser.RenderingApplication#eventOccurred(net.rim.device.api.browser.Event) */ public Object eventOccurred(Event event) { int eventId = event.getUID(); switch (eventId) { case Event.EVENT_URL_REQUESTED : { UrlRequestedEvent urlRequestedEvent = (UrlRequestedEvent) event; PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread(urlRequestedEvent.getURL(), urlRequestedEvent.getHeaders(), urlRequestedEvent.getPostData(), event, this); thread.start(); break; } case Event.EVENT_BROWSER_CONTENT_CHANGED: { // Browser field title might have changed update title. BrowserContentChangedEvent browserContentChangedEvent = (BrowserContentChangedEvent) event; if (browserContentChangedEvent.getSource() instanceof BrowserContent) { BrowserContent browserField = (BrowserContent) browserContentChangedEvent.getSource(); String newTitle = browserField.getTitle(); if (newTitle != null) { synchronized (getAppEventLock()) { _mainScreen.setTitle(newTitle); } } } break; } case Event.EVENT_REDIRECT : { RedirectEvent e = (RedirectEvent) event; String referrer = e.getSourceURL(); switch (e.getType()) { case RedirectEvent.TYPE_SINGLE_FRAME_REDIRECT : // Show redirect message. Application.getApplication().invokeAndWait(new Runnable() { public void run() { Status.show("You are being redirected to a different page..."); } }); break; case RedirectEvent.TYPE_JAVASCRIPT : break; case RedirectEvent.TYPE_META : // MSIE and Mozilla don't send a Referer for META Refresh. referrer = null; break; case RedirectEvent.TYPE_300_REDIRECT : // MSIE, Mozilla, and Opera all send the original // request's Referer as the Referer for the new // request. Object eventSource = e.getSource(); if (eventSource instanceof HttpConnection) { referrer = ((HttpConnection)eventSource).getRequestProperty(REFERER); } break; } HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setProperty(REFERER, referrer); PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread(e.getLocation(), requestHeaders,null, event, this); thread.start(); break; } case Event.EVENT_CLOSE : // TODO: close the appication break; case Event.EVENT_SET_HEADER : // No cache support. case Event.EVENT_SET_HTTP_COOKIE : // No cookie support. case Event.EVENT_HISTORY : // No history support. case Event.EVENT_EXECUTING_SCRIPT : // No progress bar is supported. case Event.EVENT_FULL_WINDOW : // No full window support. case Event.EVENT_STOP : // No stop loading support. default : } return null; } /** * @see net.rim.device.api.browser.RenderingApplication#getAvailableHeight(net.rim.device.api.browser.BrowserContent) */ public int getAvailableHeight(BrowserContent browserField) { // Field has full screen. return Display.getHeight(); } /** * @see net.rim.device.api.browser.RenderingApplication#getAvailableWidth(net.rim.device.api.browser.BrowserContent) */ public int getAvailableWidth(BrowserContent browserField) { // Field has full screen. return Display.getWidth(); } /** * @see net.rim.device.api.browser.RenderingApplication#getHistoryPosition(net.rim.device.api.browser.BrowserContent) */ public int getHistoryPosition(BrowserContent browserField) { // No history support. return 0; } /** * @see net.rim.device.api.browser.RenderingApplication#getHTTPCookie(java.lang.String) */ public String getHTTPCookie(String url) { // No cookie support. return null; } /** * @see net.rim.device.api.browser.RenderingApplication#getResource(net.rim.device.api.browser.RequestedResource, * net.rim.device.api.browser.BrowserContent) */ public HttpConnection getResource( RequestedResource resource, BrowserContent referrer) { if (resource == null) { return null; } // Check if this is cache-only request. if (resource.isCacheOnly()) { // No cache support. return null; } String url = resource.getUrl(); if (url == null) { return null; } // If referrer is null we must return the connection. if (referrer == null) { HttpConnection connection = Utilities.makeConnection(resource.getUrl(), resource.getRequestHeaders(), null); return connection; } else { // If referrer is provided we can set up the connection on a separate thread. SecondaryResourceFetchThread.enqueue(resource, referrer); } return null; } /** * @see net.rim.device.api.browser.RenderingApplication#invokeRunnable(java.lang.Runnable) */ public void invokeRunnable(Runnable runnable) { (new Thread(runnable)).start(); } } 类PrimaryResourceFetchThread扩展线程 { private BrowserFieldDemo _application; private Event _event; private byte[] _postData; private HttpHeaders _requestHeaders; private String _url; PrimaryResourceFetchThread(String url, HttpHeaders requestHeaders, byte[] postData, Event event, BrowserFieldDemo application) { _url = url; _requestHeaders = requestHeaders; _postData = postData; _application = application; _event = event; } public void run() { HttpConnection connection = Utilities.makeConnection(_url, _requestHeaders, _postData); _application.processConnection(connection, _event); } }
# 1 楼答案
下面是代码,我试着在url后面加上“;interface=true”,但它在9550设备上仍不执行,而在9550模拟器中它仍在执行
/* *BrowserFieldDemo。JAVA * *版权所有©1998-2009运动研究有限公司。 * *注意:为了简单起见,此示例应用程序可能不会利用 *资源束和资源字符串。但是,强烈建议 *应用程序开发人员利用可用的本地化功能 *在BlackBerry开发平台内,确保无缝应用 *有跨多种语言和地域的经验。更多信息 *关于应用程序的本地化,请参阅BlackBerry Java开发 *与此版本相关的环境开发指南。 */
导入java。伊奥。IOException
导入javax。微环境。伊奥。http连接
进口净额。边沿装置应用程序编程接口。浏览器菲尔德; 进口净额。边沿装置应用程序编程接口。伊奥。http。HttpHeaders; 进口净额。边沿装置应用程序编程接口。系统应用 进口净额。边沿装置应用程序编程接口。用户界面; 进口净额。边沿装置应用程序编程接口。用户界面。组成部分地位 进口净额。边沿装置应用程序编程接口。用户界面。容器主屏幕; 进口净额。边沿装置应用程序编程接口。系统。*
最终类BrowserFieldDemo扩展UiApplication实现渲染应用程序 {
}
类PrimaryResourceFetchThread扩展线程 {
}