SD カードの HTML コンテンツをブラウザー フィールドに表示しようとしましたが、毎回 HTML データをレンダリングする代わりに、ブラウザー フィールドがベース URL をレンダリングします。同じ理由を見つけようとしましたが、解決策が得られませんでした。そのベース URL が呼び出されるタイミングを明確に説明しているドキュメントは見つかりませんでした。そのベース URL が呼び出される理由とタイミングを説明してください。どんな助けでも大歓迎です...
前もって感謝します。
SD カードの HTML コンテンツをブラウザー フィールドに表示しようとしましたが、毎回 HTML データをレンダリングする代わりに、ブラウザー フィールドがベース URL をレンダリングします。同じ理由を見つけようとしましたが、解決策が得られませんでした。そのベース URL が呼び出されるタイミングを明確に説明しているドキュメントは見つかりませんでした。そのベース URL が呼び出される理由とタイミングを説明してください。どんな助けでも大歓迎です...
前もって感謝します。
それはあなたを助けるかもしれません。この回答では、sdcard から html コンテンツを 2 つの方法で表示する方法を説明しています
1)データをテキストファイルとして読み込み、それを文字列に追加し、その内容を次のように表示します
StringBuffer sb1;
FileConnection fconn = (FileConnection)Connector.open("filepath="file:///SDCard/BlackBerry/documents/HtmlFileName.txt", Connector.READ_WRITE);
if (fconn.exists())
{
InputStream input=fconn.openDataInputStream();
sb1=new StringBuffer();
int chars,i=0;
while((chars=input.read())!=-1)
{
sb1.append((char)chars);
}
}
String str=sb1.toString();
VerticalFieldManager vfm = new VerticalFieldManager(VERTICAL_SCROLL|VERTICAL_SCROLL_MASK);
BrowserFieldConfig browserFieldConfig = new BrowserFieldConfig();
browserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_POINTER);
browserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_CARET);
browserFieldConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED,Boolean.TRUE);
browserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE_POINTER.toString(),Boolean.TRUE);
browserFieldConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR,Boolean.TRUE);
BrowserField browser_field=new BrowserField(browserFieldConfig);
browser_field.displayContent(str,"");
vfm.add(browser_field);
add(vfm);
2)次のように、ブラウザフィールドからそのページを直接呼び出すことができます
String url="file:///sdcard/index.html";//specify exact path if resource then local:///.if sd card file:///
VerticalFieldManager manager=new VerticalFieldManager(VERTICAL_SCROLL|VERTICAL_SCROLLBAR|HORIZONTAL_SCROLL|HORIZONTAL_SCROLLBAR){
protected void sublayout(int maxWidth, int maxHeight) {
super.sublayout(640,Display.getHeight());
setExtent(640,Display.getHeight());
}
};
BrowserFieldConfig myBrowserFieldConfig = new BrowserFieldConfig();
myBrowserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
BrowserField browserField = new BrowserField(myBrowserFieldConfig);
history=browserField.getHistory();
browserField.requestContent(url);
manager.add(browserField);
browserField.requestContent(url);
add(manager);
これは少し古いと思いますが、同じ問題があり、ケースをどのように解決したかを共有したいと思いました.
BrowserField で新しいページに移動しようとして、新しいページを読み込めないか、エラーが発生した場合、BrowserField はベース URL を読み込みます。
この問題は私に 2 回発生しました。ある例では、私のプログラムが実行時例外をスローしましたが、これはサイレントに (偶然に) 処理されました。これにより、ナビゲーションが失敗し、ベース URL が読み込まれました。2 番目の例では、ナビゲートしようとしていたページが存在しませんでした (ファイル名または場所のスペルミスまたは誤用による)。
明確にするために、ロードに失敗したページではなく、ロードされた元のページのベース URL でした。
これが役立つことを願っています!