ヘッダーをスキップ

Oracle® Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.0.1 E57593-01 |
| 目次

前 | 次 |

# B アプリケーション・コンテナAPI

この付録では、Mobile Application FrameworkのJavaScript API拡張機能、モバイル・アプリケーション・フレームワークのコンテナ・ユーティリティAPIおよびカスタムHTML Springboardアプリケーションを含むHTMLアプリケーション機能用の`AdfmfJavaUtilities` APIの使用方法について説明します。

この章には次の項が含まれます:

- 第B.1項「MAF APIを使用したカスタムHTML Springboardアプリケーション機能の作成」

- 第B.2項「MAFコンテナ・ユーティリティAPI」

- 第B.3項「getDirectoryPathRootメソッドを使用したファイル・アクセス」

## B.1 MAF APIを使用したカスタムHTML Springboardアプリケーション機能の作成

JavaScriptを使用してJavaScript API拡張機能をコールすることで、HTMLで作成されたカスタムSpringboardページにナビゲーション機能を追加できます。第4.6.4項「HTMLコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」で説明したように、JavaScript `<script>`タグにメソッドを追加することで、コールバックを有効にしてApache Cordovaを活用できます。例B-1は、このタグを使用したCordovaのコール方法を示しています。

例B-1 HTML Springboardページへの<script>タグの埋込み

    ...
    <script type="text/javascript">if (!window.adf) window.adf = {};
                                       adf.wwwPath = "../../../www/";</script>
    <script type="text/javascript" src="../../../www/js/base.js"></script>
    ...

`www/js`ディレクトリの場所への相対パスは、常にHTML Springboardページ(またはカスタムHTMLページ)の場所を反映します。HTML Springboardページは、ビュー・コントローラの`public_html`ディレクトリのルートか、そのサブディレクトリに配置できます。例B-1で、`src`属性(`../../../www/js/base.js`)と`adf.wwwPath`変数によって定義されているパスは、次のように、HTML Springboardファイルが`public_html`ディレクトリのルートに配置されているときの位置を基準にしています。

    User\username\workspace\application name\ViewController\public_html\customspringboard.html

つまり、`adf.wwwPath`変数には、`base.js`と同じ数の`../`エントリが含まれている必要があります。

注意: MAFは、`base.js`ライブラリ・ファイルの前にJQueryのカスタム・バージョンをすでにロードしている場合、JQuery JavaScriptファイルをロードしません。

`public_html`のサブディレクトリ内にあるSpringboardファイルおよびカスタムHTMLファイルが、ホストされたJavaScriptファイルにアクセスできるようにするには、各サブディレクトリの場所に応じて`../`エントリを追加することで、相対パスの定義を調整する必要があります。`../`エントリの数は、デプロイされた`www`ディレクトリの場所に相対した、モバイル・アプリケーション内のHTMLページの場所により異なります。HTMLファイルがフォルダの深いレベルに移動された場合、適切な数の`../`エントリを`<script>`タグに追加する必要があります。

ヒント: `www/js`ディレクトリ内にアクセス(およびその場所を確認)するには、まずモバイル・アプリケーションをデプロイした後、`deploy`ディレクトリに移動します。`www/js`ディレクトリは、デプロイメントによって生成された、プラットフォーム固有のアーティファクト内にあります。iOSデプロイメントの場合、このディレクトリは`temporary_xcode_project`ディレクトリ内にあります。Androidデプロイメントの場合、このディレクトリはAndroidアプリケーション・パッケージ(`.apk`)ファイルの`assets`ディレクトリ内にあります。第4.6.4項「HTMLコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」も参照してください。

注意: 設計時にはパスが存在しないので、JavaScriptインクルードは、Oracle Enterprise Pack for Eclipseによってソース・エディタ内ではエラーとして赤い波型の下線で強調表示されます。このパスは実行時に解決されます。

Cordova APIに対するMAF拡張機能では、モバイル・デバイスのAPIによって`maf-feature.xml`および`maf-application.xml`ファイルの構成メタデータにアクセスできるようになります。これにより、モバイル・デバイスとMAFのインフラストラクチャ間の通信が確立します。これらの拡張機能は、アプリケーション機能の表示動作も指示します。

