কিভাবে জাভা ব্যবহার করে ডিফল্ট ওয়েব ব্রাউজার খুলবেন


107

কেউ কীভাবে আমাকে ডিফল্ট ওয়েব ব্রাউজারটি খুলতে এবং পৃষ্ঠাকে "www.example.com" সেট করতে হয় তার জন্য সঠিক দিক নির্দেশ করতে পারে thanks


2
ডুপ্লিকেট প্রশ্ন: stackoverflow.com/q/10967451/873282
koppor

উত্তর:


161

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"));
}

3
এটি কি ক্রস প্ল্যাটফর্ম সমাধান বা কেবল উইন্ডোজ? এই থ্রেডের অন্যান্য উত্তরগুলি লিনাক্সের জন্য রানটাইম ক্লাস ব্যবহার করার পরামর্শ দেয়
isapir

@ লিগল, এটি উইন্ডোজ and এবং লিনাক্স (উবুন্টু ১০.১০) উভয় ক্ষেত্রেই আমার পক্ষে কাজ করেছে। এটি সর্বদা ডিফল্ট সিস্টেম ব্রাউজারটি খুলবে (উইন 7-এ এবং উবুন্টুতে ফায়ারফক্সে, আমার ক্ষেত্রে)
জোয়াকিম অলিভিরা

1
এটি আমার পক্ষে কাজ করে না। ইসডেস্কটপসপোর্টেড পদ্ধতিটি সর্বদা আমার উইন্ডোজ মেশিনে মিথ্যা দেয়। কি ব্যাপার?
krzysiek.ste

2
যদি ব্যবহারকারী "এইচটিএমএল" এর মতো প্রসারিত ফাইলটিতে কাস্টম "ওপেন" ক্রিয়া বরাদ্দ করে থাকে তবে এটি ব্রাউজারটি খুলবে না, তবে ব্যবহারকারী এটির সাথে লিঙ্ক করেছেন .... এটি কোনও সমাধান নয়!
থেইসেন্ট 7'15

4
@ krzysiek.ste Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)পরিবর্তে চেকটি ব্যবহার করুন।
থিবস্টারস

35

এখানে আমার কোড। এটি ডিফল্ট ব্রাউজারে প্রদত্ত ইউআরএল খুলবে (ক্রস প্ল্যাটফর্ম সমাধান)।

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();
            }
        }
    }
}

2
"'এক্সডিজি-ওপেন' কোনও অভ্যন্তরীণ বা বাহ্যিক কমান্ড, অপারেবল প্রোগ্রাম বা ব্যাচ ফাইল হিসাবে স্বীকৃত নয়।"
xehpuk

10
একটি ইউনিক্স আদেশ দেয়। উইন্ডোতে আপনি এটি কী চালাচ্ছেন
ওলু স্মিথ

7
'ডেস্কটপ.আইসডেস্কটপসপোর্টার্ড ()' এর সাথে 'ডেস্কটপ.সেটডেস্কটপ () .সসপোর্টড (অ্যাকশন.ব্রোএসই)' পরীক্ষা করে দেখুন।
কাঁচু

35

আমার জন্য সমাধান Desktop.isDesktopSupported()কাজ করে না ( উইন্ডোজ 7 এবং উবুন্টু )। জাভা কোড থেকে ব্রাউজার খুলতে দয়া করে এটি চেষ্টা করুন:

উইন্ডোজ:

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);

লিনাক্স:

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();

উইন্ডোজ:

os.indexOf("win") >= 0

ম্যাক:

os.indexOf("mac") >= 0

লিনাক্স:

os.indexOf("nix") >=0 || os.indexOf("nux") >=0

1
এখানে স্ট্রিংবাফার ব্যবহার করছেন কেন?
স্টিফান

