Home
/
Middleware
/
Oracle Mobile Application Framework
1/42
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
What's New in This Guide for Release 2.1.3
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.3
Creating a MAF AMX Page
2.3.1
How to Create an MAF AMX Page
2.3.2
How to Create MAF Task Flows
2.3.3
What Happens When You Create MAF AMX Pages and Task Flows
2.4
Containerizing a MAF Application for Enterprise Distribution
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
Introduction to the Display Behavior of MAF Applications
5.2
Configuring Application Navigation
5.3
What Happens When You Configure the Navigation Options
5.4
What Happens When You Set the Animation for the Springboard
5.5
What You May Need to Know About Custom Springboard Application Features with HTML Content
5.6
What You May Need to Know About Custom Springboard Application Features with MAF AMX Content
5.7
What You May Need to Know About the Runtime Springboard Behavior
5.8
Creating a Sliding Window in a MAF Application
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.2
How to Enter a String in a Resource Bundle
7.3
What Happens When You Add a Resource Bundle
7.4
How to Localize Strings in MAF AMX Components
7.5
What Happens When You Create Project-Level Resource Bundles for MAF AMX Components
7.6
What You May Need to Know About Localizing Image Files
7.7
How to Edit a Resource Bundle File
7.8
What You May Need to Know About XLIFF Files for iOS Applications
7.9
Internationalization for iOS Applications
8
Skinning MAF Applications
8.1
Introduction to MAF Application Skins
8.1.1
About the maf-config.xml File
8.1.2
About the maf-skins.xml File
8.2
Adding a Custom Skin to an Application
8.3
Specifying a Skin for an Application to Use
8.4
Registering a Custom Skin
8.5
Versioning MAF Skins
8.6
What Happens When You Version Skins
8.7
Overriding the Default Skin Styles
8.8
What You May Need to Know About Skinning
8.9
Adding a New Style Sheet to a Skin
8.10
Enabling End Users Change an Application's Skin at Runtime
8.11
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
How to Use the addLocalNotification and cancelLocalNotification Methods to Manage Local Notifications
14.10.11
What You May Need to Know About Device Properties
14.11
Validating Attributes
14.12
About Data Change Events
15
Using SOAP 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
How to Customize SOAP Headers in Web Service Data Controls
15.3
What You May Need to Know About Web Service Data Controls
15.4
Creating a New Web Service Connection
15.5
Adjusting the Endpoint for a Web Service Data Control
15.6
Accessing Secure Web Services
15.6.1
How to Enable Access to SOAP-Based Web Services
15.6.2
What Happens When You Enable Access to Web Services
15.6.3
What You May Need to Know About Accessing Web Services and Containerized MAF Applications
15.6.4
What You May Need to Know About Credential Injection
15.6.5
What You May Need to Know About Cookie Injection
15.6.6
Limitations of Secure WSDL File Usage
15.7
Invoking Web Services From Java
15.7.1
How to Add and Delete Rows on Web Services Objects
15.7.2
What You May Need to Know About Invoking Data Control Operations
15.8
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
Overriding OWSM Policies
16.2.1.8
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
Importing and 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.4.4
Working with Path Variable Types
16.4.4.1
How to Edit a Path Variable Type
16.4.4.2
Path Variable Types in Artifact Generation
16.4.4.3
Path Variable Types and the REST Client
16.5
Importing and 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
16.8
Using the Connections View
16.8.1
How to Open the Connections View
16.8.2
How to Edit a Connection
16.8.3
How to Reuse a Connection
16.8.4
How to Open connections.xml
17
Working with Oracle Cloud Services
17.1
Introduction to Working with Oracle Cloud Services
17.2
Introduction to Working with MCS
17.2.1
Getting Started with MCS
17.2.1.1
Consuming MCS Services in MAF Applications
17.2.1.2
Developing Mobile Clients for MCS Mobile Services
17.2.1.3
Using Mobile Backends
17.2.1.4
Importing a REST API
17.3
Enabling Mobile Applications to Access Data Hosted on Oracle Cloud
17.3.1
How to Authenticate Against Oracle Cloud
17.3.2
How to Create a Web Service Data Control to Access Oracle Java Cloud
17.3.2.1
Configuring the Policy for SOAP-Based Web Services
17.3.3
What Happens When You Deploy a Mobile Application that Accesses Oracle Java Cloud Service
18
Configuring End Points Used in MAF Applications
18.1
Introduction to Configuring End Points
18.2
Defining the Configuration Service End Point
18.3
Creating the User Interface for the Configuration Service
18.4
About the URL Construction
18.5
Setting Up the Configuration Service on the Server
18.6
Migrating the Configuration Service API
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
Using the Local Database in MAF AMX
20.1
Introduction to the Local SQLite Database Usage
20.1.1
Differences Between SQLite and Other Relational Databases
20.1.1.1
Concurrency
20.1.1.2
SQL Support and Interpretation
20.1.1.3
Data Types
20.1.1.4
Foreign Keys
20.1.1.5
Database Transactions
20.1.1.6
Authentication
20.2
Using the Local SQLite Database
20.2.1
How to Connect to the Database
20.2.2
How to Use SQL Script to Initialize the Database
20.2.3
How to Initialize the Database on a Desktop
20.2.4
What You May Need to Know About Commit Handling
20.2.5
Limitations of the MAF's SQLite JDBC Driver
20.2.6
How to Use the VACUUM Command
20.2.7
How to Encrypt and Decrypt the Database
20.2.8
What You May Need to Know About the StockTracker Sample Application
21
Implementing Application Feature Content Using Remote URLs
21.1
Overview of Remote URL Applications
21.1.1
Enabling Remote Applications to Access Device Services through Whitelists
21.1.2
Enabling Remote Applications to Access Container Services
21.1.3
How Whitelisted Domains Access Device Capabilities
21.1.4
How to Create a Whitelist (or Restrict a Domain)
21.1.5
What Happens When You Add Domains to a Whitelist
21.1.6
What You May Need to Know About Remote URLs
21.2
Creating Whitelists for Application Components
21.3
Enabling the Browser Navigation Bar on Remote URL Pages
21.3.1
How to Add the Navigation Bar to a Remote URL Application Feature
21.3.2
What Happens When You Enable the Browser Navigation Buttons for a Remote URL Application Feature
21.4
Invoking MAF Applications Using a Custom URL Scheme
21.5
About Authoring Remote Content
22
Enabling User Preferences
22.1
Creating User Preference Pages for a Mobile Application
22.1.1
How to Create Mobile Application-Level Preferences Pages
22.1.1.1
How to Create a New User Preference Page
22.1.1.2
What Happens When You Add a Preference Page
22.1.1.3
How to Create User Preference Lists
22.1.1.4
What Happens When You Create a Preference List
22.1.1.5
How to Create a Boolean Preference List
22.1.1.6
What Happens When You Add a Boolean Preference
22.1.1.7
How to Add a Text Preference
22.1.1.8
What Happens When You Define a Text Preference
22.1.2
What Happens When You Create an Application-Level Preference Page
22.2
Creating User Preference Pages for Application Features
22.3
Using EL Expressions to Retrieve Stored Values for User Preference Pages
22.3.1
What You May Need to Know About preferenceScope
22.3.2
Reading Preference Values in iOS Native Views
22.4
Platform-Dependent Display Differences
23
Setting Constraints on Application Features
23.1
Introduction to Constraints
23.1.1
Using Constraints to Show or Hide an Application Feature
23.1.2
Using Constraints to Deliver Specific Content Types
23.2
Defining Constraints for Application Features
23.2.1
How to Define the Constraints for an Application Feature
23.2.2
What Happens When You Define a Constraint
23.2.3
About the property Attribute
23.2.4
About User Constraints and Access Control
23.2.5
About Hardware-Related Constraints
23.2.6
Creating Dynamic Constraints on Application Features and Content
23.2.6.1
About Combining Static and EL-Defined Constraints
23.2.6.2
How to Define a Dynamic Constraint
24
Using AppXray for MAF Artifacts
24.1
Introduction to Using AppXray for MAF Artifacts
24.2
Using AppXray
24.2.1
How to Open AppXaminer
24.2.1.1
About AppXaminer
24.2.2
Using AppXaminer
24.3
Refactoring with AppXray
25
Enabling and Using Notifications
25.1
Introduction to Push Notifications
25.2
Enabling Push Notifications
25.2.1
What You May Need to Know About the Push Notification Payload
25.3
Managing Local Notifications
25.3.1
How to Manage Local Notifications Using Java
25.3.2
How to Manage Local Notifications Using JavaScript
25.3.3
How to Manage Local Notifications Using the DeviceFeatures Data Control
25.3.4
How to Handle Local Notifications
25.3.5
What You May Need to Know About Local Notification Options and the Application Behavior
26
Caching Data
26.1
Introduction to Data Caching
26.1.1
Implementing Data Caching with the sync-config.xml File
26.1.2
How to Enable Data Caching
26.1.3
About Caching Policies
26.1.4
What You May Need to Know About Using a FAR to Update the sync-config.xml File
27
Displaying Error Messages in MAF Applications
27.1
About Error Handling for MAF
27.2
Displaying Error Messages and Stopping Background Threads
27.2.1
How Applications Display Error Message for Background Thread Exceptions
27.3
Localizing Error Messages
28
Deploying Mobile Applications
28.1
Introduction to Deployment of Mobile Applications
28.1.1
How OEPE Deploys Applications
28.1.2
Deployment of Project Libraries
28.2
Working with Deployment Configurations
28.2.1
How to Create a Deployment Configuration
28.2.2
What Happens When You Create a Deployment Configuration
28.2.3
Differences Between Run Configurations and Debug Configurations
28.3
Deploying an Android Application
28.3.1
How to Create an Android Deployment Configuration
28.3.1.1
Setting Advanced Options
28.3.1.2
Setting Deployment Options
28.3.1.3
Defining the Android Signing Options
28.3.1.4
What You May Need to Know About Credential Storage
28.3.1.5
How to Add a Custom Image to an Android Application
28.3.1.6
What Happens When OEPE Deploys Images for Android Applications
28.3.2
How to Deploy an Android Application to an Android Emulator
28.3.3
How to Deploy an Application to an Android-Powered Device
28.3.4
How to Publish an Android Application
28.3.5
What Happens in OEPE When You Create an .apk File
28.3.6
Selecting the Most Recently Used Deployment Configurations
28.3.7
Viewing the Device/Emulator Log in the Console
28.4
Deploying an iOS Application
28.4.1
How to Create an iOS Deployment Configuration
28.4.1.1
Defining the iOS Build Options
28.4.1.2
Setting the Device Signing Options
28.4.1.3
Adding a Custom Image to an iOS Application
28.4.1.4
What You May Need to Know About iTunes Artwork
28.4.1.5
How to Restrict the Display to a Specific Device Orientation
28.4.1.6
What Happens When You Deselect Device Orientations
28.4.2
How to Deploy an iOS Application to an iOS Simulator
28.4.3
How to Deploy an Application to an iOS-Powered Device
28.4.4
What Happens When You Deploy an Application to an iOS Device
28.4.5
What You May Need to Know About Deploying an Application to an iOS-Powered Device
28.4.5.1
Creating iOS Development Certificates
28.4.5.2
Registering an Apple Device for Testing and Debugging
28.4.5.3
Registering an Application ID
28.4.6
How to Distribute an iOS Application to the App Store
28.5
Deploying Feature Archive Files (FARs)
28.5.1
How to Create a Mobile Feature Archive File
28.5.2
How to Deploy the Feature Archive Deployment Profile
28.5.3
What Happens When You Create a Feature Archive File Deployment Profile
28.6
Creating a Mobile Application Archive File
28.6.1
How to Create a Mobile Application Archive File
28.7
Creating Unsigned Deployment Packages
28.7.1
How to Create an Unsigned Application
28.7.2
What Happens When You Import a MAF Application Archive File
28.8
Deploying with Oracle Mobile Security Suite
28.8.1
What Happens When You Containerize Your App with OMSS
29
Understanding Secure Mobile Development Practices
29.1
Weak Server-Side Controls
29.2
Insecure Data Storage on the Device
29.2.1
Encrypting the SQLite Database
29.2.2
Securing the Device's Local Data Stores
29.2.3
About Security and Application Logs
29.3
Insufficient Transport Layer Protection
29.4
Side-Channel Data Leakage
29.5
Poor Authorization and Authentication
29.6
Broken Cryptography
29.7
Client-Side Injection From Cross-Site Scripting
29.7.1
Protecting Applications Against XSS Through Whitelists
29.7.2
Protecting MAF Applications from Injection Attacks Using Device Access Permissions
29.7.3
About Injection Attack Risks from Custom HTML Components
29.7.4
About SQL Injections and XML Injections
29.8
Security Decisions From Untrusted Inputs
29.9
Improper Session Handling
29.10
Lack of Binary Protections Resulting in Sensitive Information Disclosure
30
Securing MAF Applications
30.1
Introduction to MAF Security
30.2
About the User Login Process
30.3
Overview of the Authentication Process for Mobile Applications
30.4
Overview of the Authentication Process for Containerized MAF Applications
30.5
Configuring MAF Connections
30.5.1
How to Create a MAF Login Connection
30.5.2
How to Create a Multi-Tenant Aware MAF Login Connection
30.5.3
How to Configure Basic Authentication
30.5.4
How to Configure Authentication Using Oracle Mobile and Social Identity Management
30.5.5
How to Configure OAuth Authentication
30.5.6
How to Configure Web SSO Authentication
30.5.7
How to Update Connection Attributes of a Named Connection at Runtime
30.5.8
How to Store Login Credentials
30.5.9
What Happens When You Create a Connection for a MAF Application
30.5.10
What Happens When You Create a Multi-Tenant Aware Connection
30.5.11
What You May Need to Know About the Login Connection Configuration
30.5.12
What You May Need to Know About Login Connections and Containerized MAF Applications
30.5.13
What You May Need to Know About Multiple Identities for Local and Hybrid Login Connections
30.5.14
What You May Need to Know About Custom Headers
30.5.15
What Happens at Runtime: When MAF Calls a REST Web Service
30.5.16
What You May Need to Know About Injecting Basic Authentication Headers
30.5.17
What You May Need to Know about Web Service Security
30.5.18
How to Configure Access Control
30.5.19
What You May Need to Know About the Access Control Service
30.5.20
How to Alter the Application Loading Sequence
30.5.21
How to Configure Login Credentials Programmatically Prior to Authentication
30.6
Configuring Security for Mobile Applications
30.6.1
How to Enable Application Features to Require Authentication
30.6.2
How to Designate the Login Page
30.6.3
What You May Need to Know About Login Pages
30.6.3.1
The Default Login Page
30.6.3.2
The Custom Login Page
30.6.4
What You May Need to Know About Login Page Elements
30.6.5
What Happens in OEPE When You Configure Security for Application Features
30.7
Allowing Access to Device Capabilities
30.8
Enabling Users to Log Out from Application Features
30.9
Supporting SSL
31
Testing and Debugging MAF Applications
31.1
Introduction to Testing and Debugging MAF Applications
31.2
Testing MAF Applications
31.2.1
How to Perform Accessibility Testing on iOS-Powered Devices
31.3
Debugging MAF Applications
31.3.1
What You May Need to Know About the Debugging Configuration
31.3.2
How to Debug on iOS Platform
31.3.3
How to Debug on Android Platform
31.3.4
How to Debug the MAF AMX Content
31.3.5
How to Enable Debugging of Java Code and JavaScript
31.3.5.1
What You May Need to Know About Debugging of JavaScript Using an iOS-Powered Device Simulator on iOS 6 Platform
31.3.6
How to Configure the Debug Mode
31.4
Using and Configuring Logging
31.4.1
How to Configure Logging Using the Properties File
31.4.2
How to Use JavaScript Logging
31.4.3
How to Use Embedded Logging
31.4.4
How to Use Xcode for Debugging and Logging on iOS Platform
31.4.5
How to Access the Application Log
31.4.6
How to Disable Logging
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.