Java Chromium嵌入式框架(JCEF)对Chromium命令行的使用



我试图将--ignore-gpu-blacklist参数设置为JCEF,但找不到方法。我应该使用的方法是:CefApp::onBeforeCommandLineProcessing(String, CefCommandLine).,但我找不到如何做到这一点的示例或良好的说明。CefCommandLine是一个接口,我找不出任何实现。

我发现的所有指令都与CEF有关,而不是JCEF,显然有不同的类。有人能发布一个如何将Chromium参数从String str = "--ignore-gpu-blacklist";传递到CEF的小例子吗?

您有几种将参数从JCEF传递到CEF/chrome的可能性。

1) 最简单的方法:

public static void main(String [] args) {
    [...]
    ArrayList<String> mySwitches = new ArrayList<>();
    mySwitches.add("--persist-session-cookies=true");
    CefApp app = CefApp.getInstance(mySwitches.toArray(new String[mySwitches.size()]));
    CefClient client = app.createClient();
    CefBrowser browser = client.createBrowser("http://www.google.com", false, false);
    [...]
}

只需创建一个字符串数组,其中包含要传递的所有开关,并在该静态方法的第一次调用时将该数组分配给CefApp.getInstance(..)。

如果只有一些简单的设置,那么也可以使用类CefSettings,并将对象传递给getInstance()。除此之外,您还可以将两者结合起来(有四种不同的"getInstance()"方法)。

2) 创建您自己的CefAppHandler实现来做一些高级的事情。

(a) 创建自己的AppHandler:

public class MyAppHandler extends CefAppHandlerAdapter {
    public MyAppHandler(String [] args) {
        super(args);
    }
    @Override
    public void onBeforeCommandLineProcessing(String process_type, CefCommandLine command_line) {
        super.onBeforeCommandLineProcessing(process_type, command_line);
        if (process_type.isEmpty()) {
            command_line.appendSwitchWithValue("persist-session-cookies","true");
        }
    }
}

(b) 将AppHandler传递给CefApp

public static void main(String [] args) {
    [...]
    MyAppHandler appHandler = new MyAppHandler(args);
    CefApp.addAppHandler(appHandler);
    CefApp app = CefApp.getInstance(args);
    CefClient client = app.createClient();
    CefBrowser browser = client.createBrowser("http://www.google.com", false, false);
    [...]
}

使用这种方法,您将做两件事:

(a) 将程序参数(args)传递给CefApp和

(b) 您可以利用有机会在onBeforeCommandLineProcessing中操作解析参数的完整过程。

如果你打开JCEF详细主框架的示例代码,你会发现这种方法实现在:-tests.detailed.MainFrame.MainFrame(boolean,String,String[])

因此,实现onBeforeCommandLineProcessing等同于CEF,而是用Java而不是C/C++编写的。

谨致问候,Kai

相关内容

  • 没有找到相关文章

最新更新