ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Frameworkモバイル開発者ガイド
11g リリース2 (11.1.2.3.0)
B70750-01
  目次へ
目次

前
 
次
 

6 アプリケーション機能の表示制御

この章では、ADFモバイルJavaScript API拡張機能、ADFモバイル・コンテナ・ユーティリティAPI、およびカスタムSpringboardアプリケーションのためのadfmfjavaUtilities APIの使用方法について説明します。

この章では、次の項目について説明します。

6.1 ADFモバイルAPIを使用したカスタムSpringboardアプリケーション機能の作成

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

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

...
<script type="text/javascript" charset="utf-8" src=../../../www/js/phonegap-1.0.0.js"></script>
<script type="text/javascript" src="../../../www/js/adf.el.js"></script>
...

注意:

adf.el.js内にあるJavaScriptメソッドでadf.mf.apiで始まるものはすべて使用できます。使用方法の詳細は、第6.2項「ADFモバイル・コンテナ・ユーティリティAPI」を参照してください。


ADFモバイルでのJavaScriptの使用では、PhoneGapのインフラストラクチャを活用し、適切なJavaScriptコンストラクタによってブラウザのDOM (Document Object Model)を初期化します。また、PhoneGapオブジェクト・コンストラクタ・インフラストラクチャを使用することで、競合状態も回避します。さらに、ADFモバイルはPhoneGapメッセージをネイティブ・デバイス・コードにポストして、ADFモバイルPhoneGapコマンドを起動します。

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

6.2 ADFモバイル・コンテナ・ユーティリティAPI

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

例6-2に示すように、JavaScript内でコンテナ・ユーティリティAPIはadf.mf.api JavaScriptオブジェクトに配置されます。この例では、gotoSpringboardメソッドをコールしています。

例6-2 JavaScriptでのコンテナ・ユーティリティAPIのコール

<script type="text/javascript" charset="utf-8" src="../../../www/js/phonegap-1.0.0.js"></script>
...
adf.mf.api.gotoSpringboard();  
...

注意:

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

JDeveloper\mywork\Mobile_Application\ViewController\public_html\customspringboard.html

public_htmlのサブディレクトリ内にあるSpringboardファイルが、ホストされたJavaScriptファイルにアクセスできるようにするには、各サブディレクトリの場所に応じて../を追加することで、相対パスの定義を調整する必要があります。

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


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

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

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

6.2.1 JavaScriptコールバックの使用方法

JavaとJavaScriptのシグネチャは一致します。Javaでは、シグネチャは同期化され、直接結果が戻されます。JavaScriptは非同期なので、結果を返すsuccessコールバックと、スローされた例外を戻すfailedコールバック2つのコールバック関数が各関数に追加されます。Javaメソッドでは、success値は関数またはメソッドから戻され、例外はメソッドから直接スローされます。たとえば、public static (, , ...) throwsなどの引数をとらないコールは、次のようにJava内で実行されます。

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

JavaScriptのコールは非同期なので、関数の実行が完了した時点で、コールバック・メカニズムを通して戻す必要があります。JavaScriptのシグネチャはadf.mf.api.(, , ..., , )で、次のように呼び出されます。

 adf.mf.api.(, , ..., , )

このコールは、function(request, response)と定義されます。request引数の値は、実際のリクエストです。responsefunction(request, response)と定義され、この値は実際のリクエストです。レスポンスは関数の実行時にスローされます。

public static <return value> <function name>(<arg0>, <arg1>, ...) throws <exceptions>のように、1つ以上の引数をとるコールは、次のようにJava内で実行されます。

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

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

6.2.2 コンテナ・ユーティリティAPIの使用方法

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

6.2.3 checkforNewConfiguration

構成サービスの使用時に、このメソッドは、構成済のエンドポイントに対する変更がないか、connections.xmlファイルをホストするサーバーをチェックするように、ADFモバイルにリクエストします。変更をチェックするために、ADFモバイルは、サーバー上でホストされる接続関連のコンテンツとデバイス上の構成を比較するスレッドを作成します。ADFモバイルが、デバイス構成が古くなっているのを検出したら、checkforNewConfigurationメソッドによって、新しい構成が検出されたのでアプリケーションを閉じることをユーザーに通知する、非ブロッキング・コールが発行されます。ADFモバイルはユーザーにアプリケーションの再起動を促します。

Javaでは、このメソッドは次のようになります。

public static void checkForNewConfiguration()
                   throws oracle.adfmf.framework.exception.AdfException 

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

例6-4 Javaを使用した構成情報の取得

