diff -r f5050f1da672 -r 04becd199f91 javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,207 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +package com.nokia.mj.impl.properties.mobinfo; + +import java.util.Hashtable; + +import com.nokia.mj.impl.rt.support.SystemPropertyProvider; +import com.nokia.mj.impl.rt.support.Jvm; +import com.nokia.mj.impl.utils.Logger; +import com.nokia.mj.impl.connectionmanager.ConnectionManager; +import com.nokia.mj.impl.connectionmanager.AccessPoint; +import com.nokia.mj.impl.rt.support.ApplicationInfo; +import com.nokia.mj.impl.rt.support.ApplicationUtils; +import com.nokia.mj.impl.utils.Uid; + +/** + * Provides system properties related to Mobile Info + */ +public class MobileInfoProperties implements SystemPropertyProvider +{ + static + { + try + { + Jvm.loadSystemLibrary("javamobinfo"); + } + catch (Exception e) + { + Logger.ELOG(Logger.ESOCKET, "MOBINFO: Unable to load javamobinfo"); + } + } + + // Strings that are exposed as system properties. + private static final String NETWORK_ACCESS = "com.nokia.network.access"; + + private static final String BATTERY_LEVEL = "com.nokia.mid.batterylevel"; + + private static final String COUNTRY_CODE = "com.nokia.mid.countrycode"; + + private static final String IMEI = "com.nokia.mid.imei"; + + static final String IMSI = "com.nokia.mid.imsi"; + + private static final String NETWORK_AVAILABILITY = "com.nokia.mid.networkavailability"; + + private static final String NETWORK_ID = "com.nokia.mid.networkid"; + + private static final String NETWORK_SIGNAL = "com.nokia.mid.networksignal"; + + private static final String EMAIL_RECIEVE_SETTINGS = "com.nokia.mid.settings.email-receive-protocol"; + + private static final String EMAIL_SEND_SETTINGS = "com.nokia.mid.settings.email-send-protocol"; + + private static final String CELLID = "com.nokia.mid.cellid"; + + static final String MSISDN = "com.nokia.mid.msisdn"; + + private static final String DATEFORMAT = "com.nokia.mid.dateformat"; + + private static final String TIMEFORMAT = "com.nokia.mid.timeformat"; + + private static final String NETWORKSTATUS = "com.nokia.mid.networkstatus"; + + private static final int APP_DEFAULT_APN_NOT_SPECIFIED = -1; + + // Constants associated with the strings + private static final int NETWORK_ACCESS_V = 1; + + private static final int BATTERY_LEVEL_V = 2; + + private static final int COUNTRY_CODE_V = 3; + + private static final int IMEI_V = 4; + + private static final int IMSI_V = 5; + + private static final int NETWORK_AVAILABILITY_V = 6; + + private static final int NETWORK_ID_V = 7; + + private static final int NETWORK_SIGNAL_V = 8; + + private static final int EMAIL_RECIEVE_SETTINGS_V = 9; + + private static final int EMAIL_SEND_SETTINGS_V = 10; + + private static final int CELLID_V = 11; + + private static final int MSISDN_V = 12; + + private static final int DATEFORMAT_V = 13; + + private static final int TIMEFORMAT_V = 14; + + private static final int NETWORKSTATUS_V = 15; + + private static Hashtable iPropertyKeys; + + static + { + iPropertyKeys = new Hashtable(); + iPropertyKeys.put(NETWORK_ACCESS, new Integer(NETWORK_ACCESS_V)); + iPropertyKeys.put(BATTERY_LEVEL, new Integer(BATTERY_LEVEL_V)); + iPropertyKeys.put(COUNTRY_CODE, new Integer(COUNTRY_CODE_V)); + iPropertyKeys.put(IMEI, new Integer(IMEI_V)); + iPropertyKeys.put(IMSI, new Integer(IMSI_V)); + iPropertyKeys.put(NETWORK_AVAILABILITY, new Integer(NETWORK_AVAILABILITY_V)); + iPropertyKeys.put(NETWORK_ID, new Integer(NETWORK_ID_V)); + iPropertyKeys.put(NETWORK_SIGNAL, new Integer(NETWORK_SIGNAL_V)); + iPropertyKeys.put(EMAIL_RECIEVE_SETTINGS, new Integer(EMAIL_RECIEVE_SETTINGS_V)); + iPropertyKeys.put(EMAIL_SEND_SETTINGS, new Integer(EMAIL_SEND_SETTINGS_V)); + iPropertyKeys.put(CELLID, new Integer(CELLID_V)); + iPropertyKeys.put(MSISDN, new Integer(MSISDN_V)); + iPropertyKeys.put(DATEFORMAT, new Integer(DATEFORMAT_V)); + iPropertyKeys.put(TIMEFORMAT, new Integer(TIMEFORMAT_V)); + iPropertyKeys.put(NETWORKSTATUS, new Integer(NETWORKSTATUS_V)); + } + + public String getProperty(String aKey) + { + // enforce security + ApplicationUtils appUtils = ApplicationUtils.getInstance(); + appUtils.checkPermission(new MobileInfoPermission(aKey, "read")); + + int value = ((Integer)iPropertyKeys.get(aKey)).intValue(); + Uid appSuiteUid; + ConnectionManager CmInstance = null; + String result = null; + // Only network access seems to have another way to handle it. + if (aKey.equals(EMAIL_RECIEVE_SETTINGS) + || aKey.equals(EMAIL_SEND_SETTINGS)) + { + return null; + } + if (aKey.equals(NETWORK_ACCESS)) + { + // get application suite uid + try + { + appSuiteUid = ApplicationInfo.getInstance().getSuiteUid(); + CmInstance = ConnectionManager.getInstance(); + if (CmInstance != null) + { + AccessPoint apn = CmInstance.getApplicationDefault(appSuiteUid); + if (apn != null) + { + if (apn.getType() == AccessPoint.NAP_IAP) // IAP ID + { + result = _getPropertyApn(NETWORK_ACCESS_V, apn.getNapId()); + } + else + { + result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED); + } + } + else + { + result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED); + } + } + else + { + result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED); + } + } + catch (Exception e) + { + Logger.LOG(Logger.ESOCKET, Logger.EInfo,"MobilInfoProperties :: getSuiteUid exception "); + result = _getPropertyApn(NETWORK_ACCESS_V, APP_DEFAULT_APN_NOT_SPECIFIED); + } + return result; + } + else + { + return _getProperty(value); + } + } + + public boolean isStatic(String aKey) + { + if (aKey.equals(IMEI) || aKey.equals(IMSI)) + { + return true; + } + return false; + } + + private native String _getProperty(int value); + private static native String _getPropertyApn(int property, int aAppDefaultApn); + +} \ No newline at end of file