জাভা বোতাম দিয়ে ব্রাউজারে একটি লিঙ্ক খুলবেন? [প্রতিলিপি]


103

আমি কীভাবে লাইন দিয়ে ডিফল্ট ব্রাউজারে একটি বোতাম ক্লিক করে খুলতে পারি

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        open("www.google.com"); // just what is the 'open' method?
    }
});

?


2
আপনি সম্ভবত আপনার শেষ প্রশ্নের গৃহীত উত্তরে ব্যবহৃত ক্লাসটির জন্য জাভাডোক্স দেখার চেষ্টা করেছেন ! Doc ডকস খুব সহজ, হয় সেগুলি আপনার আইডিইতে সংযুক্ত করুন বা অন-লাইন সংস্করণটি বুকমার্ক করুন।
অ্যান্ড্রু থম্পসন

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

উত্তর:


223

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

public static boolean openWebpage(URI uri) {
    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
        try {
            desktop.browse(uri);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return false;
}

public static boolean openWebpage(URL url) {
    try {
        return openWebpage(url.toURI());
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    return false;
}

এটি নেটবিনস 7.x দ্বারা নির্মিত জেআর ফাইলগুলিতে কাজ করে না বলে মনে হচ্ছে। কোডটি নেটবিয়ান থেকে চালিত হলে এটি কার্যকর হয়, তবে জেআর ফাইল হিসাবে স্থাপনের সময় নয় ... অন্তত আমার অভিজ্ঞতায়। আমি এখনও একটি সমাধান খুঁজছি।
মাউন্টেনএক্স

@ মাউন্টেনএক্স ডিবাগ করুন এবং যাচাই করুন যে ডেস্কটপ সমর্থিত এবং সুরক্ষা বাস্তবায়ন আপনাকে ডেস্কটপ ইনস্ট্যান্স অ্যাক্সেস করতে বাধা দিচ্ছে না। আপনি যদি অ্যাপলেট হিসাবে জেআর চালাচ্ছেন তবে সুরক্ষা হ'ল সম্ভাব্য অপরাধী।
এফটিহম্পসন

@ ভ্যালকান - আমি অ্যাপলেট হিসাবে জেআর চালাচ্ছি না। আমি কোনও সুরক্ষা সেটিংস সম্পর্কে সচেতন নই যা এটি কাজ করা থেকে বিরত করবে। আমি কল করে এটি "প্রায় কাজ" new ProcessBuilder("x-www-browser", uri.toString());। আপনি ভাববেন যে যদি সুরক্ষা বিধিনিষেধ থাকে তবে প্রসেসবিল্ডার কলটি কাজ করবে না। কিন্তু এটি কাজ করে। কেন desktop.browse(uri)কাজ করে না আমার কোনও ধারণা নেই তবে আমি দেখেছি এটি অনেক লোকের পক্ষে কাজ করে না। আমি অনুমান করছিলাম এটি সম্ভবত নেটবিনের সমস্যা, তবে আমি জানি না।
মাউন্টেনএক্স

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

@ থেইসেইনট গ্রেট পয়েন্ট; একটি বিকল্প openWebpageব্যবহার করে Runtime.exec(..)এবং জনপ্রিয় ব্রাউজার নামগুলির একটি পূর্বনির্ধারিত সেটগুলির মাধ্যমে পুনরাবৃত্তি করতে পারে , তাদের URL টি দিয়ে যায়। এটিতেও অস্পষ্ট ব্রাউজারগুলির ব্যবহারকারীদের পক্ষে না চলার সতর্কতা রয়েছে, তবে আমি একটি মুক্ত মুহুর্তের পরে শীঘ্রই এই উত্তরটি লিখব এবং যুক্ত করব।
এফটিম্পসন


25
try {
    Desktop.getDesktop().browse(new URL("http://www.google.com").toURI());
} catch (Exception e) {}

দ্রষ্টব্য: আপনাকে প্রয়োজনীয় আমদানি অন্তর্ভুক্ত করতে হবে java.net


5

ডেস্কটপ পরিবেশ ছাড়া একটি সমাধান পাওয়া যাবে BrowserLauncher2 । এই সমাধানটি লিনাক্সের মতো আরও সাধারণ, ডেস্কটপ সবসময় পাওয়া যায় না।

দৈর্ঘ্য উত্তরটি https://stackoverflow.com/a/21676290/873282 এ পোস্ট করা হয়েছে


3
private void ButtonOpenWebActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        String url = "https://www.google.com";
        java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
    } catch (java.io.IOException e) {
        System.out.println(e.getMessage());
    }
}

0

আমি জানি যে এটি একটি পুরানো প্রশ্ন তবে কখনও কখনও Desktop.getDesktop()উবুন্টু 18.04 এর মতো একটি অপ্রত্যাশিত ক্রাশ তৈরি করে। অতএব, আমাকে এইভাবে আমার কোডটি আবার লিখতে হবে:

public static void openURL(String domain)
{
    String url = "https://" + domain;
    Runtime rt = Runtime.getRuntime();
    try {
        if (MUtils.isWindows()) {
            rt.exec("rundll32 url.dll,FileProtocolHandler " + url).waitFor();
            Debug.log("Browser: " + url);
        } else if (MUtils.isMac()) {
            String[] cmd = {"open", url};
            rt.exec(cmd).waitFor();
            Debug.log("Browser: " + url);
        } else if (MUtils.isUnix()) {
            String[] cmd = {"xdg-open", url};
            rt.exec(cmd).waitFor();
            Debug.log("Browser: " + url);
        } else {
            try {
                throw new IllegalStateException();
            } catch (IllegalStateException e1) {
                MUtils.alertMessage(Lang.get("desktop.not.supported"), MainPn.getMainPn());
                e1.printStackTrace();
            }
        }
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

public static boolean isWindows()
{
    return OS.contains("win");
}

public static boolean isMac()
{
    return OS.contains("mac");
}

public static boolean isUnix()
{
    return OS.contains("nix") || OS.contains("nux") || OS.indexOf("aix") > 0;
}

তারপরে উদাহরণ থেকে আমরা এই সহায়কটিকে কল করতে পারি:

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        MUtils.openURL("www.google.com"); // just what is the 'open' method?
    }
});

0
public static void openWebPage(String url) {
    try {
        Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
        if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
            desktop.browse(new URI(url));
        }
        throw new NullPointerException();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, url, "", JOptionPane.PLAIN_MESSAGE);
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.