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