В моем нынешнем проекте монодроида есть две проблемы: одна при загрузке из Активы, а другая - созданная веб-страница, передаваемая для отображения, и их взаимосвязь, которая делает вещи более раздражающими!Проблемы с WebView и активами
Проблема с активами достаточно проста, файл не найден. Мой текущий код выглядит следующим образом
Android.App.Application.SynchronizationContext.Post(delegate
{
string uri = "file:///android_asset/StyleSheet.css";
string settings = string.Empty;
using (var input = c.Assets.Open(uri))
using (StreamReader sr = new System.IO.StreamReader(input))
{
settings = sr.ReadToEnd();
}
string CSS = "<html><head><style>" + settings + "</style></head><body style='height:600px;background: url(Back-AQHA.jpg)' >";
retStr = CSS + tableData.Content + "</body></html>";
callback(retStr);
}, null);
Это умирает на линии sr.ReadToEnd(), как файл не может быть найден. Все права настроены правильно для меня, чтобы быть в состоянии получить доступ к каталогу активов и читать.
с просто контекст передается методу
Теперь, если предположить, что файл был быть прочитан и передается обратно вызывающий абонент, теперь он не может отображаться (тестировал это путем создания страницы в приложении и передать его обратно) ... код WebViewer является трясиной стандарта
public class webservice_webview : Activity
{
WebView web_view;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.webview);
string res = base.Intent.GetStringExtra("content");
if (res.Length > 0)
{
web_view = FindViewById<WebView>(Resource.Id.webviewer);
web_view.Settings.JavaScriptEnabled = true;
web_view.LoadData(res, "text/html", null);
web_view.SetWebViewClient(new websiteviewClient());
}
else
return;
}
private class websiteviewClient : WebViewClient
{
public override bool ShouldOverrideUrlLoading(WebView view, string url)
{
view.LoadData(url, "text/html", null);
return true;
}
}
public override bool OnKeyDown(Android.Views.Keycode keyCode, Android.Views.KeyEvent e)
{
if (keyCode == Keycode.Back && web_view.CanGoBack())
{
web_view.GoBack();
return true;
}
return base.OnKeyDown(keyCode, e);
}
}
}
Когда содержание передается снова и визуализация, все это приводит к тому, что мертвая веб-страница говорит, что данные URL-адреса, текст/html; null, [сгенерированный html], возможно, были перемещены или ушли. Как получить отображаемую страницу?
Благодаря
Пол