注意: MAFではCordova 2.2.0が必要になるため、インストールされているすべてのPhoneGapプラグインをCordova 2.2.0バージョンに移行する必要があります。詳細は、Apache Cordovaのドキュメント(`http://docs.phonegap.com/en/2.2.0/index.html`)から入手できるアップグレード・ガイドを参照してください。

デフォルトのMAF Springboardページ、`springboard.amx`、およびカスタマイズされたSpringboardの構築に使用できるApplicationFeaturesデータ・コントロールの詳細は、第4.6.5項「MAF AMXコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」を参照してください。

### B.1.1 カスタムHTMLページ内のコードの実行について

例B-2は、`handlePageShown`コールバック関数の`showpagecomplete`イベントを定義するスクリプトを示しています。カスタムHTMLページ(ログイン・ページなど)では、MAFによって初めてそのページがロードおよび表示された後、標準的なDOM (Document Object Model)イベント・リスニングを使用してこのイベントをリスニングすることによって、ページに含まれる独自のコードを呼び出すことができます。

例B-2 showpagecompleteイベントの使用方法

    <script>
            function handlePageShown()
            {
              console.log("Page is shown!");
            }
            document.addEventListener("showpagecomplete", handlePageShown, false);
    </script>

注意: `showpagecomplete`イベントを使用すると、MAFの適切な状態が保証されます。`load`やCordovaの`deviceready`など、他のブラウザやサード・パーティのイベントを使用した場合、この状態は保証されない可能性があります。これらは使用しないでください。

## B.2 MAFコンテナ・ユーティリティAPI

MAFコンテナ・ユーティリティAPIのメソッドは、ナビゲーション・バーへの移動、Springboardの表示、アプリケーション機能の表示などの機能をMAFアプリケーションに提供します。これらのメソッドは、MAFのJavaおよびJavaScriptレイヤーで使用できます。

Javaでは、コンテナ・ユーティリティAPIは、静的メソッドとして`AdfmfContainerUtilities`クラスに実装されます。このクラスは`oracle.adfmf.framework.api`パッケージにあります。例B-3では、`gotoSpringboard`メソッドをコールしています。`oracle.adfmf.framework.api.AdfmfContainerUtilities`の詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。

例B-3 Javaでのコンテナ・ユーティリティAPIのコール

    import oracle.adfmf.framework.api.AdfmfContainerUtilities;
    ...
    AdfmfContainerUtilities.gotoSpringboard();
    ...

### B.2.1 JavaScriptコールバックの使用方法

JavaとJavaScriptのシグネチャは一致します。Javaでは、シグネチャは同期化され、直接結果が戻されます。JavaScriptは非同期なので、結果を返す`success`コールバックと、スローされた例外を戻す`failed`コールバック2つのコールバック関数が各関数に追加されます。Javaメソッドでは、`success`値は関数またはメソッドから戻され、例外はメソッドから直接スローされます。例B-4の疑似コードは、引数を使用しないコール`public static functionName() throws`が、Java内で`try`および`catch`ブロックを使用してどのように実行されるかを示しています。

例B-4 Javaでの引数を使用しないコールの実行

    ...
     try {
           result = AdfmfContainerUtilities.functionName();
        }
           catch() {
            ...
           }

    ...

JavaScriptのコールは非同期なので、関数の実行が完了した時点で、コールバック・メカニズムを通して戻す必要があります。例B-5の疑似コードは、JavaScriptコールのシグネチャを示しています。

