すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:MPH5OpenFileChooserProvider の使用

最終更新日:Jan 27, 2026

シナリオ

HTML5 オフラインパッケージの <input type="file"/> タグのデフォルトのファイル選択動作がニーズを満たさない場合は、カスタムイメージ選択機能を実装できます。カスタムイメージ選択スタイルのカスタマイズ、複数イメージの選択、動的権限の処理などの機能には、MPH5OpenFileChooserProvider を使用します。

実装

  1. mPaaS の初期化が完了した後のコールバックで MPH5OpenFileChooserProvider を登録します。

    H5Utils.setProvider(MPH5OpenFileChooserProvider.class.getName(), 
                        new MPH5OpenFileChooserProvider() {
                            @Override
                            public boolean needIntercept(Activity activity, ValueCallback valueCallback, boolean b, APFileChooserParams apFileChooserParams) {
                                // カスタムイメージ選択機能が不要な場合は、false を返して HTML5 コンテナーのインターセプトを回避します。デフォルトでは、コンテナーはインターセプトされません。
                                // カスタムイメージ選択機能を使用するには、HTML5 コンテナーをインターセプトし、true を返します。
                                return true;
                            }
    
                            @Override
                            public void openFileChooser(Activity activity, ValueCallback valueCallback, boolean b, APFileChooserParams apFileChooserParams) {
                                // 有効な URI を取得し、フロントエンドに渡します。
                                // このメソッドは必ず呼び出す必要があります。呼び出さない場合、次のクリックコールバックは実行されません。
                                // 1. intent を使用して、システムアルバムまたはカメラを呼び出す Activity を開きます。
                                // 2. 選択したイメージを取得します。
                                // 3. ページを閉じ、valueCallback を介してイメージをフロントエンドに渡します。
                                valueCallback.onReceiveValue(xx);
                            }
                        });
    重要

    valueCallback.onReceiveValue(xx) 関数は必ず呼び出す必要があります。呼び出さない場合、次のクリックコールバックは実行されません。

  2. openFileChooser コールバック関数でイメージを選択して処理します。

    1. intent を使用して Activity を開き、システムのフォトアルバムまたはカメラを開きます。

    2. 選択したイメージを取得します。

    3. Activity を閉じ、valueCallback を使用してイメージをフロントエンドに渡します。

参考ソリューション

ソリューション 1

  1. openFileChooser コールバックメソッドでブロードキャストリスナーを登録します。

  2. openFileChooser メソッドで、Intent を使用してカスタム Activity に遷移します。

  3. システムのカメラまたはイメージ選択 SDK を呼び出します。イメージクリッピング機能などの拡張機能を追加できます。

  4. イメージ選択 Activity を使用して、最終的に選択されたイメージを取得します。openFileChooser コールバックのブロードキャストリスナーにブロードキャストを送信してから、Activity を閉じます。

  5. 値は WebView コンポーネントの valueCallback.onReceiveValue(xx) メソッドを使用してフロントエンドに渡されます。

ソリューション 2

  1. openFileChooser メソッドで、Intent を使用して Activity に遷移し、その ActivityvalueCallback を渡します。

  2. システムのカメラまたはイメージ選択 SDK を呼び出します。イメージクリッピング機能などの拡張機能を追加できます。

  3. データは WebViewvalueCallback.onReceiveValue(xx) メソッドを介してフロントエンドに渡されます。

  4. Activity を閉じます。