Я пытаюсь загрузить SVF-файл в Autodesk Forge Viewer локально в Xamarin.Android. Я скопировал содержимое в папку Assets/html моего проекта. Мой код для загрузки контента выглядит так.
В MyWebViewClient.cs
public WebResourceResponse ShouldInterceptRequest(WebView webView, IWebResourceRequest request)
{
try
{
Android.Net.Uri url = request.Url;
//Uri uri = url;
String path = url.Path;
if (path.StartsWith("/android_asset/"))
{
try
{
AssetManager assetManager = this.context.Assets;
String relPath = path.Replace("/android_asset/", "").Replace("gz", "gz.mp3");
//InputStream stream = assetManager.Open(relPath);
return new WebResourceResponse(null, null, assetManager.Open(relPath));
}
catch (IOException ex)
{
String str = ex.Message;
}
}
}
catch (Exception ex) { }
return null;
}
Затем в моем Activity.cs
SetContentView(Resource.Layout.webview);
var wbMain = FindViewById<WebView>(Resource.Id.webView1);
wbMain.Settings.DomStorageEnabled = true;
wbMain.Settings.JavaScriptEnabled = true;
wbMain.Settings.AllowFileAccessFromFileURLs = true;
wbMain.Settings.AllowUniversalAccessFromFileURLs = true;
var customWebViewClient = new MyWebViewClient(BaseContext);
customWebViewClient.OnPageLoaded += MyWebViewClient_OnPageLoaded;
wbMain.SetWebViewClient(customWebViewClient);
wbMain.LoadUrl("file:///android_asset/html/index.html");
Это загружает только боковые виды, а не основное средство просмотра.
В чем причина этого и как я могу это решить?
Обратите внимание, что образец немного устарел, и с тех пор в наши юридические условия внесены некоторые изменения. В настоящее время юридические положения и условия гласят, что все активы средства просмотра (JS, CSS, значки, изображения и т. д.) должны поступать из домена Autodesk.
Если вам нужно иметь возможность запускать приложение на основе средства просмотра в сценариях «временно в автономном режиме» (например, на строительной площадке), я бы посоветовал вам просмотреть следующую запись в блоге: https://forge. autodesk.com/blog/disconnected-workflows. Этот подход (с использованием Service Workers и Cache API) соответствует требованиям законодательства.
Спасибо за ответ. Мне удалось успешно запустить github.com/petrbroz/forge-disconnected на моем ноутбуке, и теперь мне нужно преобразовать его в Xamarin.android. Можно ли добавить содержимое этого проекта в папку Assets/html в моем проекте Xamarin.Android? Как мы можем сделать это на Android или iOS? не могли бы вы дать некоторые рекомендации?
Вы не должны хранить какие-либо активы средства просмотра в папке вашего проекта. Идея «временно отключенного» подхода заключается в том, что активы зрителя кэшируются браузером, но по-прежнему связаны с их исходным доменом.
Другими словами, вы можете запустить свое приложение для просмотра в режиме «временно в автономном режиме» в браузере, но не в пользовательском приложении, которое потребует загрузки каких-либо ресурсов для просмотра.
В прошлый раз, когда я пытался это сделать, это не сработало... Поэтому, когда вы найдете решение, пожалуйста, поделитесь им и здесь.