Home
/
Middleware
/
Oracle Mobile Application Framework
1/41
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
What's New in This Guide for Release 2.1.0
1
Introduction to Oracle Mobile Application Framework
1.1
Introduction to the Mobile Application Framework
1.2
About the MAF Runtime Architecture
1.3
About Developing Applications with MAF
1.3.1
About Connected and Disconnected Applications
1.4
Sample Applications
2
Getting Started with MAF Application Development
2.1
Introduction to Declarative Development for MAF Applications
2.2
Creating a MAF Application
2.2.1
How to Create a Workspace for a Mobile Application
2.2.2
What Happens When You Create an MAF Application
2.2.2.1
About the Assembly-Level Resources
2.2.2.2
About the View Project Resources
2.2.2.3
About Deployment Configurations
2.2.3
What You May Need to Know About Editing MAF Applications and Application Features
2.2.4
About the MAF Application Editor and MAF Feature Editor
2.2.5
Creating a MAF AMX Page
2.2.5.1
How to Create an MAF AMX Page
2.2.5.2
How to Create MAF Task Flows
2.2.5.3
What Happens When You Create MAF AMX Pages and Task Flows
3
Configuring the Content of a MAF Application
3.1
Introduction to Defining Mobile Applications
3.1.1
About the MAF Application Editor
3.1.2
About the Mobile Feature Editor
3.2
Using the Oracle MAF Perspective
3.3
How to Define the Basic Information for an Application Feature
3.4
How to Set the ID and Display Behavior for a Mobile Application
4
Configuring MAF Application Features
4.1
Introduction to MAF Application Features
4.2
Configuring the Application Features within a Mobile Application
4.2.1
How to Designate the Content for a Mobile Application
4.3
Creating a Sliding Window in Your MAF Application
5
Configuring the Application Navigation
5.1
Configuring the Springboard and Navigation Bar Behavior
5.1.1
How to Configure Application Navigation
5.1.2
What Happens When You Configure the Navigation Options
5.1.3
What Happens When You Set the Animation for the Springboard
5.1.4
What You May Need to Know About Custom Springboard Application Features with HTML Content
5.1.5
What You May Need to Know About Custom Springboard Application Features with MAF AMX Content
5.1.6
What You May Need to Know About the Runtime Springboard Behavior
6
Defining the Content Type of MAF Application Features
6.1
Introduction to Content Types for an Application Feature
6.2
How to Define the Application Feature Content as Remote URL or Local HTML
6.3
What You May Need to Know About Selecting External Resources
7
Localizing MAF Applications
7.1
Introduction to MAF Application Localization
7.1.1
Working with Resource Bundles
7.1.1.1
How to Enter a String in a Resource Bundle
7.1.1.2
What Happens When You Add a Resource Bundle
7.1.1.3
How to Localize Strings in MAF AMX Components
7.1.1.4
What Happens When You Create Project-Level Resource Bundles for MAF AMX Components
7.1.1.5
What You May Need to Know About Localizing Image Files
7.1.1.6
How to Edit a Resource Bundle File
7.1.1.7
What You May Need to Know About XLIFF Files for iOS Applications
7.1.1.8
Internationalization for iOS Applications
8
Skinning MAF Applications
8.1
Introduction to Mobile Application Skins
8.1.1
About the maf-skins.xml File
8.1.2
What You May Need to Know About MAF Styles
8.1.3
About the maf-skins.xml File
8.1.4
How to Add a Custom Skin to an Application
8.1.5
How to Specify a Skin for an Application to Use
8.1.6
How to Register a Custom Skin
8.1.7
How to Version MAF Skins
8.1.8
What Happens When You Version Skins
8.1.9
Overriding the Default Skin Styles
8.1.9.1
How to Apply New Style Classes to an Application Feature
8.1.10
What You May Need to Know About Skinning
8.1.11
Enabling Dynamic Skin Selection at Runtime
8.1.11.1
How to Enable End Users Change an Application's Skin at Runtime
8.1.11.2
What Happens at Runtime: How End Users Change an Application's Skin
9
Reusing the MAF Application Content
9.1
Working with Feature Archive Files
9.1.1
Importing a FAR as an Application Library
9.1.2
What You May Need to Know About Using a FAR to Update the sync-config.xml File
9.2
What Happens When You Add a FAR as a View Controller Project
9.3
What You May Need to Know About Enabling the Reuse of Feature Archive Resources
10
Using Plugins in MAF Applications
10.1
Introduction to Integrating Plugins in MAF Applications
10.2
Enabling Core Plugins in Your MAF Application
10.2.1
How to Enable a Core Plugin in Your MAF Application
10.2.2
What Happens When You Enable a Core Plugin in Your MAF Application
10.3
Registering Additional Plugins in Your MAF Application
10.3.1
How to Register an Additional Plugin
10.3.2
What Happens When You Register an External Plugin for Your MAF Application
10.4
Using Plugins From a Cordova Registry
10.4.1
How to Use Plugins From a Cordova Registry
10.4.2
What Happens When You Use Plugins From a Cordova Registry
10.5
Using External Plugins in a Team Environment
10.5.1
How to Use External Plugins in a Team Environment
10.6
Using Plugins in your MAF Application
10.6.1
How to Specify plugins for Registered Features
10.7
Deploying Plugins with Your MAF Application
10.8
Importing Plugins from a FAR
10.8.1
How to Import Plugins from a FAR
11
Using Lifecycle Listeners in MAF Applications
11.1
About Using Lifecycle Event Listeners in MAF Applications
11.1.1
Events in Mobile Applications
11.1.2
Timing for Mobile Application Events
11.1.3
Using the activate and deactivate Methods to Save Application State
11.2
About Application Feature Lifecycle Listener Classes
11.2.1
Timing for Activate and Deactivate Events in the Application Feature Lifecycle
11.2.2
Enabling Sliding Windows
12
Creating MAF AMX Pages
12.1
Introduction to the MAF AMX Application Feature
12.2
Creating Task Flows
12.2.1
How to Create a Task Flow
12.2.2
What You May Need to Know About Task Flow Activities and Control Flows
12.2.3
What You May Need to Know About the task-flow-definition.xml File
12.2.4
What You May Need to Know About the MAF Task Flow Diagrammer
12.2.5
How to Add and Use Task Flow Activities
12.2.5.1
Adding View Activities
12.2.5.2
Adding Router Activities
12.2.5.3
Adding Method Call Activities
12.2.5.4
Adding Task Flow Call Activities
12.2.5.5
Adding Task Flow Return Activities
12.2.5.6
Using Task Flow Activities with Page Definition Files
12.2.6
How to Define Control Flows
12.2.6.1
Defining a Control Flow Case
12.2.6.2
Adding a Wildcard Control Flow Rule
12.2.6.3
What You May Need to Know About Control Flow Rule Metadata
12.2.6.4
What You May Need to Know About Control Flow Rule Evaluation
12.2.7
What You May Need to Know About MAF Support for Back Navigation
12.2.8
How to Enable Page Navigation by Dragging
12.2.9
How to Specify Action Outcomes Using UI Components
12.2.10
How to Create and Reference Managed Beans
12.2.11
How to Specify the Page Transition Style
12.2.12
What You May Need to Know About Bounded and Unbounded Task Flows
12.2.12.1
Unbounded Task Flows
12.2.12.2
Bounded Task Flows
12.2.12.3
Using Parameters in Task Flows
12.3
Creating Views
12.3.1
How to Work with MAF AMX Pages
12.3.1.1
Interpreting the MAF AMX Page Structure
12.3.1.2
Creating MAF AMX Pages
12.3.1.3
What Happens When You Create an MAF AMX Page
12.3.1.4
Using UI Editors
12.3.1.5
Accessing the Page Definition File
12.3.1.6
Sharing the Page Contents
12.3.2
How to Add UI Components and Data Controls to an MAF AMX Page
12.3.2.1
Adding UI Components
12.3.2.2
Using the Preview
12.3.2.3
Adding Data Controls to the View
12.3.2.4
What You May Need to Know About Element Identifiers and Their Audit
12.3.3
What You May Need to Know About the Server Communication
13
Creating the MAF AMX User Interface
13.1
Introduction to Creating the User Interface for MAF AMX Pages
13.2
Designing the Page Layout
13.2.1
How to Use a View Component
13.2.2
How to Use a Panel Page Component
13.2.3
How to Use a Panel Group Layout Component
13.2.3.1
Customizing the Scrolling Behavior
13.2.4
How to Use a Panel Form Layout Component
13.2.5
How to Use a Panel Stretch Layout Component
13.2.6
How to Use a Panel Label And Message Component
13.2.7
How to Use a Facet Component
13.2.8
How to Use a Popup Component
13.2.9
How to Use a Panel Splitter Component
13.2.10
How to Use a Spacer Component
13.2.11
How to Use a Table Layout Component
13.2.12
How to Use a Deck Component
13.2.13
How to Use the Fragment Component
13.3
Creating and Using UI Components
13.3.1
How to Use the Input Text Component
13.3.1.1
Customizing the Input Text Component
13.3.2
How to Use the Input Number Slider Component
13.3.3
How to Use the Input Date Component
13.3.4
How to Use the Output Text Component
13.3.5
How to Use Buttons
13.3.5.1
Displaying Default Style Buttons
13.3.5.2
Displaying Back Style Buttons
13.3.5.3
Displaying Highlight Style Buttons
13.3.5.4
Displaying Alert Style Buttons
13.3.5.5
Using Additional Button Styles
13.3.5.6
Using Buttons Within the Application
13.3.5.7
Enabling the Back Button Navigation
13.3.5.8
What You May Need to Know About the Order of Processing Operations and Attributes
13.3.6
How to Use Links
13.3.7
How to Display Images
13.3.8
How to Use the Checkbox Component
13.3.8.1
Support for Checkbox Components on iOS Platform
13.3.8.2
Support for Checkbox Components on Android Platform
13.3.9
How to Use the Boolean Switch Component
13.3.9.1
What You May Need to Know About Support for Boolean Switch Components on iOS Platform
13.3.9.2
What You May Need to Know About Support for Boolean Switch Components on Android Platform
13.3.10
How to Use the Select Many Checkbox Component
13.3.10.1
What You May Need to Know About the User Interaction with Select Many Checkbox Component
13.3.11
How to Use the Select Many Choice Component
13.3.12
How to Use the Select Button Component
13.3.13
How to Use the Radio Button Component
13.3.14
How to Use the Choice Component
13.3.14.1
What You May Need to Know About the User Interaction with Choice Component on iOS Platform
13.3.14.2
What You May Need to Know About the User Interaction with Choice Component on Android Platform
13.3.14.3
What You May Need to Know About Differences Between Select Items and Select Item Components
13.3.15
How to Use List View and List Item Components
13.3.15.1
Configuring Paging and Dynamic Scrolling
13.3.15.2
Rearranging List View Items
13.3.15.3
Configuring The List View Layout
13.3.15.4
What You May Need to Know About Using a Static List View
13.3.16
How to Use the Carousel Component
13.3.17
How to Use the Film Strip Component
13.3.17.1
What You May Need to Know About the Film Strip Layout
13.3.17.2
What You May Need to Know About the Film Strip Navigation
13.3.18
How to Use Verbatim Component
13.3.18.1
What You May Need to Know About Using JavaScript and AJAX with Verbatim Component
13.3.19
How to Use Output HTML Component
13.3.20
How to Enable Iteration
13.3.21
How to Load a Resource Bundle
13.3.22
How to Use the Action Listener
13.3.22.1
What You May Need to Know About Differences Between the Action Listener Component and Attribute
13.3.23
How to Use the Set Property Listener
13.3.24
How to Convert Date and Time Values
13.3.24.1
What You May Need to Know About Date and Time Patterns
13.3.25
How to Convert Numerical Values
13.3.26
How to Enable Drag Navigation
13.3.26.1
What You May Need to Know About the disabled Attribute
13.3.27
How to Use the Loading Indicator
13.4
Enabling Gestures
13.5
Providing Data Visualization
13.5.1
How to Create an Area Chart
13.5.2
How to Create a Bar Chart
13.5.3
How to Create a Horizontal Bar Chart
13.5.4
How to Create a Bubble Chart
13.5.5
How to Create a Combo Chart
13.5.6
How to Create a Line Chart
13.5.7
How to Create a Pie Chart
13.5.8
How to Create a Scatter Chart
13.5.9
How to Create a Spark Chart
13.5.10
How to Create a Funnel Chart
13.5.11
How to Style Chart Components
13.5.12
How to Use Events with Chart Components
13.5.13
How to Create an LED Gauge
13.5.14
How to Create a Status Meter Gauge
13.5.15
How to Create a Dial Gauge
13.5.16
How to Create a Rating Gauge
13.5.16.1
Applying Custom Styling to the Rating Gauge Component
13.5.17
How to Define Child Elements for Chart and Gauge Components
13.5.17.1
Defining Chart Data Item
13.5.17.2
Defining Legend
13.5.17.3
Defining X Axis, YAxis, and Y2Axis
13.5.17.4
Defining Pie Data Item
13.5.17.5
Defining Spark Data Item
13.5.17.6
Defining Funnel Data Item
13.5.17.7
Defining Threshold
13.5.18
How to Create a Geographic Map Component
13.5.18.1
Configuring Geographic Map Components With the Map Provider Information
13.5.19
How to Create a Thematic Map Component
13.5.19.1
Defining Custom Markers
13.5.19.2
Defining Isolated Area Layers
13.5.19.3
Defining Isolated Areas
13.5.19.4
Enabling Initial Zooming
13.5.19.5
Defining a Custom Base Map
13.5.19.6
What You May Need to Know About the Marker Support for Event Listeners
13.5.19.7
Applying Custom Styling to the Thematic Map Component
13.5.20
How to Use Events with Map Components
13.5.21
How to Create a Treemap Component
13.5.21.1
Applying Custom Styling to the Treemap Component
13.5.22
How to Create a Sunburst Component
13.5.22.1
Applying Custom Styling to the Sunburst Component
13.5.23
How to Create a Timeline Component
13.5.23.1
Applying Custom Styling to the Timeline Component
13.5.24
How to Create an NBox Component
13.5.25
How to Define Child Elements for Map Components, Sunburst, Treemap, Timeline, and NBox
13.5.26
How to Create Databound Data Visualization Components
13.5.26.1
What You May Need to Know About Setting Series Style for Databound Chart Components
13.5.27
How to Enable Interactivity in Chart Components
13.5.28
How to Create Polar Charts
13.6
Styling UI Components
13.6.1
How to Use Component Attributes to Define Style
13.6.2
How to Work with Built-in and Inline Style Classes
13.6.3
What You May Need to Know About Skinning
13.6.4
How to Style Data Visualization Components
13.7
Localizing UI Components
13.8
Understanding MAF Support for Accessibility
13.8.1
How to Configure UI and Data Visualization Components for Accessibility
13.8.2
What You May Need to Know About the Basic WAI-ARIA Terms
13.8.3
What You May Need to Know About the Oracle Global HTML Accessibility Guidelines
13.9
Validating Input
13.10
Using Event Listeners
13.10.1
What You May Need to Know About Constrained Type Attributes for Event Listeners
14
Using Bindings and Creating Data Controls in MAF AMX
14.1
Introduction to Bindings and Data Controls
14.2
About Object Scope Lifecycles
14.2.1
What You May Need to Know About Object Scopes and Task Flows
14.3
Creating EL Expressions
14.3.1
About Data Binding EL Expressions
14.3.2
How to Create an EL Expression
14.3.2.1
About the Method Expression Builder
14.3.2.2
About Non EL-Properties
14.3.3
What You May Need to Know About MAF Binding Properties
14.3.4
How to Reference Binding Containers
14.3.5
About the Categories in the Expression Builder
14.3.5.1
About the Bindings Category
14.3.5.2
About the Managed Beans Category
14.3.5.3
About the Mobile Application Framework Objects Category
14.3.6
About EL Events
14.3.7
How to Use EL Expressions Within Managed Beans
14.4
Creating and Using Managed Beans
14.4.1
How to Create a Managed Bean in OEPE
14.4.2
What Happens When You Use OEPE to Create a Managed Bean
14.5
Exposing Business Services with Data Controls
14.5.1
How to Create Data Controls
14.5.2
What Happens in Your Project When You Create a Data Control
14.5.2.1
The Data Control Manager
14.5.2.2
The Palette
14.5.3
Data Control Built-in Operations
14.6
Creating Databound UI Components from the Data Controls Palette
14.6.1
How to Use the Data Controls Palette
14.6.2
What Happens When You Use the Data Controls Palette
14.7
What Happens at Runtime: How the Binding Context Works
14.8
Working with Data Control Attributes
14.8.1
Setting UI Hints on Attributes
14.9
Creating and Using Bean Data Controls
14.9.1
What You May Need to Know About Serialization of Bean Class Variables
14.10
Using the DeviceFeatures Data Control
14.10.1
How to Use the getPicture Method to Enable Taking Pictures
14.10.2
How to Use the SendSMS Method to Enable Text Messaging
14.10.3
How to Use the sendEmail Method to Enable Email
14.10.4
How to Use the createContact Method to Enable Creating Contacts
14.10.5
How to Use the findContacts Method to Enable Finding Contacts
14.10.6
How to Use the updateContact Method to Enable Updating Contacts
14.10.7
How to Use the removeContact Method to Enable Removing Contacts
14.10.8
How to Use the startLocationMonitor Method to Enable Geolocation
14.10.9
How to Use the displayFile Method to Enable Displaying Files
14.10.10
Device Properties
14.11
Validating Attributes
14.12
About Data Change Events
15
Using Web Services in MAF AMX
15.1
Introduction to Using Web Services in MAF Applications
15.2
Creating Web Service Data Controls Using SOAP
15.2.1
How to Create a Web Service Data Control Using SOAP
15.2.2
What You May Need to Know About Web Service Data Controls
15.2.3
How to Customize SOAP Headers in Web Service Data Controls
15.3
Creating a New Web Service Connection
15.4
Adjusting the Endpoint for a Web Service Data Control
15.5
Accessing Secure Web Services
15.5.1
How to Enable Access to SOAP-Based Web Services
15.5.2
What You May Need to Know About Credential Injection
15.5.3
Limitations of Secure WSDL File Usage
15.6
Invoking Web Services From Java
15.6.1
How to Add and Delete Rows on Web Services Objects
15.6.2
What You May Need to Know About Invoking Data Control Operations
15.7
Configuring the Browser Proxy Information
16
Working with REST Services
16.1
Introduction to Working with REST Services
16.1.1
REST Client Page
16.1.2
REST API Page
16.1.3
Data Types Page
16.1.4
Using Authentication
16.1.5
How to Open the REST Service Editor
16.1.6
How to Create a REST Service Description
16.2
Using the REST Client
16.2.1
Specifying REST Service Connections
16.2.1.1
How to Enter a Simple URI
16.2.1.2
How to Compose an Address to a REST Service
16.2.1.3
How to Include Queries in the Request
16.2.1.4
How to Include Fragments in the Request
16.2.1.5
How to Use Connection Names from the Application
16.2.1.6
How to Create Persistent Connections
16.2.1.7
How to Use Authentication
16.2.2
Sending Requests to the REST Service
16.2.3
What Happens When You Send a Request
16.3
Modifying the Request Content
16.3.1
How to Use REST Headers in the Request
16.3.2
How to Use Query Parameters to Configure the Response.
16.3.3
How to Send Input
16.3.4
How to Specify Output
16.4
Modeling the REST API
16.4.1
Importing REST Client Information
16.4.2
What Happens When You Import REST Client Information
16.4.3
Manually Modeling the REST API
16.4.3.1
How to Create New Requests
16.4.3.2
How to Create New Paths
16.5
Modeling Data Types
16.5.1
How to Create Data Types
16.5.2
How to Import Data Types
16.6
Testing Modeled Requests Against the REST Service
16.7
Creating REST Service Artifacts
16.7.1
How to Generate Java Artifacts for REST Services
16.7.2
What Happens When You Generate Java Artifacts
16.7.3
About the Generated Artifacts for REST Services
16.7.3.1
Generated Data Type Artifacts
16.7.3.2
Generated REST API Artifacts
16.7.3.3
Generated Service Artifacts
16.7.4
How to Use the Generated Artifacts in Your MAF Application
17
Configuring End Points Used in MAF Applications
17.1
Introduction to Configuring End Points
17.2
Defining the Configuration Service End Point
17.3
Creating the User Interface for the Configuration Service
17.4
About the URL Construction
17.5
Setting Up the Configuration Service on the Server
17.6
Migrating the Configuration Service API
18
Using the Local Database in MAF AMX
18.1
Introduction to the Local SQLite Database Usage
18.1.1
Differences Between SQLite and Other Relational Databases
18.1.1.1
Concurrency
18.1.1.2
SQL Support and Interpretation
18.1.1.3
Data Types
18.1.1.4
Foreign Keys
18.1.1.5
Database Transactions
18.1.1.6
Authentication
18.2
Using the Local SQLite Database
18.2.1
How to Connect to the Database
18.2.2
How to Use SQL Script to Initialize the Database
18.2.3
How to Initialize the Database on a Desktop
18.2.4
What You May Need to Know About Commit Handling
18.2.5
Limitations of the MAF's SQLite JDBC Driver
18.2.6
How to Use the VACUUM Command
18.2.7
How to Encrypt and Decrypt the Database
18.2.8
What You May Need to Know About the StockTracker Sample Application
19
Creating Custom MAF AMX UI Components
19.1
Introduction to Creating Custom UI Components
19.2
Using MAF APIs to Create Custom Components
19.2.1
How to Use Static APIs
19.2.2
How to Use AmxEvent Classes
19.2.3
How to Use the TypeHandler
19.2.4
How to Use the AmxNode
19.2.5
How to Use the AmxTag
19.2.6
How to Use the VisitContext
19.2.7
How to Use the AmxAttributeChange
19.2.8
How to Use the AmxDescendentChanges
19.2.9
How to Use the AmxCollectionChange
19.2.10
How to Use the AmxNodeChangeResult
19.2.11
How to Use the AmxNodeStates
19.2.12
How to Use the AmxNodeUpdateArguments
19.3
Creating Custom Components
20
Implementing Application Feature Content Using Remote URLs
20.1
Overview of Remote URL Applications
20.1.1
Enabling Remote Applications to Access Device Services through Whitelists
20.1.2
Enabling Remote Applications to Access Container Services
20.1.3
How Whitelisted Domains Access Device Capabilities
20.1.4
How to Create a Whitelist (or Restrict a Domain)
20.1.5
What Happens When You Add Domains to a Whitelist
20.1.6
What You May Need to Know About Remote URLs
20.2
Creating Whitelists for Application Components
20.3
Enabling the Browser Navigation Bar on Remote URL Pages
20.3.1
How to Add the Navigation Bar to a Remote URL Application Feature
20.3.2
What Happens When You Enable the Browser Navigation Buttons for a Remote URL Application Feature
20.4
Invoking MAF Applications Using a Custom URL Scheme
20.5
About Authoring Remote Content
21
Enabling User Preferences
21.1
Creating User Preference Pages for a Mobile Application
21.1.1
How to Create Mobile Application-Level Preferences Pages
21.1.1.1
How to Create a New User Preference Page
21.1.1.2
What Happens When You Add a Preference Page
21.1.1.3
How to Create User Preference Lists
21.1.1.4
What Happens When You Create a Preference List
21.1.1.5
How to Create a Boolean Preference List
21.1.1.6
What Happens When You Add a Boolean Preference
21.1.1.7
How to Add a Text Preference
21.1.1.8
What Happens When You Define a Text Preference
21.1.2
What Happens When You Create an Application-Level Preference Page
21.2
Creating User Preference Pages for Application Features
21.3
Using EL Expressions to Retrieve Stored Values for User Preference Pages
21.3.1
What You May Need to Know About preferenceScope
21.3.2
Reading Preference Values in iOS Native Views
21.4
Platform-Dependent Display Differences
22
Setting Constraints on Application Features
22.1
Introduction to Constraints
22.1.1
Using Constraints to Show or Hide an Application Feature
22.1.2
Using Constraints to Deliver Specific Content Types
22.2
Defining Constraints for Application Features
22.2.1
How to Define the Constraints for an Application Feature
22.2.2
What Happens When You Define a Constraint
22.2.3
About the property Attribute
22.2.4
About User Constraints and Access Control
22.2.5
About Hardware-Related Constraints
22.2.6
Creating Dynamic Constraints on Application Features and Content
22.2.6.1
About Combining Static and EL-Defined Constraints
22.2.6.2
How to Define a Dynamic Constraint
23
Using AppXray for MAF Artifacts
23.1
Introduction to Using AppXray for MAF Artifacts
23.2
Using AppXray
23.2.1
How to Open AppXaminer
23.2.1.1
About AppXaminer
23.2.2
Using AppXaminer
23.3
Refactoring with AppXray
24
Accessing Data on Oracle Cloud
24.1
Enabling Mobile Applications to Access Data Hosted on Oracle Cloud
24.1.1
How to Authenticate Against Oracle Cloud
24.1.2
How to Create a Web Service Data Control to Access Oracle Java Cloud
24.1.2.1
Configuring the Policy for SOAP-Based Web Services
24.1.3
What Happens When You Deploy a Mobile Application that Accesses Oracle Java Cloud Service
25
Enabling and Using Notifications
25.1
Introduction to Push Notifications
25.1.1
How Push Notifications Work
25.1.2
How Mobile Applications Display Notifications Depending on Application State
25.2
Enabling Push Notifications for a Mobile Application
25.3
About the Push Notification Payload
26
Displaying Error Messages in MAF Applications
26.1
About Error Handling for MAF
26.2
Displaying Error Messages and Stopping Background Threads
26.2.1
How Applications Display Error Message for Background Thread Exceptions
26.3
Localizing Error Messages
27
Deploying Mobile Applications
27.1
Introduction to Deployment of Mobile Applications
27.1.1
How OEPE Deploys Applications
27.1.1.1
Deployment of Project Libraries
27.1.1.2
Deployment of the JVM 1.4 Libraries
27.2
Working with Deployment Configurations
27.2.1
How to Create a Deployment Configuration
27.2.2
What Happens When You Create a Deployment Configuration
27.2.3
Differences Between Run Configurations and Debug Configurations
27.2.4
How to Create an Android Deployment Configuration
27.2.4.1
Setting Advanced Options
27.2.4.2
Setting Deployment Options
27.2.4.3
Defining the Android Signing Options
27.2.4.4
What You May Need to Know About Credential Storage
27.2.4.5
How to Add a Custom Image to an Android Application
27.2.4.6
What Happens When OEPE Deploys Images for Android Applications
27.2.5
Deploying an Android Application
27.2.5.1
How to Deploy an Android Application to an Android Emulator
27.2.5.2
How to Deploy an Application to an Android-Powered Device
27.2.5.3
How to Publish an Android Application
27.2.5.4
What Happens in OEPE When You Create an .apk File
27.2.5.5
Selecting the Most Recently Used Deployment Configurations
27.2.5.6
Viewing the Device/Emulator Log in the Console
27.2.6
How to Create an iOS Deployment Configuration
27.2.6.1
Defining the iOS Build Options
27.2.6.2
Setting the Device Signing Options
27.2.6.3
Adding a Custom Image to an iOS Application
27.2.6.4
What You May Need to Know About iTunes Artwork
27.2.7
Deploying an iOS Application
27.2.7.1
How to Deploy an iOS Application to an iOS Simulator
27.2.7.2
How to Deploy an Application to an iOS-Powered Device
27.2.7.3
What Happens When You Deploy an Application to an iOS Device
27.2.7.4
What You May Need to Know About Deploying an Application to an iOS-Powered Device
27.2.7.5
How to Distribute an iOS Application to the App Store
27.3
Deploying Feature Archive Files (FARs)
27.3.1
How to Create a Mobile Feature Archive FIle
27.3.2
How to Deploy the Feature Archive Deployment Profile
27.3.3
What Happens When You Create a Feature Archive File Deployment Profile
27.4
Creating a Mobile Application Archive File
27.4.1
How to Create a Mobile Application Archive File
27.5
Creating Unsigned Deployment Packages
27.5.1
How to Create an Unsigned Application
27.5.2
What Happens When You Import a MAF Application Archive File
27.6
Deploying with Oracle Mobile Security Suite
27.6.1
What You Need To Know Before Using OMSS
27.6.2
How to Encrypt your Content Using Containerization
28
Understanding Secure Mobile Development Practices
28.1
Weak Server-Side Controls
28.2
Insecure Data Storage on the Device
28.2.1
Encrypting the SQLite Database
28.2.2
Securing the Device's Local Data Stores
28.2.3
About Security and Application Logs
28.3
Insufficient Transport Layer Protection
28.4
Side-Channel Data Leakage
28.5
Poor Authorization and Authentication
28.6
Broken Cryptography
28.7
Client-Side Injection From Cross-Site Scripting
28.7.1
Protecting Applications Against XSS Through Whitelists
28.7.2
Protecting MAF Applications from Injection Attacks Using Device Access Permissions
28.7.3
About Injection Attack Risks from Custom HTML Components
28.7.4
About SQL Injections and XML Injections
28.8
Security Decisions From Untrusted Inputs
28.9
Improper Session Handling
28.10
Lack of Binary Protections Resulting in Sensitive Information Disclosure
29
Securing MAF Applications
29.1
About Mobile Application Framework Security
29.1.1
About Constraint-Dictated Access Control
29.2
About the User Login Process
29.3
Overview of the Authentication Process for Mobile Applications
29.4
Configuring MAF Connections
29.4.1
How to Create a MAF Login Connection
29.4.2
How to Configure Basic Authentication
29.4.3
How to Configure Web SSO Authentication
29.4.4
How to Configure Authentication Using Oracle Mobile and Social Identity Management
29.4.5
How to Configure OAuth Authentication
29.4.6
How to Update Connection Attributes of a Named Connection at Runtime
29.4.7
How to Store Login Credentials
29.4.8
What You May Need to Know About Multiple Identities for Local and Hybrid Login Connections
29.4.9
What Happens When You Enable Cookie Injection into REST Web Service Calls
29.4.10
What You May Need to Know About Adding Cookies to REST Web Service Calls
29.4.11
What Happens at Runtime: When MAF Calls a REST Web Service
29.4.12
What You May Need to Know About Injecting Basic Authentication Headers
29.4.13
What You May Need to Know about Web Service Security
29.4.14
How to Configure Access Control
29.4.15
What You May Need to Know About the Access Control Service
29.4.16
How to Alter the Application Loading Sequence
29.4.17
What Happens When You Define a Multi-Tenant Connection
29.4.18
What Happens When You Create a Connection for a Mobile Application
29.5
Configuring Security for Mobile Applications
29.5.1
How to Enable Application Features to Require Authentication
29.5.2
How to Designate the Login Page
29.5.3
What You May Need to Know About Login Pages
29.5.3.1
The Default Login Page
29.5.3.2
The Custom Login Page
29.5.3.3
Creating a Custom Login HTML Page
29.5.4
What You May Need to Know About Login Page Elements
29.5.5
What Happens in OEPE When You Configure Security for Application Features
29.6
Allowing Access to Device Capabilities
29.7
Enabling Users to Log Out from Application Features
29.8
Supporting SSL
30
Testing and Debugging MAF Applications
30.1
Introduction to Testing and Debugging MAF Applications
30.2
Testing MAF Applications
30.2.1
How to Perform Accessibility Testing on iOS-Powered Devices
30.3
Debugging MAF Applications
30.3.1
What You May Need to Know About the Debugging Configuration
30.3.2
How to Debug on iOS Platform
30.3.3
How to Debug on Android Platform
30.3.4
How to Debug the MAF AMX Content
30.3.5
How to Enable Debugging of Java Code and JavaScript
30.3.5.1
What You May Need to Know About Debugging of JavaScript Using an iOS-Powered Device Simulator on iOS 6 Platform
30.3.6
How to Configure the Debug Mode
30.4
Using and Configuring Logging
30.4.1
How to Configure Logging Using the Properties File
30.4.2
How to Use JavaScript Logging
30.4.3
How to Use Embedded Logging
30.4.4
How to Use Xcode for Debugging and Logging on iOS Platform
30.4.5
How to Access the Application Log
A
Troubleshooting
A.1
Problems with Input Components on iOS Simulators
A.2
Code Signing Issues Prevent Deployment
B
Local HTML and Application Container APIs
B.1
Using MAF APIs to Create a Custom HTML Springboard Application Feature
B.1.1
About Executing Code in Custom HTML Pages
B.2
The MAF Container Utilities API
B.2.1
Using the JavaScript Callbacks
B.2.2
Using the Container Utilities API
B.2.3
getApplicationInformation
B.2.4
gotoDefaultFeature
B.2.5
getFeatures
B.2.6
gotoFeature
B.2.7
getFeatureByName
B.2.8
getFeatureById
B.2.9
resetFeature
B.2.10
gotoSpringboard
B.2.11
hideNavigationBar
B.2.12
showNavigationBar
B.2.13
invokeMethod
B.2.14
invokeContainerJavaScriptFunction
B.2.15
Application Icon Badging
B.3
Accessing Files Using the getDirectoryPathRoot Method
B.3.1
Accessing Platform-Independent Download Locations
C
MAF Application and Project Files
C.1
Introduction to MAF Application and Project Files
C.2
About the Assembly-Level Resources
C.3
About the View Project Resources
D
Converting Preferences for Deployment
D.1
Naming Patterns for Preferences
D.2
Converting Preferences for Android
D.2.1
Preferences.xml
D.2.1.1
Preferences Element Mapping
D.2.1.2
Preference Attribute Mapping
D.2.1.3
Attribute Default Values
D.2.1.4
Preferences Screen Root Element
D.2.2
arrays.xml
D.2.3
Strings.xml
D.3
Converting Preferences for iOS
E
MAF Application Usage
E.1
Introduction to MAF Application Usage
E.2
Installing the MAF Application on a Mobile Device
E.2.1
How to Install MAF Applications on iOS-Powered Devices
E.2.2
How to Install MAF Applications on Android-Powered Devices
E.2.3
How to Uninstall a MAF Application
E.3
Navigating Between Application Features
E.3.1
How to Navigate Between Application Features on iOS-Powered Devices
E.3.1.1
Navigating Using the Springboard
E.3.1.2
Using Single-Featured Applications
E.3.2
How to Navigate on Android-Powered Devices
E.4
Setting Preferences
E.4.1
How to Set Preferences on iOS-Powered Devices
E.4.2
How to Set Preferences on Android-Powered Devices
E.5
Viewing Log Files
E.6
Limitations to the Application Usage
E.6.1
List View Component Limitations
E.6.2
Data Visualization Components Limitations
E.6.3
Device Back Button Limitations on Android Platform
E.6.4
Accessibility Support Limitations
F
Parsing XML
F.1
Parsing XML Using kXML Library
G
MAF Sample Applications
G.1
Overview of the MAF Sample Applications
Scripting on this page enhances content navigation, but does not change the content in any way.