我正在尝试更改用作 Cordova webview 的 Crosswalk 用户代理。我目前正在使用插件 cordova-plugin-crosswalk-webview。
我能够使用以下代码使用 vanilla Cordova 完成用户代理的自定义:
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends CordovaActivity
{
public WebSettings settings;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
settings = ((WebView) super.appView.getEngine().getView()).getSettings();
String defaultUA = settings.getUserAgentString();
String customUA = defaultUA+" OreeganoC1";
settings.setUserAgentString(customUA);
loadUrl(launchUrl);
}
}
但是,当我使用 Crosswalk 插件运行应用程序时,它会因为这段代码而崩溃。没有人行横道,一切都能完美运行。 我正在使用 Cordova 5.2.0 和 Crosswalk 13。
有什么提示吗?
最佳答案
我不确定这是否是首选方法,但这是我所做的(使用 Crosswalk 14+):
我在 config.xml 中添加了自定义首选项:
<preference name="xwalkUserAgent" value="Custom UA" />
在
Project/platforms/android/src/org/crosswalk/engine/XWalkWebViewEngine.java
,我在类中添加了以下代码:public static final String PREF_USER_AGENT = "xwalkUserAgent"; protected CordovaPreferences preferences;
在构造函数中,我存储了首选项:
public XWalkWebViewEngine(Context context, CordovaPreferences preferences) { this.preferences = preferences; ... }
最后,在 initWebViewSettings() 方法中,我设置了用户代理:
private void initWebViewSettings() { webView.setVerticalScrollBarEnabled(false); String xwalkUserAgent = preferences.getString(PREF_USER_AGENT, ""); webView.setUserAgentString(xwalkUserAgent); }
现在每当我需要更改用户代理时,我都可以从 config.xml 中进行。
关于java - 将 Crosswalk 13+ 的用户代理更改为 Cordova 中的 webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32199128/