Я в настоящее время потерян, потому что мы продолжаем получать пустой экран с некоторыми ошибками синтаксиса (например, неожиданно {) на iOS, когда на Android, одно и то же приложение, может быть загружена без проблем. /> Я попробовал:
на Android, создайте пользовательский компонент с помощью '/arsets/' base href, загруженный в приложение и использовал WebViewAssetLoader для загрузки активов. Затем я ссылаюсь на все это через конкретный URL < /p>
Код: Выделить всё
package com.example.encrosstoolboxtestapplication;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.webkit.WebViewAssetLoader;
import androidx.webkit.WebViewClientCompat;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView testWebView;
final WebViewAssetLoader assetLoader = new WebViewAssetLoader.Builder()
.addPathHandler("/assets/", new WebViewAssetLoader.AssetsPathHandler(this))
.addPathHandler("/res/", new WebViewAssetLoader.ResourcesPathHandler(this))
.build();
@Override
protected void onSaveInstanceState(Bundle outState )
{
super.onSaveInstanceState(outState);
testWebView.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
testWebView.restoreState(savedInstanceState);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
testWebView=findViewById(R.id.webview);
testWebView.setWebViewClient(new LocalContentWebViewClient(assetLoader));
testWebView.getSettings().setJavaScriptEnabled(true);
testWebView.getSettings().setDomStorageEnabled(true);
if(savedInstanceState==null){
testWebView.loadUrl("https://appassets.androidplatform.net/assets/index.html");
}
}
public class testWebClient extends WebViewClient{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
super.onPageStarted(view,url,favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
//view.loadUrl(url);
return false;
}
}
@Override
public void onBackPressed(){
if(testWebView.canGoBack()){
testWebView.goBack();
}
else{
super.onBackPressed();
}
}
private static class LocalContentWebViewClient extends WebViewClientCompat {
private final WebViewAssetLoader mAssetLoader;
LocalContentWebViewClient(WebViewAssetLoader assetLoader) {
mAssetLoader = assetLoader;
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
WebResourceRequest request) {
return mAssetLoader.shouldInterceptRequest(request.getUrl());
}
@Override
@SuppressWarnings("deprecation") // To support API < 21.
public WebResourceResponse shouldInterceptRequest(WebView view,
String url) {
return mAssetLoader.shouldInterceptRequest(Uri.parse(url));
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... into-xcode
Мобильная версия