Открытие браузером по умолчанию

Открытие браузером по умолчанию в Java можно сделать с помощью следующего класса BrowserControl. Чтобы иметь возможность запускать его с различными браузерами в Linux, вам нужно просто менять UNIX_PATH и UNIX_FLAG параметры. (Заметим, что вам не нужно менять anyting для Windows)


import java.io.IOException;



public class BrowserControl {

    

    // Used to identify the windows platform.

    private static final String WIN_ID = "Windows";

    // The default system browser under windows.

    private static final String WIN_PATH = "rundll32";

    // The flag to display a url.

    private static final String WIN_FLAG = "url.dll,FileProtocolHandler";

    // The default browser under unix.

    private static final String UNIX_PATH = "netscape";

    // The flag to display a url.

    private static final String UNIX_FLAG = "-remote openURL";

    

    /**

     * Display a file in the system browser.  If you want to display a

     * file, you must include the absolute path name.

     *

     @param url the file's url (the url must start with either "http://"

     * or

     * "file://").

     */

    public static void displayURL(String url) {

        boolean windows = isWindowsPlatform();

        String cmd = null;

        try {

            if (windows) {

                // cmd = 'rundll32 url.dll,FileProtocolHandler http://...'

                cmd = WIN_PATH + " " + WIN_FLAG + " " + url;

                Process p = Runtime.getRuntime().exec(cmd);

            else {

                // Under Unix, Netscape has to be running for the "-remote"

                // command to work.  So, we try sending the command and

                // check for an exit value.  If the exit command is 0,

                // it worked, otherwise we need to start the browser.

                // cmd = 'netscape -remote openURL(http://www.javist.ru)'

                cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")";

                Process p = Runtime.getRuntime().exec(cmd);

                try {

                    // wait for exit code -- if it's 0, command worked,

                    // otherwise we need to start the browser up.

                    int exitCode = p.waitFor();

                    if (exitCode != 0) {

                        // Command failed, start up the browser

                        // cmd = 'netscape http://www.javist.ru'

                        cmd = UNIX_PATH + " "  + url;

                        p = Runtime.getRuntime().exec(cmd);

                    }

                catch(InterruptedException x) {

                    System.err.println("Error bringing up browser, cmd='" +

                            cmd + "'");

                    System.err.println("Caught: " + x);

                }

            }

        catch(IOException x) {

            // couldn't exec browser

            System.err.println("Could not invoke browser, command=" + cmd);

            System.err.println("Caught: " + x);

        }

    }

    /**

     * Try to determine whether this application is running under Windows

     * or some other platform by examing the "os.name" property.

     *

     @return true if this application is running under a Windows OS

     */

    public static boolean isWindowsPlatform() {

        String os = System.getProperty("os.name");

        if os != null && os.startsWith(WIN_ID))

            return true;

        else

            return false;

        

    }

}

Вы можете использовать этот класс с различными видами документов:

  • BrowserControl.displayURL(«http://www.javist.ru»);
  • BrowserControl.displayURL(«file://c:\\docs\\index.html»);
  • BrowserContorl.displayURL(«file:///user/joe/index.html»);

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>