/*- * Copyright 2010 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.authenticator.blackberry; import net.rim.device.api.system.RuntimeStore; import net.rim.device.api.ui.UiApplication; import net.rim.device.api.util.StringPattern; import net.rim.device.api.util.StringPatternRepository; /** * Main entry point. */ public class AuthenticatorApplication extends UiApplication { public static final long FACTORY_ID = 0xdee739761f1b0a72L; private static boolean sInitialized; public static void main(String[] args) { if (args != null && args.length >= 1 && "startup".equals(args[0])) { // This entry-point is invoked when the device is rebooted. registerStringPattern(); } else if (args != null && args.length >= 2 && "uri".equals(args[0])) { // This entry-point is invoked when the user clicks on a URI containing // the shared secret. String uriString = Uri.decode(args[1]); startApplication(Uri.parse(uriString)); } else { // The default entry point starts the user interface. startApplication(null); } } /** * Registers pattern matcher so that this application can handle certain URI * schemes referenced in other applications. */ private static void registerStringPattern() { if (!sInitialized) { RuntimeStore runtimeStore = RuntimeStore.getRuntimeStore(); UriActiveFieldCookieFactory factory = new UriActiveFieldCookieFactory(); runtimeStore.put(FACTORY_ID, factory); StringPattern pattern = new UriStringPattern(); StringPatternRepository.addPattern(pattern); sInitialized = true; } } private static void startApplication(Uri uri) { UiApplication app = new AuthenticatorApplication(); AuthenticatorScreen screen = new AuthenticatorScreen(); app.pushScreen(screen); if (uri != null) { screen.parseSecret(uri); screen.refreshUserList(); } app.enterEventDispatcher(); } }