例B-5 JavaScriptコールのシグネチャ

    adf.mf.api.functionName(
               function(req, res) { alert("functionName complete"); },
               function(req, res) { alert("functionName failed with " +
                                          adf.mf.util.stringify(res); }
                                        );

例B-5に示されるように、このコールは`function(request, response)`として定義されます。request引数の値は、実際のリクエストです。`response`は`function(request, response)`と定義され、この値は実際のリクエストです。レスポンスは関数の実行時にスローされます。

次の疑似コードは、`public static <return value> <function name>(<arg0>, <arg1>, ...) throws <exceptions>`など、1つ以上の引数を使用するコールが、Java内で`try-catch`ブロックを使用してどのように実行されるかを示しています。

例B-6 Javaでの複数の引数を使用するコールの実行

    try {
           result = AdfmfContainerUtilities.<function_name>(<arg0>, <arg1>, ...);
        }
           catch(<exception>) {
            ...
           }

JavaScriptのコールは非同期なので、結果を戻すことができません。そのかわりに、関数の実行の完了時にコールバック・メカニズムが必要になります。成功および失敗のコールバックのシグネチャは、どちらも`function(request, response)`です。ここで`request`引数は実際のリクエストのJSON表現です。`response`はメソッドから戻されたもののJSON表現です(`success`コールバック関数の場合)。`failed`コールバック関数の場合は、スローされた例外のJSON表現になります。

注意: JavaScriptコールを呼び出して、スタックの深度や競合状態などの問題を回避するには、その前にコールバック関数を呼び出す必要があります。

### B.2.2 コンテナ・ユーティリティAPIの使用方法

コンテナ・ユーティリティAPIでは、次のメソッドが提供されます。

- getApplicationInformation: モバイル・アプリケーションのメタデータを取得します。

- gotoDefaultFeature: デフォルトのアプリケーション機能を表示します。

- getFeatures: アプリケーション機能を取得します。

- gotoFeature: 特定のアプリケーション機能を表示します。

- getFeatureByName: アプリケーション機能の名前を使用して、アプリケーション機能に関する情報を取得します。

- getFeatureById: IDを使用してアプリケーション機能を取得します。

- resetFeature: アプリケーション機能をロード時の状態にリセットします。

- gotoSpringboard: Springboardを表示します。

- hideNavigationBar: ナビゲーション・バーを非表示にします。

- showNavigationBar: ナビゲーション・バーを表示します。

- invokeMethod: Javaメソッドを起動します。

- invokeContainerJavaScriptFunction: JavaScriptメソッドを起動します。

コンテナ・ユーティリティAPIには、アプリケーションにバッジおよびバッジ番号を設定するためのメソッドが含まれています。詳細は、第B.2.15項「アプリケーション・アイコンへのバッジ設定」を参照してください。

### B.2.3 getApplicationInformation

このメソッドは、アプリケーションに関する情報を格納した`ApplicationInformation`オブジェクトを戻します。このメソッドでは、アプリケーションID、アプリケーション名、バージョン、アプリケーションのベンダーといったメタデータが戻されます。

Javaでは、このメソッドは次のようにコールされます。

    public static oracle.adfmf.framework.ApplicationInformation
                  getApplicationInformation()
                  throws oracle.adfmf.framework.exception.AdfException

例B-7は、このメソッドのコール方法を示しています。

例B-7 Javaを使用したアプリケーション情報の取得

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

       ...
         try {
            ApplicationInformation ai = AdfmfContainerUtilities.getApplicationInformation();
            String applicationId = ai.getId();
            String applicationName = ai.getName();
            String vendor = ai.getVendor();
            String version = ai.getVersion();
            ...
         }catch(AdfException e) {
            // handle the exception
         }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void getApplicationInformation(success, failed)

`success`コールバックは`function(request, response)`という形式にする必要があり、この`request`引数には元のリクエストが格納され、`response`引数には関連する`AdfmfContainerUtilities`メソッドの戻り値が格納され、この戻り値は、アプリケーション・レベルのメタデータを格納する`ApplicationInformation`オブジェクトです。ここには、アプリケーション名、ベンダー、バージョンおよびアプリケーションIDが含まれます。

`failed`コールバックは`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-8は、これらのコールバック関数を使用してアプリケーション情報を取得する方法を示しています。

例B-8 JavaScriptでコールバック関数を使用してアプリケーション情報を返す方法

    adf.mf.api.getApplicationInformation(
               function(req, res) { alert("getApplicationInformation complete"); },
               function(req, res) { alert("getApplicationInformation failed with " +
                                          adf.mf.util.stringify(res); }
                                        );

### B.2.4 gotoDefaultFeature

このメソッドは、MAFがデフォルトのアプリケーション機能を表示するようにリクエストします。デフォルトのアプリケーション機能とは、モバイル・アプリケーションの起動時に表示されるアプリケーション機能です。

注意: 認証関連または許可関連の問題が発生している場合、このメソッドではアプリケーション機能を表示できないことがあります。

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void gotoDefaultFeature(success, failed)

`success`コールバック関数は`function(request, response)`という形式にする必要があります。この`request`引数には元のリクエストが格納され、`response`引数には関連する`AdfmfContainerUtilities`メソッドの戻り値(`void`)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。この`request`引数には元のリクエストが格納され、`response`引数にはエラーが格納されます。

例B-9は、これらのコールバック関数を使用してデフォルトのアプリケーション機能をコールする方法を示しています。

例B-9 JavaScriptのコールバック関数を使用してデフォルトのアプリケーション機能をアクティブ化する方法

    adf.mf.api.gotoDefaultFeature(
              function(req, res) { alert("gotoDefaultFeature complete"); },
              function(req, res) { alert("gotoDefaultFeature failed with " +
                                          adf.mf.util.stringify(res); }
                                 );

### B.2.5 getFeatures

このメソッドは、使用可能なアプリケーション機能を表す`FeatureInformation`オブジェクトの配列を戻します。戻されるメタデータには、機能ID、アプリケーション機能名およびアプリケーション・アイコンに使用するイメージ・ファイルの場所が含まれます。このコールにより、カスタムSpringboardの実装は、制約の適用後に使用可能になるアプリケーション機能のリストにアクセスできるようになります。(これらのアプリケーション機能もデフォルトのSpringboardに表示されることがあります。)

Javaでは、このメソッドは次のようにコールされます。

    public static oracle.adfmf.framework.FeatureInformation[] getFeatures()
                  throws oracle.adfmf.framework.exception.AdfException

例B-10は、このメソッドの使用方法を示しています。

例B-10 Javaを使用したアプリケーション機能情報の取得

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

       ...
         try {
            FeatureInformation[] fia = null;
            fia = AdfmfContainerUtilities.getFeatures();

            for(int f = 0; f < fia.length; ++f) {
               FeatureInformation fi = fia[i];
               String featureId = fi.getId();
               String featureName = fi.getName();
               String featureIconPath = = fi.getIcon();
               String featureImagePath = fi.getImage();
               ...
            }
         }catch(AdfException e) {
            // handle the exception
         }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void getFeatures(success, failed)

`success`コールバック関数は`function(request, response)`という形式にする必要があります。この`request`引数には元のリクエストが格納され、`response`引数には関連する`AdfmfContainerUtilities`メソッドの戻り値(`FeatureInformation`オブジェクトの配列)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。この`request`引数には元のリクエストが格納され、`response`引数にはエラー(`AdfException`)が格納されます。

例B-11は、JavaScriptのコールバック関数を使用してアプリケーション機能情報を取得する方法を示しています。

    adf.mf.api.getFeatures(
              function(req, res) { alert("getFeatures complete"); },
              function(req, res) { alert("getFeatures failed with " +
                                   adf.mf.util.stringify(res); }
                             );

### B.2.6 gotoFeature

このメソッドは、MAFが、IDによって識別されたアプリケーション機能を表示するようにリクエストします。

注意: 認証関連または許可関連の問題が発生している場合、このメソッドではアプリケーション機能を表示できないことがあります。

Javaでは、このメソッドは次のようにコールされます。

    public static void gotoFeature(java.lang.String featureId)
                       throws oracle.adfmf.framework.exception.AdfException

例B-12に示すように、このメソッドのパラメータはアプリケーション機能のIDです。

例B-12 アプリケーション機能のアクティブ化

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

       ...
         try {
            AdfmfContainerUtilities.gotoFeature("feature.id");
         }catch(AdfException e) {
            // handle the exception
         }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void gotoFeature(featureId, success, failed)

`featureId`パラメータは、アプリケーション機能IDです。このパラメータは`success`コールバック関数をアクティブ化します。このコールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連する`AdfmfContainerUtilities`メソッドの戻り値(`void`)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-13は、これらのコールバック関数を使用してアプリケーション機能をコールする方法を示しています。

例B-13 JavaScriptのコールバック関数を使用したアプリケーション機能のアクティブ化

    adf.mf.api.gotoFeature("feature0",
              function(req, res) { alert("gotoFeature complete"); },
    function(req, res) { alert("gotoFeature failed with " +
                               adf.mf.util.stringify(res); }
       );

### B.2.7 getFeatureByName

このメソッドは、渡されたアプリケーション機能の名前を使用して、アプリケーション機能に関する情報を戻します。

Javaでは、このメソッドは次のようにコールされます。

    public static oracle.adfmf.framework.FeatureInformation getFeatureByName(java.lang.String
                                                                             featureName)
                                         throws oracle.adfmf.framework.exception.AdfException

例B-14に示すように、このメソッドのパラメータはアプリケーション機能の名前です。

例B-14 アプリケーション機能名を使用したアプリケーション機能情報の取得

     ...
         try {
            FeatureInformation fi = AdfmfContainerUtilities.getFeatureByName("feature.name");
            String featureId = fi.getId();
            String featureName = fi.getName();
            String featureIconPath = = fi.getIcon();
            String featureImagePath = fi.getImage();
         }catch(AdfException e) {
            // handle the exception
         }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void getFeatureByName(featureName, success, failed)

`featureName`パラメータは、アプリケーション機能の名前です。`success`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連する`AdfmfContainerUtilities`メソッドの戻り値(`void`)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-15は、これらのコールバック関数の使用方法を示しています。

例B-15 JavaScriptのコールバック関数を使用した、アプリケーション機能名によるアプリケーション機能情報の取得

    adf.mf.api.getFeatureByName("feature.name",
              function(req, res) { alert("getFeatureByName complete"); },
              function(req, res) { alert("getFeatureByName failed with " +
                                         adf.mf.util.stringify(res); }
    );

### B.2.8 getFeatureById

このメソッドは、アプリケーションIDを使用してアプリケーション機能を取得します。

Javaでは、このメソッドは次のようにコールされます。

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

例B-16に示すように、このメソッドのパラメータはアプリケーション機能のIDです。

例B-16 JavaでのIDを使用したアプリケーション機能の取得

       try {
            FeatureInformation fi =AdfmfContainerUtilities.getFeatureById("feature.id");
       }catch(AdfException e) {
            // handle the exception
       }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void getFeatureById(featureId, success, failed)

`featureId`パラメータは、アプリケーション機能のIDです。`success`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連する`AdfmfContainerUtilities`メソッドの戻り値(`void`)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-17は、これらのコールバック関数を使用してアプリケーション機能を取得する方法を示しています。

例B-17 JavaScriptのコールバック関数を使用した、IDによるアプリケーション機能の取得

    adf.mf.api.getFeatureById("feature.id",
              function(req, res) { alert("getFeatureById complete"); },
              function(req, res) { alert("getFeatureById failed with " +
                                         adf.mf.util.stringify(res); }
       );

### B.2.9 resetFeature

このメソッドは、アプリケーション機能の状態をリセットします。このメソッドでは、アプリケーション機能のJava側のモデルをリセットして、モバイル・アプリケーションがロードされ、最初にアプリケーション機能が表示されたときのようにユーザー・インタフェース・プレゼンテーションを再起動します。

Javaでは、このメソッドは次のようにコールされます。

    public static void resetFeature(java.lang.String featureId)
                       throws oracle.adfmf.framework.exception.AdfException

例B-18に示すように、このメソッドのパラメータはリセットされるアプリケーション機能のIDです。

例B-18 Javaでのアプリケーション機能のリセット

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

       ...
         try {
            AdfmfContainerUtilities.resetFeature("feature.id");
         }catch(AdfException e) {
            // handle the exception

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void resetFeature(featureId, success, failed)

`success`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連するメソッドの戻り値(アプリケーション機能のID)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-19は、これらのコールバック関数を使用してアプリケーション機能をコールする方法を示しています。

例B-19 JavaScriptのコールバック関数を使用してアプリケーション機能をリセットする方法

    adf.mf.api.resetFeature("feature0",
              function(req, res) { alert("resetFeature complete"); },
              function(req, res) { alert("resetFeature failed with " +
                                         adf.mf.util.stringify(res); }
                           );

### B.2.10 gotoSpringboard

このメソッドは、MAFがSpringboardをアクティブ化するようにリクエストします。

注意: `maf-application.xml`ファイルで機能参照として指定されていない場合や、認証関連または許可関連の問題が発生している場合、このメソッドではSpringboardを表示できないことがあります。第4.6項「Springboardとナビゲーション・バーの動作の構成」も参照してください。

Javaでは、このメソッドは次のようにコールされます。

    public static void gotoSpringboard()

例B-20は、このメソッドの使用方法を示しています。

例B-20 JavaでのSpringboardのアクティブ化

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

    ...
      try {
         AdfmfContainerUtilities.gotoSpringboard();
      }catch(AdfException e) {
            // handle the exception
      }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void gotoSpringboard(success, failed)

`success`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連するメソッドの戻り値(`void`)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-21は、これらのコールバック関数の使用方法を示しています。

例B-21 JavaScriptのコールバック関数を使用してSpringboardをアクティブ化する方法

    adf.mf.api.gotoSpringboard(
        function(req, res) { alert("gotoSpringboard complete"); },
        function(req, res) { alert("gotoSpringboard failed with " +
                                   adf.mf.util.stringify(res); }
    );

### B.2.11 hideNavigationBar

このメソッドは、MAFがナビゲーション・バーを非表示にするようにリクエストします。

Javaでは、このメソッドは次のようにコールされます。

    public static void hideNavigationBar()

例B-22は、このメソッドの使用方法を示しています。

例B-22 Javaでのナビゲーション・バーの非表示化

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

       ...
      try {
         AdfmfContainerUtilities.hideNavigationBar();
       }catch(Exception e) {
         // handle the exception
      }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void hideNavigationBar(success, failed)

`success`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連するメソッドの戻り値(`void`)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-23は、これらのコールバック関数の使用方法を示しています。

例B-23 JavaScriptのコールバック関数を使用してナビゲーション・バーを非表示にする方法

    adf.mf.api.hideNavigationBar(
           function(req, res) { alert("hideNavigationBar complete"); },
           function(req, res) { alert("hideNavigationBar failed with " +                                   adf.mf.util.stringify(res); }
    );

### B.2.12 showNavigationBar

このメソッドは、MAFがナビゲーション・バーを表示するようにリクエストします。

Javaでは、このメソッドは次のようにコールされます。

    public static void showNavigationBar()

例B-24は、このメソッドの使用方法を示しています。

例B-24 Javaでのナビゲーション・バーの表示

    import oracle.adfmf.framework.api.AdfmfContainerUtilties;

    ...
      try {
         AdfmfContainerUtilities.showNavigationBar();
      }catch(Exception e) {
         // handle the exception
      }

JavaScriptでは、次のように、`success`および`failed`コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。

    public void showNavigationBar(success, failed)

`success`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連するメソッドの戻り値(`void`)が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

例B-25は、これらのコールバック関数の使用方法を示しています。

例B-25 JavaScriptのコールバック関数を使用してナビゲーション・バーを表示する方法

    adf.mf.api.showNavigationBar(
               function(req, res) { alert("showNavigationBar complete"); },
               function(req, res) { alert("showNavigationBar failed with " +                                       adf.mf.util.stringify(res); }
    );

### B.2.13 invokeMethod

このメソッドは、Javaでは提供されません。例B-26は、JavaScriptのコールバック・メソッドを使用して、クラスパスに含まれる任意のクラスからJavaメソッドを起動する方法を示しています。

例B-26 JavaScriptのコールバック関数を使用してJavaメソッドをコールする方法

    adf.mf.api.invokeMethod(classname,
                            methodname,
                            param1,
                            param2,
                             ...
                            paramN,
                            successCallback,
                            failedCallback);

表B-1に、このメソッドによって取得されるパラメータを示します。

表B-1 invokeJavaMethodに渡されるパラメータ

パラメータ | 説明
--- | ---
`classname` | Javaメソッドのコール時にMAFがインスタンスを作成するために使用するクラス名(パッケージ情報を含む)
`methodname` | `classname`パラメータによって指定されたクラスのインスタンスで起動させるメソッドの名前

`success`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseには関連するメソッドの戻り値が格納されます。

`failed`コールバック関数は`function(request, response)`という形式にする必要があります。このrequestには元のリクエストが格納され、responseにはエラーが格納されます。

複数のパラメータによるこのメソッドの使用例は次のとおりです。

-     adf.mf.api.invokeMethod("TestBean", "setStringProp", "foo", success, failed);

-     adf.mf.api.invokeMethod("TestBean", "getStringProp", success, failed);

整数パラメータの使用例は次のとおりです。

    adf.mf.api.invokeMethod("TestBean", "testSimpleIntMethod", "101", success, failed);

複合パラメータの使用方法は次のとおりです。

    adf.mf.api.invokeMethod("TestBean", "testComplexMethod",
               {"foo":"newfoo","baz":"newbaz",".type":"TestBeanComplexSubType"}, success, failed);

パラメータが存在しない場合の使用方法は次のとおりです。

    adf.mf.api.invokeMethod("TestBean", "getComplexColl", success, failed);

`String`パラメータの使用方法は次のとおりです。

    adf.mf.api.invokeMethod("TestBean", "testMethodStringStringString", "Hello ",                         "World", success, failed);

### B.2.14 invokeContainerJavaScriptFunction

`invokeContainerJavaScriptFunction`は、JavaScriptメソッドを起動します。表B-2に、このメソッドによって渡されるパラメータを示します。

表B-2 invokeContainerJavaScriptFunctionに渡されるパラメータ

パラメータ | 説明
--- | ---
`featureId` | JavaScriptの起動コンテキストを決定するためにMAFによって使用されるアプリケーション機能のID。このIDによって、このメソッドがコールされるWebビューが決まります。
`method` | 起動させるメソッドの名前。
`args` | メソッドに渡される引数の配列。この配列内で、これらの引数はメソッドが期待する順序で並べられます。

このメソッドは、JSONオブジェクトを戻します。

注意: `invokeContainerJavaScriptFunction` APIは、アプリケーションがAndroidデバイスまたはエミュレータ上で実行される場合、JavaScript関数が15秒以内に完了することを予期します。完了しなかった場合は、タイムアウト・エラーを戻します。

例B-27 invokeContainerJavaScriptFunctionメソッド

    public static java.lang.Object invokeContainerJavaScriptFunction(java.lang.String featureId,
                                                                     java.lang.Object[] args)
                                    throws oracle.adfmf.framework.exception.AdfException

例B-28の疑似コードは、`feature1`という名前のアプリケーション機能に含まれる`appFunctions.js`という名前のJavaScriptファイルを示しています。このファイル内で記述されているJavaScriptメソッド、`application.testFunction`は、`invokeContainerJavaScriptFunction method`によってコールされます(例B-29を参照)。アプリケーションには、この関数をコールするアクション・リスナーで構成されるコマンド・ボタンが含まれているので、ユーザーがこのボタンをクリックすると、次のようなアラートが表示されます。

- APP ALERT 0

- APP ALERT 1

- APP ALERT 2

例B-28 appFunctions.js

    (function()
        {
           if (!window.application) window.application = {};

           application.testFunction = function()
           {
              var args = arguments;

              alert("APP ALERT " + args.length + " ");
              return "application.testFunction - passed";
           };
        })();

例B-29の疑似コードは、`invokeApplicationJavaScriptFunction`メソッドによって、例B-28で記述されているJavaScriptメソッド(`application.testFunction`)をコールする方法を示しています。

例B-29 JavaでのJavaScript関数のコール

    invokeApplicationJavaScriptFuntions
        public void invokeApplicationJavaScriptFuntions(ActionEvent actionEvent) {
            AdfmfContainerUtilities.invokeContainerJavaScriptFunction("feature1",
                                                                      "application.testFunction",
                                                                       new Object[] {} );
            AdfmfContainerUtilities.invokeContainerJavaScriptFunction("feature1",
                                                                      "application.testFunction",
                                                                       new Object[] {"P1"} );
            AdfmfContainerUtilities.invokeContainerJavaScriptFunction("feature1",
                                                                      "application.testFunction",
                                                                       new Object[] {"P1", "P2"} );
        }

詳細は、Oracle Mobile Application Framework Java APIリファレンスおよびAPIDemoサンプル・アプリケーションを参照してください。このサンプル・アプリケーションは、「ファイル」→「新」→「MAFサンプル」にあります。

### B.2.15 アプリケーション・アイコンへのバッジ設定

`AdfmfContainerUtilities`クラスには、モバイル・アプリケーション・アイコンにバッジ番号を設定したり、その番号を取得するためのメソッドが含まれています。表B-3に、これらのメソッドを示します。

表B-3 アイコンへのバッジ設定メソッド

メソッド | 説明 | パラメータ
--- | --- | ---
`getApplicationIconBadgeNumber` | モバイル・アプリケーションのアイコンに現在設定されているバッジの値を取得します。アプリケーション・アイコンにバッジが設定されていない場合は、ゼロ(0)を戻します。 | なし
`setApplicationIconBadgeNumber` | モバイル・アプリケーションのアイコンにバッジ番号を設定します。 | バッジの値(`int badge`)。

注意: アプリケーション・アイコンへのバッジ設定は、Androidではサポートされていません。

## B.3 getDirectoryPathRootメソッドを使用したファイル・アクセス

`adfmfJavaUtilties` APIには、`getDirectoryPathRoot`メソッドが含まれています。このメソッドはJavaレイヤーからのみコールでき、iOSシステムとAndroidシステムの両方にあるファイルへのアクセスを可能にします。例B-30に示すように、このメソッドを使用すると、デバイス上の一時ファイル、アプリケーション・ファイル(iOSシステム上)およびキャッシュ・ディレクトリの場所に、`TemporaryDirectory`、`ApplicationDirectory`および`DeviceOnlyDirectory`定数を使用してそれぞれアクセスできます。`DeviceOnlyDirectory`の場所に格納されたファイルは、デバイスの接続時には同期されません。

注意: アプリケーションからディレクトリまたはファイルへのアクセスを試みる前に、それらのディレクトリまたはファイルが存在することを確認してください。

`oracle.adfmf.framework.api.AdfmfJavaUtilities`の詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。

例B-30 ファイルへのアクセス

    import oracle.adfmf.framework.api.AdfmfJavaUtilities;

    ...

    public void getDirectoryPathRoot()
       {
     // returns the directory for storing temporary files

         String tempDir =
    AdfmfJavaUtilities.getDirectoryPathRoot(AdfmfJavaUtilities.TemporaryDirectory);

     // returns the directory for storing application files

         String appDir =
    AdfmfJavaUtilities.getDirectoryPathRoot(AdfmfJavaUtilities.ApplicationDirectory);

     // returns the directory for storing cache files

         String deviceDir =
    AdfmfJavaUtilities.getDirectoryPathRoot(AdfmfJavaUtilities.DeviceOnlyDirectory);

     // returns the directory for storing downloaded files

    AdfmfJavaUtilities.getDirectoryPathRoot(AdfmfJavaUtilities.DownloadDirectory);
       }

### B.3.1 プラットフォームに依存しないダウンロード場所へのアクセス

ファイル記憶域の要件は、プラットフォームによって異なります。Androidプラットフォームでは、アプリケーションからファイルへのアクセス元となる単一の場所が規定されていません。そのかわり、アプリケーションでは、権限が付与された任意の場所にファイルを書き込むことができます。一方、iOSプラットフォームでは通常、アプリケーション・ディレクトリ内にファイルを格納します。このような違いにより、`ApplicationDirectory`を`getDirectoryPathRoot`メソッドに渡すと、AndroidデバイスではなくiOSデバイス上で実行されているアプリケーションの添付ファイルを表示するために必要なファイルの場所を戻すことができます。アプリケーションをiOSデバイスとAndroidデバイスの両方で実行する場合、プラットフォーム固有のコードを記述してこれらの場所を取得するのではなく、`getDirectoryPathRoot`メソッドに`DownloadDirectory`を渡すことによって、外部記憶域の場所とデフォルトの添付ファイル・ディレクトリへのパスを両方戻すことができます。この定数(`列挙`型)には、`DeviceManager` APIの`displayFile`メソッドで使用する場所が反映されます。このメソッドでは、プラットフォーム固有の機能を使用してこれらの場所を検索することによって、添付ファイルを表示します。

Androidの場合、`DownloadDirectory`では、`Environment.getExternalStorageDirectory`メソッド(SDカードなどのAndroid用外部記憶域ディレクトリを取得する)によって戻されるパスを参照します。iOSデバイス上で実行されるモバイル・アプリケーションの場合は、`ApplicationDirectory`と同じ場所が返されます。`getExternalStorageDirectory`の詳細は、Android開発者のWebサイト(`http://developer.android.com/reference/packages.html`)で入手できる、パッケージのリファレンス・ドキュメントを参照してください。また、iOS Developer Library (`http://developer.apple.com/library/ios/navigation/`)で入手できる『Files System Programming Guide』も参照してください。