2
লিনাক্স সলিউশনে সমস্ত ব্রাউজারের তালিকা করা খুব খারাপ। যদি কেউ তালিকা থেকে অন্য কোনও ব্রাউজার ব্যবহার করে তবে কী হবে? (তালিকায় কোনও ক্রোম বা ক্রোমিয়াম নেই) বা এপিফ্যানি এবং ফায়ারফক্স উভয়ই রয়েছে, তবে পরবর্তীটি ব্যবহার পছন্দ করেন? xdg-openএই ক্ষেত্রে ব্যবহার করা আরও ভাল। সমাধান তাই ম্যাকোস এক হিসাবে সহজ হতে পারে।
m4tx

উইন্ডোজের জন্য অন্য বিকল্পটি হ'ল rt.exec ("start \" "+ url +" \ ");
ইভান নিকিটিন

6

ক্রস প্ল্যাটফর্ম সমাধান তৈরি করতে আপনি রানটাইম ব্যবহার করতে পারেন :

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);
        }
    }
}

5

টিম কুপার প্রদত্ত উত্তরে যেমন উল্লেখ করা হয়েছে, java.awt.Desktopজাভা সংস্করণ ((১. since) থেকে এই সক্ষমতা সরবরাহ করেছে তবে নিম্নলিখিত সতর্কতার সাথে:

ডেস্কটপ এপিআই উপলব্ধ কিনা তা নির্ধারণ করতে আইসডেস্কটপ সমর্থনযোগ্য () পদ্ধতিটি ব্যবহার করুন। সোলারিস অপারেটিং সিস্টেম এবং লিনাক্স প্ল্যাটফর্মে, এই এপিআই জিনোম লাইব্রেরিগুলির উপর নির্ভরশীল। যদি এই লাইব্রেরিগুলি অনুপলব্ধ থাকে তবে এই পদ্ধতিটি মিথ্যা হিসাবে ফিরে আসবে।

প্ল্যাটফর্মগুলি যা সমর্থন করে না বা সরবরাহ java.awt.Desktopকরে না তাদের জন্য ব্রাউজারল্যাঞ্চার 2 প্রকল্পটি দেখুন। এটি মূলত এরিক অ্যালবার্ট দ্বারা রচিত এবং প্রকাশিত ব্রাউজারলঞ্চার শ্রেণি থেকে প্রাপ্ত এবং কিছুটা আপডেট হয়েছে । আমি একাধিক প্ল্যাটফর্ম জাভা অ্যাপ্লিকেশনটিতে সফলভাবে ব্রাউজারলঞ্চার ক্লাসটি সফলভাবে ব্যবহার করেছি যা 2000 এর দশকের গোড়ার দিকে স্থানীয়ভাবে একটি ওয়েব ব্রাউজার ইন্টারফেসের সাথে চলেছিল।

নোট করুন যে ব্রাউজারল্যাঞ্চার 2 জিএনইউ লেজার জেনারেল পাবলিক লাইসেন্সের আওতায় লাইসেন্সযুক্ত । যদি সেই লাইসেন্সটি গ্রহণযোগ্য না হয় তবে মূল ব্রাউজারল্যাঞ্চারের অনুলিপিটির সন্ধান করুন যার একটি খুব উদার লাইসেন্স রয়েছে:

এই কোডটি এরিক অ্যালবার্ট (ejalbert@cs.stanford.edu) দ্বারা কপিরাইট 1999-2001 এবং মন্তব্যটির শেষ পর্যন্ত এই অনুচ্ছেদে এই মন্তব্যটির অংশ অপসারণ না করা অবধি কোনও বিধিনিষেধ ছাড়াই পুনরায় বিতরণ বা সংশোধন করা যেতে পারে as । লেখক অনুরোধ করেছেন যে এই কোডটি ব্যবহার করে এমন কোনও অ্যাপ্লিকেশন, অ্যাপলেট বা অন্যান্য বাইনারি সম্পর্কে তাকে অবহিত করা উচিত তবে এটি কোনও কিছুর চেয়ে কৌতূহলের বাইরে এবং এটির প্রয়োজন নেই। এই সফ্টওয়্যারটিতে কোনও ওয়্যারেন্টি নেই। ডেটা বা কার্যকারিতা বা এই সফ্টওয়্যারটি ব্যবহারের কোনও বিরূপ বা অপ্রত্যাশিত প্রভাবের জন্য লেখক দায়বদ্ধ নয়।

ক্রেডিট: স্টিভেন স্পেন্সার, জাভা ওয়ার্ল্ড ম্যাগাজিন (জাভা টিপ) 66) রন বি ইয়ে, এরিক শাপিরো, বেন অ্যাংবার, পল টাইটেলবাউম, আন্দ্রে ক্যানাতাতোর, ল্যারি বারোস্কি, ট্রেভর বেদজেক, ফ্রাঙ্ক মিড্রিচ এবং রন রাবাকুককে ধন্যবাদ

