【发布时间】:2015-11-22 21:17:31
【问题描述】:
我知道这个问题已经在这个论坛上以不同的形式提出过,但到目前为止,没有一个答案对我有帮助——无论是接受的还是我发现的其他答案。
我正在开发一个使用原生 android、HTML 和 Adboe 的 Flex SDK 的混合应用程序(没有任何框架,如 PhoneGap 等,使用 Android 自己的 WebView 的简单代码)。
这是我面临的问题:
当应用程序启动时,首先触发 flex sdk 的 Activity"AppEntry",它是一个空白 Activity,它只是为 flex SDK 设置上下文和初始设置。接下来,启动原生 MainActivity,它使用 WebView 加载 HTML 项目。 在 Android 4.0.x (ICS) 上,即使 URL 已加载(为相关 URL 成功调用 onPageFinished()),webview 也显示为空白(白色)。这发生在第一次安装和启动应用程序时,在停止应用程序(通过从最近的应用程序栏中删除它)后,页面按预期加载。像这样反复重新启动有时会重现问题,但频率不可预测。
一些需要考虑的事情:
由于 flex sdk 的限制,这些 HTML 文件不能直接存储在“/assets”文件夹中,而是包含在 assets 文件夹中的目录结构中。
问题仅出现在 Ice Cream Sandwich (known issue I guess)!
我已经尝试过的东西:
- 硬件加速已关闭(开启/关闭无关紧要,两者都经过测试)
2.
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setSupportMultipleWindows(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setLoadsImagesAutomatically(true);
settings.setDomStorageEnabled(true);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
settings.setSaveFormData(true);
settings.setAllowFileAccess(true);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
settings.setAllowContentAccess(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
}
}
settings.setAppCacheEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setLoadsImagesAutomatically(true);
boolean enableZoom = true;
settings.setBuiltInZoomControls(enableZoom);
settings.setSupportZoom(enableZoom);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR_MR1) {
initializePluginAPI(webView);
}
settings.setDatabaseEnabled(true);
问题是在 Play 商店中杀死我的应用的评论 cmets。任何帮助或见解将不胜感激。
【问题讨论】:
-
我不确定如何将 Android 与 AIR 和 Flex SDK 混合使用,但您可以尝试使用 AIR html 控件,然后嵌入 HTML 文件,然后从中动态创建一个字符串并设置如果使用 HTML 加载器实例,则使用 webview 的 htmlText 或 loadString。
-
它实际上不仅仅是一个 HTML 页面,而是一个完整的 HTML 应用程序。它对除 Android 4.0.x 以外的版本按预期工作。因此,我正在寻找 4.0 (ICS) 的修复程序。
-
尝试在 500 毫秒(或类似的时间)后使用
postDelayed调用加载 webview。这看起来像一个加载/同步问题,稍后加载网络内容可能会解决它。 -
settings.setPluginsEnabled(true);? -
我想,您或许可以尝试一下自定义标签:android-developers.blogspot.com/2015/09/…,希望对您更好。
标签: android apache-flex webview android-webview android-4.0-ice-cream-sandwich