The app follows Android Design guidelines and uses common UI patterns and icons:
The app supports standard system Back button navigation and does not make use of any custom, on-screen "Back button" prompts.
All dialogs are dismissible using the Back button.
|UX-N3||Pressing the Home button at any point navigates to the Home screen of the device.|
Notifications follow Android Design guidelines. In particular:
The app uses notifications only to:
|Permissions||FN-P1||The app requests only the absolute minimum permissions that it needs to support core functionality.|
The app does not request permissions to access sensitive data (such as Contacts or the System Log) or services that can cost the user money (such as the Dialer or SMS), unless related to a core capability of the app.
The app functions normally when installed on SD card (if supported by app).
Supporting installation to SD card is recommended for most large apps (10MB+)
|Audio||FN-A1||Audio does not play when the screen is off, unless this is a core feature (for example, the app is a music player).|
|FN-A2||Audio does not play behind the lock screen unless this is a core feature.|
|FN-A3||Audio does not play on the home screen or over another app, unless this is a core feature.|
|FN-A4||Audio resumes when the app returns to the foreground, or indicates to the user that playback is in a paused state.|
|UI and Graphics||FN-U1||
The app supports both landscape and portrait orientations (if possible).
Orientations expose largely the same features and actions and preserve functional parity. Minor changes in content or views are acceptable.
The app uses the whole screen in both orientations and does not letterbox to account for orientation changes.
Minor letterboxing to compensate for small variations in screen geometry is acceptable.
The app correctly handles rapid transitions between display orientations without rendering problems.
The app should not leave any services running when the app is in the background, unless related to a core capability of the app.
For example, the app should not leave services running to maintain a network connection for notifications, to maintain a Bluetooth connection, or to keep the GPS powered-on.
The app correctly preserves and restores user or app state.
The app preserves user or app state when leaving the foreground and prevents accidental data loss due to back-navigation and other state changes. When returning to the foreground, the app must restore the preserved state and any significant stateful transaction that was pending, such as changes to editable fields, game progress, menus, videos, and other sections of the app or game.
|Stability||PS-S1||The app does not crash, force close, freeze, or otherwise function abnormally on any targeted device.|
|Performance||PS-P1||The app loads quickly or provides onscreen feedback to the user (a progress indicator or similar cue) if the app takes longer than two seconds to load.|
|PS-P2||With StrictMode enabled no red flashes (performance warnings from StrictMode) are visible when exercising the app, including during game play, animations and UI transitions, and any other part of the app.|
|SDK||PS-T1||The app runs on the latest public version of the Android platform without crashing or loss of core function.|
|PS-T2||The app targets the latest SDK by setting the targetSdk value to minimize the use of any platform-provided compatibility fallbacks.|
|PS-T3||The app is built with the latest SDK by setting the compileSdk value.|
|Battery||PS-B1||The app supports power management features in Android 6.0+ (Doze and App Standby) properly. In the case where core functionality is disrupted by power management, only qualified apps may request an exemption.|
|Media||PS-M1||Music and video playback is smooth, without crackle, stutter, or other artifacts, during normal app use and load.|
The app displays graphics, text, images, and other UI elements without noticeable distortion, blurring, or pixelation.
The app displays text and text blocks in an acceptable manner.
|Data||SC-D1||All private data is stored in the app's internal storage.|
|SC-D2||All data from external storage is verified before being accessed.|
All intents and broadcasts follow secure best practices.
|SC-D4||No personal or sensitive user data is logged to the system or app-specific log.|
Only application components that share data with other apps, or components that should be invoked by other apps, are exported.
This includes activities, services, broadcast receivers and content providers.
Always set the android:exported attribute explicitly, regardless of whether or not you export any of your application's components.
|SC-P2||All application components that share content with other apps define (and enforce) appropriate permissions. This includes activities, services, broadcast receivers and especially content providers.|
|SC-P3||All content providers that share content between your apps use android:protectionLevel="signature".|
|Networking||SC-N1||All network traffic is sent over SSL.|
|SC-N2||Application declares a network security configuration.|
|SC-N3||If the application uses Google Play services, the security provider is initialized at application startup.|
|Libraries||SC-U1||All libraries, SDKs, and dependencies are up to date.|
|SC-W2||WebViews only load whitelisted content if possible.|
On Android M and above, HTML message channels can be used instead.
|Execution||SC-E1||The app does not dynamically load code from outside the app's APK.|
|Cryptography||SC-C1||The app uses strong, platform-provided cryptographic algorithms and does not implement custom algorithms.|
|SC-C2||The app uses a properly secure random number generator, in particular to initialize cryptographic keys.|
These apps developed by App Developer for Android mark a new turn towards technology for an industry that’s been slow to adapt until now. With no suitable ‘off the shelf’ solution available below costly, enterprise level software, we were involved in the development process from the start, getting the right solution that suited our operations and our customers.
Ben Guy, Managing Director
Hammond ProduceApp Developer for Android quickly understood what we needed and were able to develop exactly what was required with minimal input from ourselves. As this was the first Android app we had developed we were pleased that it was done on time and within the quoted price. We would gladly work with them again and recommend them.
Mark Austin, Managing Director
Wing ParkingHaving recently moved to Android PDAs for our mobile workforce, we identified a need for a Bespoke App and a Web-based Management System to control it. App Developer for Android demonstrated a real understanding for our needs and a "can do" attitude that we found extremely helpful. Their solution was provided on time and within budget and has exceeded our expectations. We will be happy to work with them again when we have further requirements.
Trevor Wright, IT Manager
WeblightExcellent service, clear pricing and Alastair is so easy to deal with. Would definitely recommend. We're very pleased with our new App!
Mary Stealey, Operations Manager
Just Filters - Harlow, EssexAlastair was great at understanding our needs and building a new android app and web-facing management interface that met all our requirements. The solution was delivered within impressive timescales and at a competitive price. He kept us up to date throughout the project, was happy to be involved in conference calls to discuss setup and deployment, and was always incredibly responsive to our questions and requests for further enhancements. It was a pleasure working with Alastair and we look forward to the opportunity of working with him again in the future.
Stephen Connolly, Technical Team Manager
Parker Hannifin - Hemel Hempstead, Hertfordshire