ユーザーのデフォルトブラウザをStringとして返すメソッドはありますか?私が探しています何のデフォルトのブラウザを文字列として返すメソッドですか?
例:
System.out.println(getDefaultBrowser()); // prints "Chrome"
ユーザーのデフォルトブラウザをStringとして返すメソッドはありますか?私が探しています何のデフォルトのブラウザを文字列として返すメソッドですか?
例:
System.out.println(getDefaultBrowser()); // prints "Chrome"
あなたは文字列として、デフォルトのブラウザを抽出するために、レジストリに[1]や正規表現を使用して、この方法を達成することができます。私が知っているこれを行うための "クリーンな"方法はありません。
public static String getDefaultBrowser()
{
try
{
// Get registry where we find the default browser
Process process = Runtime.getRuntime().exec("REG QUERY HKEY_CLASSES_ROOT\\http\\shell\\open\\command");
Scanner kb = new Scanner(process.getInputStream());
while (kb.hasNextLine())
{
// Get output from the terminal, and replace all '\' with '/' (makes regex a bit more manageable)
String registry = (kb.nextLine()).replaceAll("\\\\", "/").trim();
// Extract the default browser
Matcher matcher = Pattern.compile("/(?=[^/]*$)(.+?)[.]").matcher(registry);
if (matcher.find())
{
// Scanner is no longer needed if match is found, so close it
kb.close();
String defaultBrowser = matcher.group(1);
// Capitalize first letter and return String
defaultBrowser = defaultBrowser.substring(0, 1).toUpperCase() + defaultBrowser.substring(1, defaultBrowser.length());
return defaultBrowser;
}
}
// Match wasn't found, still need to close Scanner
kb.close();
} catch (Exception e)
{
e.printStackTrace();
}
// Have to return something if everything fails
return "Error: Unable to get default browser";
}
いつでもgetDefaultBrowser()
が呼び出されると、Windowsのデフォルトブラウザが返されます。
テスト済みブラウザ:
正規表現の説明(/(?=[^/]*$)(.+?)[.]
):
/(?=[^/]*$)
文字列[.]
の最後に発生/
が(.+?)
ファイル拡張子に.
と一致する一致したものを2つのマッチした文字の間の文字列をキャプチャします。
(デフォルト)REG_SZ ":あなたは、私たちは(私が捕獲されているものを太字にしました)正規表現に対してテスト直前
registry
の値を見て、これが捕獲されてどのように見ることができます
C:/プログラムファイル(x86の)/ Mozilla Firefoxの/ Firefoxの .EXE」-osint -url "%1"
[1] Windowsのみ。私はMacやLinuxコンピュータにアクセスすることはできませんが、インターネットを見てみると、com.apple.LaunchServices.plist
はデフォルトのブラウザ値をMacに保存していると思います.Linuxではデフォルトのブラウザを得るためにxdg-settings get default-web-browser
コマンドを実行できると思います。私はそれに間違っているかもしれませんが、多分それらにアクセスできる誰かが私のためにテストし、それらを実装する方法についてコメントしてくれるでしょうか?
_ Internet Explorerが既定のブラウザとして設定されている場合、 "HKEY_CLASSES_ROOT \ http \ shell \ open \ command" _は更新されません。少なくとも私のPC、Windows 7にはありません。 –
@StevenJeuris奇妙なことに、IEが設定されているときに同じOSを実行していて、そのレジストリが更新されています。 – syb0rg
次のレジストリ値が更新されます:_ "HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associations \ UrlAssociations \ http \ UserChoice" _。ただし、パスではなくProgIDを格納します。 –
なぜあなたはデフォルトのブラウザを必要としていますか?あなたのコードはクライアント側ではなくサーバ側で実行されるか、デスクトップアプリケーションを作成していると思いますか? –
ユーザーのデフォルトブラウザを見つける必要がある理由はたくさんあります。私が使っているのは、クライアントとの統計データです。この関数は、どのブラウザを使用しているかを教えてくれます。特定のブラウザがインストールされている場合は、別のソフトウェアを推奨するようにします。 – syb0rg
なぜデフォルトブラウザが必要ですか?あなたは文字列を行うことができます。userAgent = request.getHeader( "User-Agent");それからブラウザを入手してください。ほとんどの人はデフォルトブラウザとしてIEを使用し、ChromeまたはFirefoxを使用します。 –