Dapatkah seseorang mengarahkan saya ke arah yang benar tentang cara membuka browser web default dan menyetel halaman ke "www.example.com", terima kasih
Dapatkah seseorang mengarahkan saya ke arah yang benar tentang cara membuka browser web default dan menyetel halaman ke "www.example.com", terima kasih
Jawaban:
java.awt.Desktop adalah kelas yang Anda cari.
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)cek sebagai gantinya.
Ini kode saya. Ini akan membuka url yang diberikan di browser default (solusi lintas platform).
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();
}
}
}
}
Bagi saya solusi dengan Desktop.isDesktopSupported()tidak berfungsi ( windows 7 dan ubuntu ). Silakan coba ini untuk membuka browser dari kode java:
Windows:
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow.com";
rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
Mac
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() });
Jika Anda ingin memiliki aplikasi multiplatform, Anda perlu menambahkan pemeriksaan sistem operasi (misalnya):
String os = System.getProperty("os.name").toLowerCase();
Windows:
os.indexOf("win") >= 0
Mac:
os.indexOf("mac") >= 0
Linux:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
xdg-openjauh lebih baik dalam hal ini. Karena itu, solusinya bisa sesederhana macOS.
Anda juga dapat menggunakan Runtime untuk membuat solusi lintas platform:
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);
}
}
}
Sebagaimana dicatat dalam jawaban yang diberikan oleh Tim Cooper, java.awt.Desktoptelah menyediakan kemampuan ini sejak Java versi 6 (1.6), tetapi dengan peringatan berikut:
Untuk platform yang tidak mendukung atau menyediakan java.awt.Desktop, lihat proyek BrowserLauncher2 . Ini diturunkan dan agak diperbarui dari kelas BrowserLauncher yang aslinya ditulis dan dirilis oleh Eric Albert. Saya berhasil menggunakan kelas BrowserLauncher asli dalam aplikasi Java multi-platform yang berjalan secara lokal dengan antarmuka browser web pada awal tahun 2000-an.
Perhatikan bahwa BrowserLauncher2 dilisensikan di bawah GNU Lesser General Public License . Jika lisensi itu tidak dapat diterima, cari salinan BrowserLauncher asli yang memiliki lisensi sangat liberal:
Kode ini adalah Hak Cipta 1999-2001 oleh Eric Albert (ejalbert@cs.stanford.edu) dan dapat didistribusikan ulang atau diubah dalam bentuk apapun tanpa batasan selama bagian dari komentar ini dari paragraf ini hingga akhir komentar tidak dihapus . Penulis meminta agar dia diberi tahu tentang aplikasi, applet, atau biner lain yang menggunakan kode ini, tetapi itu lebih karena rasa ingin tahu daripada apa pun dan tidak diperlukan. Perangkat lunak ini tidak memiliki jaminan. Penulis tidak bertanggung jawab atas hilangnya data atau fungsionalitas atau efek buruk atau tidak terduga dari penggunaan perangkat lunak ini.
Penghargaan: Steven Spencer, majalah JavaWorld (Java Tip 66) Terima kasih juga kepada Ron B.Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum, Andrea Cantatore, Larry Barowski, Trevor Bedzek, Frank Miedrich, dan Ron Rabakukk
Proyek selain BrowserLauncher2 mungkin juga telah memperbarui BrowserLauncher asli untuk memperhitungkan perubahan di browser dan pengaturan keamanan sistem default sejak 2001.
Sangat sederhana cukup tulis kode di bawah ini:
String s = "http://www.google.com";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
atau jika Anda tidak ingin memuat URL, cukup tulis nama browser Anda ke dalam nilai string seperti,
String s = "chrome";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
itu akan membuka browser secara otomatis dengan URL kosong setelah menjalankan program
Harap Anda tidak keberatan, tetapi saya mengumpulkan semua hal yang bermanfaat, dari atas, dan menghasilkan kelas lengkap yang siap untuk diuji ...
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);
}
}
di windows aktifkan "cmd / k start http://www.example.com " Infact Anda selalu dapat menjalankan program "default" menggunakan perintah start. Sebagai contoh, abc.mp3 akan memanggil pemutar mp3 default dan memuat file mp3 yang diminta.
Saya menyusun kembali jawaban Brajesh Kumar di atas menjadi Clojure sebagai berikut:
(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)))))
seandainya itu berguna bagi siapa pun.