ব্রাউজারল্যাঞ্চার 2 ব্যতীত অন্যান্য প্রকল্পগুলিও 2001 সাল থেকে ব্রাউজার এবং ডিফল্ট সিস্টেম সুরক্ষা সেটিংসে পরিবর্তনগুলির জন্য অ্যাকাউন্টে আসল ব্রাউজারলঞ্চার আপডেট করতে পারে।


ব্রাউজারলঞ্চার 2 এর রক্ষণাবেক্ষণের কাঁটাটি পাওয়া যাবে github.com/rajing/browserlauncher2
koppor

1
যারা ম্যাকসে ব্রাউজারল্যাঞ্চার 2 ব্যবহার করতে চাইছেন তাদের পক্ষে, মূল ব্রাউজারল্যাঞ্চার 2 বা @ কোপ্পার দ্বারা উল্লিখিত কাঁটাচামচ ম্যাক ওএস এক্স সিয়েরার সাথে কাজ করে না। উভয়ই একটি "mrj.version" সিস্টেম সম্পত্তির অস্তিত্ব ধরে নিয়েছেন যা সম্ভবত আপাতত বিদ্যমান নেই। লঞ্চারটি তৈরি হওয়ার পরে কোডটি একটি নালপয়েন্টার এক্সসেপশন নিক্ষেপ করবে। অতিরিক্ত তথ্যের জন্য Sourceforge.net/p/browserlaunch2/bugs/14 দেখুন ।
কোরেন

4

এটি খুব সহজ শুধু কোড নীচে লিখুন:

String s = "http://www.google.com";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));

অথবা আপনি যদি ইউআরএল লোড করতে না চান তবে আপনার ব্রাউজারের নামটি স্ট্রিং মানগুলিতে লিখুন যেমন,

String s = "chrome";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));

এটি কোনও প্রোগ্রাম চালানোর পরে খালি URL সহ স্বয়ংক্রিয়ভাবে ব্রাউজারটি খুলবে open


1

উইন্ডোতে "সেন্টিমিডি / কে শুরু করুন " http://www.example.com "প্রকৃতপক্ষে আপনি সর্বদা স্টার্ট কমান্ড ব্যবহার করে" ডিফল্ট "প্রোগ্রাম শুরু করতে পারেন। প্রারম্ভিক শুরুর জন্য abc.mp3 ডিফল্ট এমপি 3 প্লেয়ারকে অনুরোধ করবে এবং অনুরোধ করা এমপি 3 ফাইলটি লোড করবে।


আপনি ইতিমধ্যে বহনযোগ্য সংস্করণ পোস্ট করেছেন। আমি কেবলমাত্র আরেকটি সমাধান প্রস্তাব করেছি যা কেবলমাত্র ইউআরএলগুলি আপনাকে ডিফল্ট প্রোগ্রামগুলিতে খোলার প্রয়োজন না হলে এটি মনে রাখা যেতে পারে।
d-লাইভ

1

আশা করি আপনার কোনও আপত্তি নেই তবে আমি উপরের থেকে সমস্ত সহায়ক জিনিস একসাথে ঠেকেছি এবং পরীক্ষার জন্য প্রস্তুত একটি সম্পূর্ণ ক্লাস নিয়ে এসেছি ...

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);
    }
}

1

আমি ব্রজেশ কুমারের উত্তর উপরের ক্লোজারে পুনরায় পাঠ করি:

(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)))))

যদি এটি কারও কাজে লাগে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.