import oracle.adfmf.framework.api.AdfmfContainerUtilties;
 
   ...
     try {
        AdfmfContainerUtilities.checkForNewConfiguration();
     }catch(AdfException e) {
        // handle the exception
     }

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

public void checkForNewConfiguration(success, failed)

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

例6-5は、これらのコールバック関数を使用して構成情報を取得する方法を示しています。

例6-5 JavaScriptでコールバック関数を使用して構成情報を戻す方法

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

6.2.4 getApplicationInformation

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

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

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

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

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

import oracle.adfmf.framework.api.AdfmfContainerUtilties;
 
   ...
     try {
        ApplicationInformation[] ai = AdfmfContainerUtilities.getApplicationInformation();
        ...
     }catch(AdfException e) {
        // handle the exception
     }

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

public void getApplicationInformation(success, failed)

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

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

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

例6-7 JavaScriptでコールバック関数を使用してアプリケーション情報を取得する方法

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

6.2.5 gotoDefaultFeature

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


注意:

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


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

public void gotoDefaultFeature(success, failed)

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

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

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

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

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

6.2.6 getFeatures

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

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

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

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

例6-9 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];
           ...
        }
     }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)が格納されます。

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

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

6.2.7 gotoFeature

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


注意:

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


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

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

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

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

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にはエラーが格納されます。

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

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

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

6.2.8 getFeatureByName

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

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

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

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

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

 ...
     try {
        FeatureInformation fi = AdfmfContainerUtilities.getFeatureByName("feature.name");
     }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にはエラーが格納されます。

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

例6-14 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); }
);

6.2.9 getFeatureById

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

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

import oracle.adfmf.framework.api.AdfmfContainerUtilties;

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

例6-15 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にはエラーが格納されます。

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

例6-16 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); }
   );

6.2.10 resetFeature

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

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

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

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

例6-17 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にはエラーが格納されます。

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

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

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

6.2.11 gotoSpringboard

このメソッドは、ADFモバイルがSpringboardを表示するようにリクエストします。


注意:

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


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

public static void gotoSpringboard()

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

例6-19 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にはエラーが格納されます。

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

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

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

6.2.12 hideNavigationBar

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

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

public static void hideNavigationBar()

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

例6-21 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にはエラーが格納されます。

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

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

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

6.2.13 showNavigationBar

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

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

public static void showNavigationBar()

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

例6-23 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にはエラーが格納されます。

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

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

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

6.2.14 invokeMethod

このメソッドは、次のようにクラスパス内の任意のクラスからJavaメソッドを起動します。

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

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

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

パラメータ 説明

classname

Javaメソッドのコール時にADFモバイルがインスタンスを作成するために使用するクラス名(パッケージ情報を含む)

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);

6.2.15 invokeContainerJavaScriptFunction

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

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

パラメータ 説明

featureId

JavaScriptの起動コンテキストを決定するためにADFモバイルによって使用されるアプリケーション機能のID。このIDによって、このメソッドがコールされるWebビューが決まります。

method

起動させるメソッドの名前。

args

メソッドに渡される引数の配列。この配列内で、これらの引数はメソッドが期待する順序で並べられます。


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

例6-25 invokeContainerJavaScriptFunctionメソッド

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

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

  • APP ALERT 0

  • APP ALERT 1

  • APP ALERT 2

例6-26 appFunctions.js

(function() 
    {
       if (!window.application) window.application = {};
 
       application.testFunction = function()
       {
          var args = arguments;
 
          alert("APP ALERT " + args.length + " ");
          return "application.testFunction - passed";
       };
    })();

例6-27は、invokeApplicationJavaScriptFunctionメソッドによって、例6-26で記述されているJavaScriptメソッド(application.testFunction)をコールする方法を示しています。

例6-27 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 Fusion Middleware Oracle ADFモバイルJava APIリファレンスを参照してください。

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

public void invokeContainerJavaScriptFunction(success, failed)

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

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

6.3 getDirectoryPathRootメソッドを使用したファイル・アクセス

adfmfJavaUtilties APIには、getDirectoryPathRootメソッドが含まれています。このメソッドはJavaレイヤーからのみコールでき、iOSシステム上のファイルへのアクセスを可能にします。例6-28に示すように、このメソッドは、iOSアプリケーション・バンドル(.ipaファイル)にパッケージ化されているファイル、一時ファイルの場所およびデバイス上のキャッシュ・ディレクトリの場所へのアクセスを可能にします。oracle.adfmf.framework.api.AdfmfJavaUtilitiesの詳細は、Oracle Fusion Middleware Oracle ADFモバイルJava APIリファレンスを参照してください。

例6-28 iOSシステム上のファイルへのアクセス

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);
  
   }