<AI>
ブラウザのリンク(myapp:// など)からローカルのJavaFXアプリを起動するには、
OSに対するプロトコル(カスタムURLスキーム)の登録と、起動時に渡されたURLパラメータをJava側で処理する仕組みの2段構えが必要です。

1. 仕組みの全体像
OSへの登録: ブラウザからリンクがクリックされると、OSは登録されたカスタムURLスキーム(例:myapp://)を認識し、
対応するローカルアプリケーション(JavaFXアプリ)を起動します。

引数の受け渡し: リンクに含まれる文字列(URLやパラメータ)が、コマンドライン引数として起動中のJavaFXプロセスに渡されます。

JavaFX側での処理: 渡された引数(URL)をJavaFXの Application クラスが受け取り、指定された処理を実行します。

2. 各工程の詳細と実装手順
① OSへのカスタムURLスキーム登録
Java単体ではOSレベルの登録を行えないため、インストーラやネイティブ化ツールを使用するのが一般的です。

Windows: レジストリの HKEY_CLASSES_ROOT にスキーム名(myapp)と、実行する .exe ファイルのパスを登録する必要があります。
macOS: アプリケーションの Info.plist に CFBundleURLTypes キーを追加して登録します。
ツール活用: JDeploy などのツールや、Javaの jpackage コマンドを使用することで、インストーラ作成時に自動でOSへスキームを登録できます。

② JavaFXアプリ側でのパラメータ受け取り
JavaFXの Application.start() メソッド内でパラメータを取得し、URL解析を行います。

java
// Application.start() 内での取得例
Parameters parameters = getParameters();
List rawArgs = parameters.getRaw();
if (!rawArgs.isEmpty()) {
    String url = rawArgs.get(0); // myapp://action?id=123
    // ここでURLの解析と処理を行う
}

③ 多重起動の制御
ブラウザリンクからの起動は、都度アプリが新規起動してしまう可能性があるため、単一インスタンス(Single Instance)として動作するよう制御します。
一般的に、OSのプロセス間通信(ソケット通信など)を用いて、既存のインスタンスへURLを送信し、画面を最前面に表示させる手法が用いられます。

3. ブラウザ側の実装
Webページ側は、通常のHTMLリンクでカスタムURLスキームを呼び出します。

html
<a href="myapp://action?id=123">アプリを開</a>

セキュリティ観点から、ブラウザはカスタムURLスキームの呼び出し時に、ユーザーへ確認ダイアログを表示します。

4 件のサイト

JavaFX Application Custom Scheme URI Handler

2020/02/12 — Are you looking for Application#getParameters() ? Also, inst