Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.1.3 E67371-01 |
|
![]() 前 |
![]() 次 |
この章では、MAF JavaScript API拡張機能、MAFコンテナ・ユーティリティAPI、およびカスタムHTML SpringboardアプリケーションなどのHTMLアプリケーション機能を対象としたAdfmfJavaUtilities
APIの使用方法について説明します。
この章には次の項が含まれます:
JavaScriptを使用してJavaScript API拡張機能をコールすることで、HTMLで作成されたカスタムSpringboardページにナビゲーション機能を追加できます。第5.5項「HTMLコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」で説明したように、JavaScript <script>
タグにメソッドを追加することで、コールバックを有効にしてApache Cordovaを活用できます。次の例は、このタグを使用したCordovaのコール方法を示しています。
... <script type="text/javascript">if (!window.adf) window.adf = {}; adf.wwwPath = "/~maf.device~/www/js/base.js";</script> <script type="text/javascript" src="/~maf.device~/www/js/base.js"></script> ...
base.js
のインクルード時に仮想パス/~maf.device~/
を使用して、ブラウザがリクエストをリモート・サーバーではなくMAFリソースに対するものとして識別できるようにすることをお薦めします。このアプローチはリモートとローカルの両方のHTMLページで機能するので、(提供元にかかわらず) base.js
をHTML機能にインクルードする方法として最適です。詳細は、第21.1.2項「リモート・アプリケーションによるコンテナ・サービスへのアクセスの有効化」を参照してください。
注意: MAFは、base.js ライブラリ・ファイルの前にJQueryのカスタム・バージョンをすでにロードしている場合、JQuery JavaScriptファイルをロードしません。 |
ヒント: www/js ディレクトリにアクセス(およびその場所を確認)するには、まずMAFアプリケーションをデプロイした後、deploy ディレクトリに移動する必要があります。www/js ディレクトリは、デプロイメントによって生成された、プラットフォーム固有のアーティファクト内にあります。iOSデプロイメントの場合、このディレクトリはtemporary_xcode_project ディレクトリ内にあります。Androidデプロイメントの場合、このディレクトリはAndroidアプリケーション・パッケージ(.apk )ファイルのassets ディレクトリ内にあります。第5.5項「HTMLコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」も参照してください。 |
注意: 設計時にはパスが存在しないので、JavaScriptインクルードは、OEPEによってソース・エディタ内ではエラーとして赤い波型の下線で強調表示されます。このパスは実行時に解決されます。 |
Cordova APIに対するMAF拡張機能では、モバイル・デバイスのAPIによってmaf-feature.xml
およびmaf-application.xml
ファイルの構成メタデータにアクセスできるようになります。これにより、モバイル・デバイスとMAFのインフラストラクチャ間の通信が確立します。これらの拡張機能は、アプリケーション機能の表示動作も指示します。
デフォルトのMAF Springboardページ、springboard.amx
、およびカスタマイズされたSpringboardの構築に使用できるApplicationFeaturesデータ・コントロールの詳細は、第5.6項「MAF AMXコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」を参照してください。
次の例は、handlePageShown
コールバック関数のshowpagecomplete
イベントを定義するスクリプトを示しています。カスタムHTMLページ(ログイン・ページなど)では、MAFによって初めてそのページがロードおよび表示された後、標準的なDOM (Document Object Model)イベント・リスニングを使用してこのイベントをリスニングすることによって、ページに含まれる独自のコードを呼び出すことができます。
<script> function handlePageShown() { console.log("Page is shown!"); } document.addEventListener("showpagecomplete", handlePageShown, false); </script>
注意: showpagecomplete イベントを使用すると、MAFの適切な状態が保証されます。load やCordovaのdeviceready など、他のブラウザやサード・パーティのイベントを使用した場合、この状態は保証されない可能性があります。これらは使用しないでください。 |
MAFコンテナ・ユーティリティAPIのメソッドは、ナビゲーション・バーへの移動、Springboardの表示、アプリケーション機能の表示などの機能をMAFアプリケーションに提供します。これらのメソッドは、MAFのJavaおよびJavaScriptレイヤーで使用できます。
Javaでは、コンテナ・ユーティリティAPIは、静的メソッドとしてAdfmfContainerUtilities
クラスに実装されます。このクラスはoracle.adfmf.framework.api
パッケージにあります。次の例では、gotoSpringboard
メソッドをコールしています。oracle.adfmf.framework.api.AdfmfContainerUtilities
の詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。
import oracle.adfmf.framework.api.AdfmfContainerUtilities; ... AdfmfContainerUtilities.gotoSpringboard(); ...
JavaとJavaScriptのシグネチャは一致します。Javaでは、シグネチャは同期化され、直接結果が戻されます。JavaScriptは非同期なので、結果を返すsuccess
コールバックと、スローされた例外を戻すfailed
コールバック2つのコールバック関数が各関数に追加されます。Javaメソッドでは、success
値は関数またはメソッドから戻され、例外はメソッドから直接スローされます。次の例の疑似コードは、引数を使用しないコールpublic static functionName() throws
が、Java内でtry
およびcatch
ブロックを使用してどのように実行されるかを示しています。
... try { result = AdfmfContainerUtilities.functionName(); } catch() { ... } ...
JavaScriptのコールは非同期なので、関数の実行が完了した時点で、コールバック・メカニズムを通して戻す必要があります。次の例の疑似コードは、JavaScriptコールのシグネチャを示しています。
adf.mf.api.functionName( function(successFunction, failureFunction ) { alert("functionName complete"); }, function(successFunction, failureFunction ) { alert("functionName failed with " + adf.mf.util.stringify(failureFunction); } );
JavaScriptのコールは非同期なので、結果を戻すことができません。そのかわりに、関数の実行の完了時にコールバック・メカニズムが必要になります。成功および失敗のコールバックのシグネチャは、どちらもfunction(request, response)
です。ここでrequest
引数は実際のリクエストのJSON表現です。response
はメソッドから戻されたもののJSON表現です(success
コールバック関数の場合)。failed
コールバック関数の場合は、スローされた例外のJSON表現になります。
注意: JavaScriptコールを呼び出して、スタックの深度や競合状態などの問題を回避するには、その前にコールバック関数を呼び出す必要があります。 |
次の疑似コードは、public static <return value> <function name>(<arg0>, <arg1>, ...) throws <exceptions>
など、1つ以上の引数を使用するコールが、Java内でtry-catch
ブロックを使用してどのように実行されるかを示しています。
try { result = AdfmfContainerUtilities.<function_name>(<arg0>, <arg1>, ...); } catch(<exception>) { ... }
JavaScriptのコールは非同期なので、結果を戻すことができません。そのかわりに、関数の実行の完了時にコールバック・メカニズムが必要になります。成功および失敗のコールバックのシグネチャは、どちらもfunction(request, response)
です。ここでrequest
引数は実際のリクエストのJSON表現です。response
はメソッドから戻されたもののJSON表現です(success
コールバック関数の場合)。failed
コールバック関数の場合は、スローされた例外のJSON表現になります。
注意: JavaScriptコールを呼び出して、スタックの深度や競合状態などの問題を回避するには、その前にコールバック関数を呼び出す必要があります。 |
コンテナ・ユーティリティAPIでは、次のメソッドが提供されます。
getApplicationInformation: モバイル・アプリケーションのメタデータを取得します。
gotoDefaultFeature: デフォルトのアプリケーション機能を表示します。
getFeatures: アプリケーション機能を取得します。
gotoFeature: 特定のアプリケーション機能を表示します。
getFeatureByName: アプリケーション機能の名前を使用して、アプリケーション機能に関する情報を取得します。
getFeatureById: IDを使用してアプリケーション機能を取得します。
resetFeature: アプリケーション機能をロード時の状態にリセットします。
gotoSpringboard: Springboardを表示します。
hideNavigationBar: ナビゲーション・バーを非表示にします。
showNavigationBar: ナビゲーション・バーを表示します。
invokeMethod: Javaメソッドを起動します。
invokeContainerJavaScriptFunction: JavaScriptメソッドを起動します。
コンテナ・ユーティリティAPIには、アプリケーションにバッジおよびバッジ番号を設定するためのメソッドが含まれています。詳細は、第B.2.15項「アプリケーション・アイコンへのバッジ設定」を参照してください。
このメソッドは、アプリケーションに関する情報を格納したApplicationInformation
オブジェクトを戻します。このメソッドでは、アプリケーションID、アプリケーション名、バージョン、アプリケーションのベンダーといったメタデータが戻されます。
Javaでは、このメソッドは次のようにコールされます。
public static oracle.adfmf.framework.ApplicationInformation getApplicationInformation() throws oracle.adfmf.framework.exception.AdfException
次の例は、このメソッドのコール方法を示しています。
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にはエラーが格納されます。
次の例は、これらのコールバック関数を使用してアプリケーション情報を取得する方法を示しています。
adf.mf.api.getApplicationInformation( function(req, res) { alert("getApplicationInformation complete"); }, function(req, res) { alert("getApplicationInformation failed with " + adf.mf.util.stringify(res); } );
このメソッドは、MAFがデフォルトのアプリケーション機能を表示するようにリクエストします。デフォルトのアプリケーション機能とは、モバイル・アプリケーションの起動時に表示されるアプリケーション機能です。
注意: 認証関連または許可関連の問題が発生している場合、このメソッドではアプリケーション機能を表示できないことがあります。 |
JavaScriptでは、次のように、success
およびfailed
コールバック関数によって、戻り値と例外をJavaScriptのコール元コードに戻すことができます。
public void gotoDefaultFeature(success, failed)
success
コールバック関数はfunction(request, response)
という形式にする必要があります。このrequest
引数には元のリクエストが格納され、response
引数には関連するAdfmfContainerUtilities
メソッドの戻り値(void
)が格納されます。
failed
コールバック関数はfunction(request, response)
という形式にする必要があります。このrequest
引数には元のリクエストが格納され、response
引数にはエラーが格納されます。
次の例は、これらのコールバック関数を使用してデフォルトのアプリケーション機能をコールする方法を示しています。
adf.mf.api.gotoDefaultFeature( function(req, res) { alert("gotoDefaultFeature complete"); }, function(req, res) { alert("gotoDefaultFeature failed with " + adf.mf.util.stringify(res); } );
このメソッドは、使用可能なアプリケーション機能を表すFeatureInformation
オブジェクトの配列を戻します。戻されるメタデータには、機能ID、アプリケーション機能名およびアプリケーション・アイコンに使用するイメージ・ファイルの場所が含まれます。このコールにより、カスタムSpringboardの実装は、制約の適用後に使用可能になるアプリケーション機能のリストにアクセスできるようになります。(これらのアプリケーション機能もデフォルトのSpringboardに表示されることがあります。)
Javaでは、このメソッドは次のようにコールされます。
public static oracle.adfmf.framework.FeatureInformation[] getFeatures() throws oracle.adfmf.framework.exception.AdfException
次の例は、このメソッドの使用方法を示しています。
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
)が格納されます。
adf.mf.api.getFeatures( function(req, res) { alert("getFeatures complete"); }, function(req, res) { alert("getFeatures failed with " + adf.mf.util.stringify(res); } );
このメソッドは、MAFが、IDによって識別されたアプリケーション機能を表示するようにリクエストします。
注意: 認証関連または許可関連の問題が発生している場合、このメソッドではアプリケーション機能を表示できないことがあります。 |
Javaでは、このメソッドは次のようにコールされます。
public static void gotoFeature(java.lang.String featureId) throws oracle.adfmf.framework.exception.AdfException
次の例に示すように、このメソッドのパラメータはアプリケーション機能のIDです。
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にはエラーが格納されます。
次の例は、これらのコールバック関数を使用してアプリケーション機能をコールする方法を示しています。
adf.mf.api.gotoFeature("feature0", function(req, res) { alert("gotoFeature complete"); }, function(req, res) { alert("gotoFeature failed with " + adf.mf.util.stringify(res); } );
このメソッドは、渡されたアプリケーション機能の名前を使用して、アプリケーション機能に関する情報を戻します。
Javaでは、このメソッドは次のようにコールされます。
public static oracle.adfmf.framework.FeatureInformation getFeatureByName(java.lang.String featureName) throws oracle.adfmf.framework.exception.AdfException
次の例に示すように、このメソッドのパラメータはアプリケーション機能の名前です。
... 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にはエラーが格納されます。
次の例は、これらのコールバック関数の使用方法を示しています。
adf.mf.api.getFeatureByName("feature.name", function(req, res) { alert("getFeatureByName complete"); }, function(req, res) { alert("getFeatureByName failed with " + adf.mf.util.stringify(res); } );
このメソッドは、アプリケーションIDを使用してアプリケーション機能を取得します。
Javaでは、このメソッドは次のようにコールされます。
import oracle.adfmf.framework.api.AdfmfContainerUtilties;
次の例に示すように、このメソッドのパラメータはアプリケーション機能の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にはエラーが格納されます。
次の例は、これらのコールバック関数を使用してアプリケーション機能を取得する方法を示しています。
adf.mf.api.getFeatureById("feature.id", function(req, res) { alert("getFeatureById complete"); }, function(req, res) { alert("getFeatureById failed with " + adf.mf.util.stringify(res); } );
このメソッドは、アプリケーション機能の状態をリセットします。このメソッドでは、アプリケーション機能のJava側のモデルをリセットして、モバイル・アプリケーションがロードされ、最初にアプリケーション機能が表示されたときのようにユーザー・インタフェース・プレゼンテーションを再起動します。
Javaでは、このメソッドは次のようにコールされます。
public static void resetFeature(java.lang.String featureId) throws oracle.adfmf.framework.exception.AdfException
次の例に示すように、このメソッドのパラメータはリセットされるアプリケーション機能のIDです。
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にはエラーが格納されます。
次の例は、これらのコールバック関数を使用してアプリケーション機能をコールする方法を示しています。
adf.mf.api.resetFeature("feature0", function(req, res) { alert("resetFeature complete"); }, function(req, res) { alert("resetFeature failed with " + adf.mf.util.stringify(res); } );
このメソッドは、MAFがSpringboardをアクティブ化するようにリクエストします。
注意: maf-application.xml ファイルで機能参照として指定されていない場合や、認証関連または許可関連の問題が発生している場合、このメソッドではSpringboardを表示できないことがあります。第5.1項「MAFアプリケーションの表示動作の概要」も参照してください。 |
Javaでは、このメソッドは次のようにコールされます。
public static void gotoSpringboard()
次の例は、このメソッドの使用方法を示しています。
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にはエラーが格納されます。
次の例は、これらのコールバック関数の使用方法を示しています。
adf.mf.api.gotoSpringboard( function(req, res) { alert("gotoSpringboard complete"); }, function(req, res) { alert("gotoSpringboard failed with " + adf.mf.util.stringify(res); } );
このメソッドは、MAFがナビゲーション・バーを非表示にするようにリクエストします。
Javaでは、このメソッドは次のようにコールされます。
public static void hideNavigationBar()
次の例は、このメソッドの使用方法を示しています。
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にはエラーが格納されます。
次の例は、これらのコールバック関数の使用方法を示しています。
adf.mf.api.hideNavigationBar( function(req, res) { alert("hideNavigationBar complete"); }, function(req, res) { alert("hideNavigationBar failed with " + adf.mf.util.stringify(res); } );
このメソッドは、MAFがナビゲーション・バーを表示するようにリクエストします。
Javaでは、このメソッドは次のようにコールされます。
public static void showNavigationBar()
次の例は、このメソッドの使用方法を示しています。
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にはエラーが格納されます。
次の例は、これらのコールバック関数の使用方法を示しています。
adf.mf.api.showNavigationBar( function(req, res) { alert("showNavigationBar complete"); }, function(req, res) { alert("showNavigationBar failed with " + adf.mf.util.stringify(res); } );
このメソッドは、Javaでは提供されません。次の例は、JavaScriptのコールバック・メソッドを使用して、クラスパスに含まれる任意のクラスからJavaメソッドを起動する方法を示しています。
adf.mf.api.invokeMethod(classname, methodname, param1, param2, ... paramN, successCallback, failedCallback);
表B-1に、このメソッドによって取得されるパラメータを示します。
表B-1 invokeJavaMethodに渡されるパラメータ
パラメータ | 説明 |
---|---|
|
Javaメソッドのコール時にMAFがインスタンスを作成するために使用するクラス名(パッケージ情報を含む) |
|
|
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);
invokeContainerJavaScriptFunction
は、JavaScriptメソッドを起動します。表B-2に、このメソッドによって渡されるパラメータを示します。
表B-2 invokeContainerJavaScriptFunctionに渡されるパラメータ
パラメータ | 説明 |
---|---|
|
JavaScriptの起動コンテキストを決定するためにMAFによって使用されるアプリケーション機能のID。このIDによって、このメソッドがコールされるWebビューが決まります。 |
|
起動させるメソッドの名前。 |
|
メソッドに渡される引数の配列。この配列内で、これらの引数はメソッドが期待する順序で並べられます。 |
このメソッドは、JSONオブジェクトを戻します。
注意: invokeContainerJavaScriptFunction APIは、アプリケーションがAndroidデバイスまたはエミュレータ上で実行される場合、JavaScript関数が15秒以内に完了することを予期します。完了しなかった場合は、タイムアウト・エラーを戻します。 |
public static java.lang.Object invokeContainerJavaScriptFunction(java.lang.String featureId, java.lang.Object[] args) throws oracle.adfmf.framework.exception.AdfException
次の例の疑似コードは、feature1
という名前のアプリケーション機能に含まれるappFunctions.js
という名前のJavaScriptファイルを示しています。このファイル内で記述されているJavaScriptメソッド、application.testFunction
は、invokeContainerJavaScriptFunction
メソッドによってコールされます(次の2番目の例を参照)。アプリケーションには、この関数をコールするアクション・リスナーで構成されるコマンド・ボタンが含まれているので、ユーザーがこのボタンをクリックすると、次のようなアラートが表示されます。
APP ALERT 0
APP ALERT 1
APP ALERT 2
(function() { if (!window.application) window.application = {}; application.testFunction = function() { var args = arguments; alert("APP ALERT " + args.length + " "); return "application.testFunction - passed"; }; })();
次の例の疑似コードは、invokeApplicationJavaScriptFunction
メソッドによって、前述の例で記述されているJavaScriptメソッド(application.testFunction
)をコールする方法を示しています。
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サンプル」にあります。
AdfmfContainerUtilities
クラスには、モバイル・アプリケーション・アイコンにバッジ番号を設定したり、その番号を取得するためのメソッドが含まれています。表B-3に、これらのメソッドを示します。
表B-3 アイコンへのバッジ設定メソッド
メソッド | 説明 | パラメータ |
---|---|---|
|
モバイル・アプリケーションのアイコンに現在設定されているバッジの値を取得します。アプリケーション・アイコンにバッジが設定されていない場合は、ゼロ(0)を戻します。 |
なし |
|
モバイル・アプリケーションのアイコンにバッジ番号を設定します。 |
バッジの値( |
注意: アプリケーション・アイコンへのバッジ設定は、Androidではサポートされていません。 |
adfmfJavaUtilties
APIには、getDirectoryPathRoot
メソッドが含まれています。このメソッドは、iOSシステムとAndroidシステムの両方で使用できます。Javaレイヤーからのみコールできるこのメソッドを使用すると、次の例に示すとおり、デバイス上の一時ファイル、アプリケーション・ファイル(iOSシステム上)およびキャッシュ・ディレクトリの場所に、TemporaryDirectory
、ApplicationDirectory
およびDeviceOnlyDirectory
定数を使用してそれぞれアクセスできます。DeviceOnlyDirectory
の場所に格納されたファイルは、デバイスの接続時には同期されません。
注意: アプリケーションからディレクトリまたはファイルへのアクセスを試みる前に、それらのディレクトリまたはファイルが存在することを確認してください。 |
oracle.adfmf.framework.api.AdfmfJavaUtilities
の詳細は、Oracle Mobile Application Framework Java APIリファレンスを参照してください。
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); }
ファイル記憶域の要件は、プラットフォームによって異なります。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』
も参照してください。