Developing Mobile Applications with Oracle Mobile Application Framework
Table of Contents
Show All | Collapse- Title and Copyright Information
- Preface
- Part I Understanding Mobile Application Framework
- Part II Getting Started
- 2 Setting Up the Development Environment
- 3 Getting Started with Mobile Application Development
- Part III Developing MAF Applications
- 4 Defining a Mobile Application
- 4.1 Introduction to Defining Mobile Applications
- 4.2 About the Mobile Application Configuration File
- 4.3 Setting the Basic Information for a Mobile Application
- 4.4 Invoking a Mobile Application Using a Custom URL Scheme
- 4.5 Configuring the Springboard and Navigation Bar Behavior
- 4.5.1 How to Configure Application Navigation
- 4.5.2 What Happens When You Configure the Navigation Options
- 4.5.3 What Happens When You Set the Animation for the Springboard
- 4.5.4 What You May Need to Know About Custom Springboard Application Features with HTML Content
- 4.5.5 What You May Need to Know About Custom Springboard Application Features with MAF AMX Content
- 4.5.6 What You May Need to Know About the Runtime Springboard Behavior
- 4.6 Configuring the Application Features within a Mobile Application
- 4.7 About Lifecycle Event Listeners
- 4.7.1 Events in Mobile Applications
- 4.7.2 Timing for Mobile Application Events
- 4.7.3 Using the activate and deactivate Methods to Save Application State
- 4.7.4 About Application Feature Lifecycle Listener Classes
- 4.7.5 Timing for Activate and Deactivate Events in the Application Feature Lifecycle
- 4.7.6 Enabling Sliding Windows
- 4.8 About the Mobile Application Feature Configuration File
- 4.9 Setting the Basic Configuration for the Application Features
- 4.10 Defining the Content Types for an Application Feature
- 4.11 Working with Localized Content
- 4.12 Skinning Mobile Applications
- 4.12.1 About the maf-config.xml File
- 4.12.2 What You May Need to Know About MAF Styles
- 4.12.3 About the maf-skins.xml File
- 4.12.4 How to Add a Custom Skin to an Application
- 4.12.5 How to Specify a Skin for an Application to Use
- 4.12.6 How to Register a Custom Skin
- 4.12.7 How to Version MAF Skins
- 4.12.8 What Happens When You Version Skins
- 4.12.9 Overriding the Default Skin Styles
- 4.12.10 What You May Need to Know About Skinning
- 4.12.11 What You May Need to Know About Migrating Skinning Styles
- 4.12.12 Enabling Dynamic Skin Selection at Runtime
- 4.13 Working with Feature Archive Files
- 4.13.1 How to Use FAR Content in a MAF Application
- 4.13.2 What Happens When You Add a FAR as a Library
- 4.13.3 What Happens When You Add a FAR as a View Controller Project
- 4.13.4 What You May Need to Know About Enabling the Reuse of Feature Archive Resources
- 4.13.5 What You May Need to Know About Using a FAR to Update the sync-config.xml File
- 4.14 Customizing MAF Files Using Oracle Metadata Services
- 4.14.1 How to Create a Customization Layer
- 4.14.2 How to Create a Customization Class
- 4.14.3 How to Enable the Design Time to Access the Customization Class
- 4.14.4 What You May Need to Know About Web Service Data Controls and Customized Application Deployments
- 4.14.5 What Happens When You Customize a Mobile Application
- 4.14.6 Enabling Customizations in Resource Bundles in Mobile Applications
- 4.14.7 Upgrading a Mobile Application with Customizations
- 4.14.8 What Happens in JDeveloper When You Upgrade Applications
- 4.14.9 What You May Need to Know About Upgrading FARs
- 4.15 Integrating Cordova Plugins into Mobile Applications
- 4 Defining a Mobile Application
- Part IV Creating the MAF AMX Application Feature
- 5 Creating MAF AMX Pages
- 5.1 Introduction to the MAF AMX Application Feature
- 5.2 Creating Task Flows
- 5.2.1 How to Create a Task Flow
- 5.2.2 What You May Need to Know About Task Flow Activities and Control Flows
- 5.2.3 What You May Need to Know About the ViewController-task-flow.xml File
- 5.2.4 What You May Need to Know About the MAF Task Flow Diagrammer
- 5.2.5 How to Add and Use Task Flow Activities
- 5.2.6 How to Define Control Flows
- 5.2.7 What You May Need to Know About MAF Support for Back Navigation
- 5.2.8 How to Enable Page Navigation by Dragging
- 5.2.9 How to Specify Action Outcomes Using UI Components
- 5.2.10 How to Create and Reference Managed Beans
- 5.2.11 How to Specify the Page Transition Style
- 5.2.12 What You May Need to Know About Bounded and Unbounded Task Flows
- 5.3 Creating Views
- 6 Creating the MAF AMX User Interface
- 6.1 Introduction to Creating the User Interface for MAF AMX Pages
- 6.2 Designing the Page Layout
- 6.2.1 How to Use a View Component
- 6.2.2 How to Use a Panel Page Component
- 6.2.3 How to Use a Panel Group Layout Component
- 6.2.4 How to Use a Panel Form Layout Component
- 6.2.5 How to Use a Panel Stretch Layout Component
- 6.2.6 How to Use a Panel Label And Message Component
- 6.2.7 How to Use a Facet Component
- 6.2.8 How to Use a Popup Component
- 6.2.9 How to Use a Panel Splitter Component
- 6.2.10 How to Use a Spacer Component
- 6.2.11 How to Use a Table Layout Component
- 6.2.12 How to Use a Deck Component
- 6.2.13 How to Use the Fragment Component
- 6.3 Creating and Using UI Components
- 6.3.1 How to Use the Input Text Component
- 6.3.2 How to Use the Input Number Slider Component
- 6.3.3 How to Use the Input Date Component
- 6.3.4 How to Use the Output Text Component
- 6.3.5 How to Use Buttons
- 6.3.6 How to Use Links
- 6.3.7 How to Display Images
- 6.3.8 How to Use the Checkbox Component
- 6.3.9 How to Use the Select Many Checkbox Component
- 6.3.10 How to Use the Choice Component
- 6.3.11 How to Use the Select Many Choice Component
- 6.3.12 How to Use the Boolean Switch Component
- 6.3.13 How to Use the Select Button Component
- 6.3.14 How to Use the Radio Button Component
- 6.3.15 How to Use List View and List Item Components
- 6.3.16 How to Use Carousel Component
- 6.3.17 How to Use the Film Strip Component
- 6.3.18 How to Use Verbatim Component
- 6.3.19 How to Use Output HTML Component
- 6.3.20 How to Enable Iteration
- 6.3.21 How to Load a Resource Bundle
- 6.3.22 How to Use the Action Listener
- 6.3.23 How to Use the Set Property Listener
- 6.3.24 How to Convert Date and Time Values
- 6.3.25 How to Convert Numerical Values
- 6.3.26 How to Enable Drag Navigation
- 6.3.27 How to Use the Loading Indicator
- 6.4 Enabling Gestures
- 6.5 Providing Data Visualization
- 6.5.1 How to Create an Area Chart
- 6.5.2 How to Create a Bar Chart
- 6.5.3 How to Create a Horizontal Bar Chart
- 6.5.4 How to Create a Bubble Chart
- 6.5.5 How to Create a Combo Chart
- 6.5.6 How to Create a Line Chart
- 6.5.7 How to Create a Pie Chart
- 6.5.8 How to Create a Scatter Chart
- 6.5.9 How to Create a Spark Chart
- 6.5.10 How to Create a Funnel Chart
- 6.5.11 How to Style Chart Components
- 6.5.12 How to Use Events with Chart Components
- 6.5.13 How to Create a LED Gauge
- 6.5.14 How to Create a Status Meter Gauge
- 6.5.15 How to Create a Dial Gauge
- 6.5.16 How to Create a Rating Gauge
- 6.5.17 How to Define Child Elements for Chart and Gauge Components
- 6.5.18 How to Create a Geographic Map Component
- 6.5.19 How to Create a Thematic Map Component
- 6.5.20 How to Use Events with Map Components
- 6.5.21 How to Create a Treemap Component
- 6.5.22 How to Create a Sunburst Component
- 6.5.23 How to Create a Timeline Component
- 6.5.24 How to Create an NBox Component
- 6.5.25 How to Define Child Elements for Map Components, Sunburst, Treemap, Timeline, and NBox
- 6.5.26 How to Create Databound Data Visualization Components
- 6.6 Styling UI Components
- 6.7 Localizing UI Components
- 6.8 Understanding MAF Support for Accessibility
- 6.9 Validating Input
- 6.10 Using Event Listeners
- 7 Using Bindings and Creating Data Controls
- 7.1 Introduction to Bindings and Data Controls
- 7.2 About Object Scope Lifecycles
- 7.3 Creating EL Expressions
- 7.3.1 About Data Binding EL Expressions
- 7.3.2 How to Create an EL Expression
- 7.3.3 What You May Need to Know About MAF Binding Properties
- 7.3.4 How to Reference Binding Containers
- 7.3.5 About the Categories in the Expression Builder
- 7.3.6 About EL Events
- 7.3.7 How to Use EL Expressions Within Managed Beans
- 7.4 Creating and Using Managed Beans
- 7.5 Exposing Business Services with Data Controls
- 7.6 Creating Databound UI Components from the Data Controls Panel
- 7.7 What Happens at Runtime: How the Binding Context Works
- 7.8 Configuring Data Controls
- 7.9 Working with Attributes
- 7.10 Creating and Using Bean Data Controls
- 7.11 Using the DeviceFeatures Data Control
- 7.11.1 How to Use the getPicture Method to Enable Taking Pictures
- 7.11.2 How to Use the SendSMS Method to Enable Text Messaging
- 7.11.3 How to Use the sendEmail Method to Enable Email
- 7.11.4 How to Use the createContact Method to Enable Creating Contacts
- 7.11.5 How to Use the findContacts Method to Enable Finding Contacts
- 7.11.6 How to Use the updateContact Method to Enable Updating Contacts
- 7.11.7 How to Use the removeContact Method to Enable Removing Contacts
- 7.11.8 How to Use the startLocationMonitor Method to Enable Geolocation
- 7.11.9 How to Use the displayFile Method to Enable Displaying Files
- 7.11.10 Device Properties
- 7.12 Validating Attributes
- 7.13 About Data Change Events
- 8 Using Web Services
- 8.1 Introduction to Using Web Services in MAF Applications
- 8.2 Creating Web Service Data Controls
- 8.3 Creating a New Web Service Connection
- 8.4 Adjusting the Endpoint for a Web Service Data Control
- 8.5 Accessing Secure Web Services
- 8.6 Invoking Web Services From Java
- 8.7 Configuring the Browser Proxy Information
- 9 Configuring End Points Used in MAF Applications
- 10 Using the Local Database
- 10.1 Introduction to the Local SQLite Database Usage
- 10.2 Using the Local SQLite Database
- 10.2.1 How to Connect to the Database
- 10.2.2 How to Use SQL Script to Initialize the Database
- 10.2.3 How to Initialize the Database on a Desktop
- 10.2.4 What You May Need to Know About Commit Handling
- 10.2.5 Limitations of the MAF's SQLite JDBC Driver
- 10.2.6 How to Use the VACUUM Command
- 10.2.7 How to Encrypt and Decrypt the Database
- 10.2.8 What You May Need to Know About the StockTracker Sample Application
- 11 Customizing MAF AMX Application Feature Artifacts
- 11.1 Introduction to Customizing MAF AMX Pages and Artifacts
- 11.2 Customizing MAF AMX Pages and Artifacts
- 11.3 What You May Need to Know About Customization Classes
- 11.4 Configuring Customization Layers
- 11.5 Consuming Customization Classes
- 11.6 Configuring the adf-config.xml File
- 11.7 What You May Need to Know About the Customization Developer Role
- 12 Creating Custom MAF AMX UI Components
- 12.1 Introduction to Creating Custom UI Components
- 12.2 Using MAF APIs to Create Custom Components
- 12.2.1 How to Use Static APIs
- 12.2.2 How to Use AmxEvent Classes
- 12.2.3 How to Use the TypeHandler
- 12.2.4 How to Use the AmxNode
- 12.2.5 How to Use the AmxTag
- 12.2.6 How to Use the VisitContext
- 12.2.7 How to Use the AmxAttributeChange
- 12.2.8 How to Use the AmxDescendentChanges
- 12.2.9 How to Use the AmxCollectionChange
- 12.2.10 How to Use the AmxNodeChangeResult
- 12.2.11 How to Use the AmxNodeStates
- 12.2.12 How to Use the AmxNodeUpdateArguments
- 12.3 Creating Custom Components
- 5 Creating MAF AMX Pages
- Part V Advanced Topics
- 13 Implementing Application Feature Content Using Remote URLs
- 13.1 Overview of Remote URL Applications
- 13.1.1 Enabling Remote Applications to Access Device Services through Whitelists
- 13.1.2 Enabling Remote URL Implementations to Access Apache Cordova
- 13.1.3 How Whitelisted Domains Access Device Capabilities
- 13.1.4 How to Create a Whitelist (or Restrict a Domain)
- 13.1.5 What Happens When You Add Domains to a Whitelist
- 13.1.6 What You May Need to Know About Remote URLs
- 13.2 Creating Whitelists for Application Components
- 13.3 Enabling the Browser Navigation Bar on Remote URL Pages
- 13.4 About Authoring Remote Content
- 13.1 Overview of Remote URL Applications
- 14 Enabling User Preferences
- 15 Setting Constraints on Application Features
- 15.1 Introduction to Constraints
- 15.2 Defining Constraints for Application Features
- 15.2.1 How to Define the Constraints for an Application Feature
- 15.2.2 What Happens When You Define a Constraint
- 15.2.3 About the property Attribute
- 15.2.4 About User Constraints and Access Control
- 15.2.5 About Hardware-Related Constraints
- 15.2.6 Creating Dynamic Constraints on Application Features and Content
- 16 Accessing Data on Oracle Cloud
- 17 Enabling Push Notifications
- 18 Handling Errors in MAF Applications
- 13 Implementing Application Feature Content Using Remote URLs
- Part VI Completing the Mobile Application
- 19 Deploying Mobile Applications
- 19.1 Introduction to Deployment of Mobile Applications
- 19.2 Working with Deployment Profiles
- 19.3 Deploying an Android Application
- 19.3.1 How to Deploy an Android Application to an Android Emulator
- 19.3.2 How to Deploy an Application to an Android-Powered Device
- 19.3.3 How to Publish an Android Application
- 19.3.4 What Happens in JDeveloper When You Create an .apk File
- 19.3.5 Selecting the Most Recently Used Deployment Profiles
- 19.3.6 What You May Need to Know About Using the Android Debug Bridge
- 19.4 Deploying an iOS Application
- 19.4.1 How to Deploy an iOS Application to an iOS Simulator
- 19.4.2 How to Deploy an Application to an iOS-Powered Device
- 19.4.3 What Happens When You Deploy an Application to an iOS Device
- 19.4.4 What You May Need to Know About Deploying an Application to an iOS-Powered Device
- 19.4.5 How to Distribute an iOS Application to the App Store
- 19.5 Deploying Feature Archive Files (FARs)
- 19.6 Creating a Mobile Application Archive File
- 19.7 Creating Unsigned Deployment Packages
- 19.8 Deploying Mobile Applications from the Command Line
- 20 Understanding Secure Mobile Development Practices
- 20.1 Weak Server-Side Controls
- 20.2 Insecure Data Storage on the Device
- 20.3 Insufficient Transport Layer Protection
- 20.4 Side-Channel Data Leakage
- 20.5 Poor Authorization and Authentication
- 20.6 Broken Cryptography
- 20.7 Client-Side Injection From Cross-Site Scripting
- 20.8 Security Decisions From Untrusted Inputs
- 20.9 Improper Session Handling
- 20.10 Lack of Binary Protections Resulting in Sensitive Information Disclosure
- 21 Securing Mobile Applications
- 21.1 About Mobile Application Framework Security
- 21.2 About the User Login Process
- 21.3 Overview of the Authentication Process for Mobile Applications
- 21.4 Configuring MAF Connections
- 21.4.1 How to Create a MAF Login Connection
- 21.4.2 How to Configure Basic Authentication
- 21.4.3 How to Configure Authentication Using Oracle Mobile and Social Identity Management
- 21.4.4 How to Configure OAuth Authentication
- 21.4.5 How to Configure Web SSO Authentication
- 21.4.6 How to Configure a Placeholder Connection for MAF Application Login
- 21.4.7 How to Update Connection Attributes of a Named Connection at Runtime
- 21.4.8 How to Store Login Credentials
- 21.4.9 What You May Need to Know About Multiple Identities for Local and Hybrid Login Connections
- 21.4.10 What You May Need to Know About Migrating a MAF Application and Authentication Modes
- 21.4.11 What Happens When You Enable Cookie Injection into REST Web Service Calls
- 21.4.12 What You May Need to Know About Adding Cookies to REST Web Service Calls
- 21.4.13 What Happens at Runtime: When MAF Calls a REST Web Service
- 21.4.14 What You May Need to Know About Injecting Basic Authentication Headers
- 21.4.15 What You May Need to Know about Web Service Security
- 21.4.16 How to Configure Access Control
- 21.4.17 What You May Need to Know About the Access Control Service
- 21.4.18 How to Alter the Application Loading Sequence
- 21.4.19 What Happens When You Define a Multi-Tenant Connection
- 21.4.20 What Happens When You Create a Connection for a Mobile Application
- 21.5 Configuring Security for Mobile Applications
- 21.5.1 How to Enable Application Features to Require Authentication
- 21.5.2 How to Designate the Login Page
- 21.5.3 What You May Need to Know About Login Pages
- 21.5.4 What You May Need to Know About Login Page Elements
- 21.5.5 What Happens in JDeveloper When You Configure Security for Application Features
- 21.6 Allowing Access to Device Capabilities
- 21.7 Enabling Users to Log Out from Application Features
- 21.8 Supporting SSL
- 22 Testing and Debugging MAF Applications
- 19 Deploying Mobile Applications
- Part VII Appendixes
- A Troubleshooting
- B Local HTML and Application Container APIs
- B.1 Using MAF APIs to Create a Custom HTML Springboard Application Feature
- 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
- C Converting Preferences for Deployment
- D MAF Application Usage
- E Parsing XML
- F Mobile Application Framework Sample Applications