gpt4 book ai didi

Android WebView 没有在第一次页面完成时从本地存储读取数据?

转载 作者:行者123 更新时间:2023-12-05 00:17:46 28 4
gpt4 key购买 nike

我正在尝试使用 android 中的 WebView 从 javascript 读取本地存储数据。
这是我的代码

 @Override
public void onPageFinished(WebView view, String url) {
getLocalStorageAndSaveOnAndroidPref("androidDeliveryAppStickyNotificationTitle", view);
}


public static void getLocalStorageAndSaveOnAndroidPref(String key, WebView view) {
String JAVASCRIPT_LOCAL_STORAGE_LOOKUP = "javascript:window";
Log.d(TAG, "getLocalStorageAndSaveOnAndroidPref: function called");
view.evaluateJavascript(JAVASCRIPT_LOCAL_STORAGE_LOOKUP.concat(".localStorage.getItem('" + key + "')"), value -> {
Log.d(TAG, "getLocalStorageAndSaveOnAndroidPref: "+value);
SharePref.setDataPref(key, value);
});
}
但这在第一次加载时给了我 null 。
我想实现在页面第一次完成时应该加载本地存储数据。
任何想法如何实现这一点。

最佳答案

我有一个更好的解决方案,它将在第一次打开 WebView 时起作用。
你只需要使用自定义回调。像这样

public interface DataSavedCallback {
void onDataSaved();
}
  public static void getLocalStorageAndSaveOnAndroidPref(String[] keys,
WebView view,dataSavedCallback savedCallback) {

String JAVASCRIPT_LOCAL_STORAGE_LOOKUP = "javascript:window";
view.evaluateJavascript(JAVASCRIPT_LOCAL_STORAGE_LOOKUP.concat(".localStorage.getItem('" + keys[i] + "')"), new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.d(TAG, "getLocalStorageAndSaveOnAndroidPref: " + value);
}
});

}
然后使用这个函数从webview本地存储中获取key的值
public static void getLocalStorageAndSaveOnAndroidPref(String[] keys,
WebView view,dataSavedCallback savedCallback) {

String JAVASCRIPT_LOCAL_STORAGE_LOOKUP = "javascript:window";
view.evaluateJavascript(JAVASCRIPT_LOCAL_STORAGE_LOOKUP.concat(".localStorage.getItem('" + keys[i] + "')"), new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.d(TAG, "getLocalStorageAndSaveOnAndroidPref: " + value);
}
});

}
您可以使用 webview 在任何地方调用上述函数
myWebView.post(() -> {
String[] keys = {"androidDeliveryAppStickyNotificationTitle","androidDeliveryAppStickyNotificationSubtitle","androidAppNewSoundAlertTitle"};
getLocalStorageAndSaveOnAndroidPref(keys, myWebView, new dataSavedCallback() {
@Override
public void onDataSaved() {
//do whatever you want
}
});

});

关于Android WebView 没有在第一次页面完成时从本地存储读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73140106/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com