【问题标题】:Change the user agent of Crosswalk 13+ as webview in Cordova在 Cordova 中将 Crosswalk 13+ 的用户代理更改为 webview
【发布时间】:2015-08-25 08:29:39
【问题描述】:

我正在尝试更改 Crosswalk 的用户代理,用作 Cordova 的 web 视图。我目前正在使用插件 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。

有什么提示吗?

【问题讨论】:

  • 你为什么要更换用户代理?
  • 该应用程序正在从远程网站获取一些页面,该网站专门针对该应用程序更改其 css 和 js,以提供更好的用户体验。因此,我需要确定请求何时来自应用程序,并检查 UA 中的自定义字符串是我认为最简单的方法。
  • 首先,如果您使用 Crosswalk,我认为您应该转换为 XWalkView 而不是标准的 android.webkit.WebView。如果你得到 XWalkView,你可以使用直接方法setUserAgent 来设置 User-Agent。像这样的东西:walkView.setUserAgentString("NewAgent");
  • 如何获取 MainActivity 中的 XWalkView,以便更改用户代理?

标签: java android cordova cordova-plugins crosswalk-runtime


【解决方案1】:

我不确定这是否是首选方法,但这是我所做的(使用 Crosswalk 14+):

  1. 我在 config.xml 中添加了一个自定义首选项:

    <preference name="xwalkUserAgent" value="Custom UA" />

  2. 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 中完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多