com.phonegap.Device.java Source code

Java tutorial

Introduction

Here is the source code for com.phonegap.Device.java

Source

/*
 * PhoneGap is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 * 
 * Copyright (c) 2005-2010, Nitobi Software Inc.
 * Copyright (c) 2010, IBM Corporation
 */
package com.phonegap;

import java.util.TimeZone;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.phonegap.api.PhonegapActivity;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
import android.content.Context;
import android.provider.Settings;
import android.telephony.TelephonyManager;

public class Device extends Plugin {

    public static String phonegapVersion = "0.9.4"; // PhoneGap version
    public static String platform = "Android"; // Device OS
    public static String uuid; // Device UUID

    /**
     * Constructor.
     */
    public Device() {
    }

    /**
     * Sets the context of the Command. This can then be used to do things like
     * get file paths associated with the Activity.
     * 
     * @param ctx The context of the main Activity.
     */
    public void setContext(PhonegapActivity ctx) {
        super.setContext(ctx);
        Device.uuid = getUuid();
    }

    /**
     * Executes the request and returns PluginResult.
     * 
     * @param action       The action to execute.
     * @param args          JSONArry of arguments for the plugin.
     * @param callbackId   The callback id used when calling back into JavaScript.
     * @return             A PluginResult object with a status and message.
     */
    public PluginResult execute(String action, JSONArray args, String callbackId) {
        PluginResult.Status status = PluginResult.Status.OK;
        String result = "";

        try {
            if (action.equals("getDeviceInfo")) {
                JSONObject r = new JSONObject();
                r.put("uuid", Device.uuid);
                r.put("version", this.getOSVersion());
                r.put("platform", Device.platform);
                r.put("name", this.getProductName());
                r.put("phonegap", Device.phonegapVersion);
                //JSONObject pg = new JSONObject();
                //pg.put("version", Device.phonegapVersion);
                //r.put("phonegap", pg);
                return new PluginResult(status, r);
            }
            return new PluginResult(status, result);
        } catch (JSONException e) {
            return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
        }
    }

    /**
     * Identifies if action to be executed returns a value and should be run synchronously.
     * 
     * @param action   The action to execute
     * @return         T=returns value
     */
    public boolean isSynch(String action) {
        if (action.equals("getDeviceInfo")) {
            return true;
        }
        return false;
    }

    //--------------------------------------------------------------------------
    // LOCAL METHODS
    //--------------------------------------------------------------------------

    /**
     * Get the OS name.
     * 
     * @return
     */
    public String getPlatform() {
        return Device.platform;
    }

    /**
     * Get the device's Universally Unique Identifier (UUID).
     * 
     * @return
     */
    public String getUuid() {
        String uuid = Settings.Secure.getString(this.ctx.getContentResolver(),
                android.provider.Settings.Secure.ANDROID_ID);
        return uuid;
    }

    /**
     * Get the PhoneGap version.
     * 
     * @return
     */
    public String getPhonegapVersion() {
        return Device.phonegapVersion;
    }

    public String getLine1Number() {
        TelephonyManager operator = (TelephonyManager) this.ctx.getSystemService(Context.TELEPHONY_SERVICE);
        return operator.getLine1Number();
    }

    public String getDeviceId() {
        TelephonyManager operator = (TelephonyManager) this.ctx.getSystemService(Context.TELEPHONY_SERVICE);
        return operator.getDeviceId();
    }

    public String getSimSerialNumber() {
        TelephonyManager operator = (TelephonyManager) this.ctx.getSystemService(Context.TELEPHONY_SERVICE);
        return operator.getSimSerialNumber();
    }

    public String getSubscriberId() {
        TelephonyManager operator = (TelephonyManager) this.ctx.getSystemService(Context.TELEPHONY_SERVICE);
        return operator.getSubscriberId();
    }

    public String getModel() {
        String model = android.os.Build.MODEL;
        return model;
    }

    public String getProductName() {
        String productname = android.os.Build.PRODUCT;
        return productname;
    }

    /**
     * Get the OS version.
     * 
     * @return
     */
    public String getOSVersion() {
        String osversion = android.os.Build.VERSION.RELEASE;
        return osversion;
    }

    public String getSDKVersion() {
        String sdkversion = android.os.Build.VERSION.SDK;
        return sdkversion;
    }

    public String getTimeZoneID() {
        TimeZone tz = TimeZone.getDefault();
        return (tz.getID());
    }

}