【发布时间】:2017-08-09 05:23:15
【问题描述】:
我有一个非常基本的 webview 应用程序代码:
package com.budget.noname.budget;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String data = "<p id='v'></p><script>x=3; y=5; m=0; document.getElementById('v').innerHTML = m;</script>";
WebView simpleWebView=(WebView) findViewById(R.id.simpleWebView);
WebSettings webSettings = simpleWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowContentAccess(true);
webSettings.setAllowFileAccess(true);
webSettings.setDomStorageEnabled(true);
//simpleWebView.loadUrl("file:///android_asset/index.htm");
simpleWebView.loadDataWithBaseURL(null, data, "text/html", "UTF-8", "");
}
}
如果我将我的 webapp (index.htm) 放在 assets 文件夹中并加载它,它可以完美运行,但我的代码可供任何关心提取 .apk 的人使用。
我试图将代码粘贴到字符串上并使用 loadDataWithBaseURL 加载它。它几乎同样有效。问题是:如果我尝试访问 localStorage,代码就会中断。这是为什么呢?
例子:
String data = "<script>x=localStorage.getItem('name');</script>";
没有用!!!虽然,正如我所说,如果我从资产文件夹中加载相同的代码,它就可以工作。
【问题讨论】:
-
您遇到了哪个错误。您是否具有清单中声明的内部存储的读/写权限?
-
我没有得到任何错误,因为我不知道如何调试 webapp。就是这么简单:我编写的任何 html/javascript 代码都可以工作,除了 localStorage 标签。
-
@Baruch,标签是自动建议的
-
@Baruch,我不确定你为什么认为这个问题与 JavaScript 无关。如果我正确理解问题,则错误发生在 Android 应用程序内 WebView 内的 JavaScript 执行期间。
-
@VictorRibeiro,你看过Debugging Web Apps吗?另见How can I see Javascript errors in WebView in an Android app?
标签: javascript java android android-webview local-storage