Чи може хтось вказати мені в правильному напрямку щодо того, як відкрити веб-браузер за замовчуванням і встановити сторінку на "www.example.com" дякую
Чи може хтось вказати мені в правильному напрямку щодо того, як відкрити веб-браузер за замовчуванням і встановити сторінку на "www.example.com" дякую
Відповіді:
java.awt.Desktop
це клас, який ви шукаєте.
import java.awt.Desktop;
import java.net.URI;
// ...
if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
Desktop.getDesktop().browse(new URI("http://www.example.com"));
}
Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)
замість цього використовуйте чек.
Ось мій код. Він відкриє заданий URL в браузері за замовчуванням (кросплатформенне рішення).
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class Browser {
public static void main(String[] args) {
String url = "http://www.google.com";
if(Desktop.isDesktopSupported()){
Desktop desktop = Desktop.getDesktop();
try {
desktop.browse(new URI(url));
} catch (IOException | URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec("xdg-open " + url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Для мене рішення з Desktop.isDesktopSupported()
не працює ( Windows 7 і ubuntu ). Спробуйте скористатися цим, щоб відкрити браузер із коду Java:
Windows:
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow.com";
rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
Мак
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow.com";
rt.exec("open " + url);
Linux:
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow.com";
String[] browsers = { "epiphany", "firefox", "mozilla", "konqueror",
"netscape", "opera", "links", "lynx" };
StringBuffer cmd = new StringBuffer();
for (int i = 0; i < browsers.length; i++)
if(i == 0)
cmd.append(String.format( "%s \"%s\"", browsers[i], url));
else
cmd.append(String.format(" || %s \"%s\"", browsers[i], url));
// If the first didn't work, try the next browser and so on
rt.exec(new String[] { "sh", "-c", cmd.toString() });
Якщо ви хочете мати багатоплатформенний додаток, вам потрібно додати перевірку операційної системи (наприклад):
String os = System.getProperty("os.name").toLowerCase();
Windows:
os.indexOf("win") >= 0
Мак:
os.indexOf("mac") >= 0
Linux:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
xdg-open
в цьому випадку набагато краще. Тому рішення може бути таким же простим, як і macOS.
Ви також можете використовувати Runtime для створення кросплатформенного рішення:
import java.awt.Desktop;
import java.net.URI;
public class App {
public static void main(String[] args) throws Exception {
String url = "http://stackoverflow.com";
if (Desktop.isDesktopSupported()) {
// Windows
Desktop.getDesktop().browse(new URI(url));
} else {
// Ubuntu
Runtime runtime = Runtime.getRuntime();
runtime.exec("/usr/bin/firefox -new-window " + url);
}
}
}
Як зазначається у відповіді, наданій Тімом Купером, java.awt.Desktop
він надав цю можливість ще з версії Java 6 (1.6), але із наступним застереженням:
Для платформ, які не підтримують і не надають java.awt.Desktop
, перегляньте проект BrowserLauncher2 . Він отриманий та дещо оновлений з класу BrowserLauncher, спочатку написаного та опублікованого Еріком Альбертом. Я успішно використовував оригінальний клас BrowserLauncher у багатоплатформенному додатку Java, який працював локально з інтерфейсом веб-браузера на початку 2000-х.
Зауважте, що BrowserLauncher2 ліцензований згідно з ліцензією GNU Lesser General Public . Якщо ця ліцензія неприйнятна, шукайте копію оригіналу BrowserLauncher, яка має дуже ліберальну ліцензію:
Цей код є авторським правом Еріка Альберта 1999-2001 рр. (Ejalbert@cs.stanford.edu) і може бути перерозподілений або змінений у будь-якій формі без обмежень до тих пір, поки частина цього коментаря з цього пункту до кінця коментаря не буде видалена. . Автор просить його повідомити про будь-яку програму, аплет чи інший бінарний код, який використовує цей код, але це більше з цікавості, ніж усе, і не потрібно. Це програмне забезпечення не включає гарантії. Автор не несе відповідальності за будь-яку втрату даних або функціональності або будь-які несприятливі або несподівані наслідки використання цього програмного забезпечення.
Кредити: Стівен Спенсер, журнал JavaWorld (Java Tip 66) Завдяки також Рона Б. Йе, Еріку Шапіро, Бен Енгбер, Полу Тейтлебауму, Андреа Кантаторе, Ларрі Баровському, Тревору Бедзеку, Френку Мідріху та Рона Рабакукку
Інші проекти, окрім BrowserLauncher2, можливо, також оновили оригінальний BrowserLauncher для врахування змін у браузері та налаштуваннях системи безпеки за замовчуванням з 2001 року.
Його дуже просто, просто напишіть код нижче:
String s = "http://www.google.com";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
або якщо ви не хочете завантажувати URL-адресу, просто запишіть ім'я свого браузера в рядкові значення, наприклад,
String s = "chrome";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
він відкриє браузер автоматично з порожньою URL-адресою після виконання програми
у Windows викликають "cmd / k start http://www.example.com " Infact, ви завжди можете викликати "програми за замовчуванням", використовуючи команду start. Для запуску abc.mp3 викличе програвач mp3 за замовчуванням та завантажить потрібний mp3-файл.
Сподіваюся, ви не заперечуєте, але я згорнув всі корисні речі зверху і придумав повний клас, готовий до тестування ...
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class MultiBrowPop {
public static void main(String[] args) {
OUT("\nWelcome to Multi Brow Pop.\nThis aims to popup a browsers in multiple operating systems.\nGood luck!\n");
String url = "http://www.birdfolk.co.uk/cricmob";
OUT("We're going to this page: "+ url);
String myOS = System.getProperty("os.name").toLowerCase();
OUT("(Your operating system is: "+ myOS +")\n");
try {
if(Desktop.isDesktopSupported()) { // Probably Windows
OUT(" -- Going with Desktop.browse ...");
Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI(url));
} else { // Definitely Non-windows
Runtime runtime = Runtime.getRuntime();
if(myOS.contains("mac")) { // Apples
OUT(" -- Going on Apple with 'open'...");
runtime.exec("open " + url);
}
else if(myOS.contains("nix") || myOS.contains("nux")) { // Linux flavours
OUT(" -- Going on Linux with 'xdg-open'...");
runtime.exec("xdg-open " + url);
}
else
OUT("I was unable/unwilling to launch a browser in your OS :( #SadFace");
}
OUT("\nThings have finished.\nI hope you're OK.");
}
catch(IOException | URISyntaxException eek) {
OUT("**Stuff wrongly: "+ eek.getMessage());
}
}
private static void OUT(String str) {
System.out.println(str);
}
}
Відповідь Браєша Кумара вище переробляю в Clojure наступним чином:
(defn open-browser
"Open a new browser (window or tab) viewing the document at this `uri`."
[uri]
(if (java.awt.Desktop/isDesktopSupported)
(let [desktop (java.awt.Desktop/getDesktop)]
(.browse desktop (java.net.URI. uri)))
(let [rt (java.lang.Runtime/getRuntime)]
(.exec rt (str "xdg-open " uri)))))
якщо це комусь корисно.