Hi,
     I've developed an application which has a service and boot completed
receiver. The boot completed receiver schedules the service to be executed
after every 7 minutes. The boot completed receiver saves its context in a
public static variable which is then accessed by service whenever it is
scheduled by scheduler. The service first gets the IMEI number of phone and
then saves it to a file if it is not already saved. Everything worked
smoothly but then i logged into market place and after that the scheduled
service was not able to get IMEI number directly , neither was it able to
open the file which had already been created and it keeps on throwing
nullpointer exception for both direct IMEI retrieval and attempt to open
file  .

Following is the immidiate code executed by service which is scheduled by
schedular after contstant intervals (BootCompletedReceiver is the receiver
which is called when phone is restarted and it schedules a service to be
started after fixed time intervals,  appContext is public static Context
variable of BootCompletedReceiver which is equal to context of
BootCompletedReceiver and accessed by service and other classes for
different purposes)

    public String getIMEINumber() throws Exception {
        String imei = null;

        try {
            TelephonyManager tm = (TelephonyManager)
BootCompletedReceiver.appContext
                    .getSystemService(Context.TELEPHONY_SERVICE);

            imei = tm.getDeviceId();
           System.out.println("[IMEIProcessor]: imei:" + imei);
            }

            if (imei != null) {
                storeIMEI(imei);
                return imei;
            } else {
                imei = getIMEIFromFile();
                if (imei != null) {
                    return imei;
                } else {
                    throw new NullPointerException();
                }

            }
        } catch (Exception e) {
            imei = getIMEIFromFile();
            if (imei != null) {
                return imei;
            } else {
                throw new NullPointerException();
            }
        }
    }

/////////////////////////////////////////////
private boolean isIMEIFilePresent(){
        FileInputStream fis = null;
        try{
            fis =
BootCompletedReceiver.appContext.openFileInput("imei.file");
            fis.close();
            System.out.println("[IMEIProcessor]: imei file present");
            return true;
        } catch (Exception e){
                System.out.println(e);
                System.out.println("[IMEIProcessor]: imei file not
present");
                return false;
        }

    }


So following is first line of log when everything is working fine

I/System.out(  194): [IMEIProcessor]: imei:358280015019595

But when i logged into androidmarket place, application was neither able to
get IMEI number from system nor it was able to check if imei.file is
present. Following are logged messages .

D/gmail-ls(  123): clearNewUnreadMailForNotificationLabelIfNeeded. Count: 0,
label: -65541/^^unseen-^^vmi
D/dalvikvm(  386): GC freed 3431 objects / 198576 bytes in 115ms
I/gmail-ls(  123): ConversationCursor requesting results for query[label:^i]
with queryId 1 starting at 1315217442227617791
D/gmail-ls(  123): clearNewUnreadMailForNotificationLabelIfNeeded. Count: 0,
label: -65540/^^unseen-^i
D/gmail-ls(  123): clearNewUnreadMailForNotificationLabelIfNeeded. Count: 0,
label: -65541/^^unseen-^^vmi
D/Gmail   (  386): ConversationHeaderCursorAdapter.cursorStatusChanged:
LOADING
D/gmail-ls(  123): clearNewUnreadMailForNotificationLabelIfNeeded. Count: 0,
label: -65540/^^unseen-^i
D/gmail-ls(  123): clearNewUnreadMailForNotificationLabelIfNeeded. Count: 0,
label: -65541/^^unseen-^^vmi
D/Gmail   (  386): ConversationHeaderCursorAdapter.cursorStatusChanged:
LOADED
I/WindowManager(   57): Input configuration changed: { scale=1.0 imsi=0/0
locale=en_AU touch=3 key=2/2 nav=3 orien=1 }
D/StatusBar(   57): updateResources
D/dalvikvm(   92): GC freed 3964 objects / 241744 bytes in 189ms
D/dalvikvm(   57): GC freed 5513 objects / 267056 bytes in 166ms
D/dalvikvm(  386): GC freed 3238 objects / 181800 bytes in 94ms
D/dalvikvm(  123): GC freed 4506 objects / 235528 bytes in 143ms
D/SurfaceFlinger(   57): About to give-up screen, flinger = 0xc3c18
D/dalvikvm(  123): GC freed 620 objects / 42568 bytes in 145ms
D/dalvikvm(   57): GC freed 14853 objects / 840120 bytes in 263ms
----> I/ActivityManager(   57): Start proc MyService.Test for service
MyService.Test/.MyService: pid=426 uid=10023 gids={3003}
I/dalvikvm(  426): Ignoring DDM send req for type=0x41504e4d len=38
I/dalvikvm(  426): Ignoring DDM send req for type=0x41504e4d len=36
I/System.out(  426): java.lang.NullPointerException
I/System.out(  426): [IMEIProcessor]: imei file not present
I/ActivityManager(   57): Stopping service: MyService.Test/.MyService
I/System.out(  426): java.lang.NullPointerException
I/System.out(  426): [IMEIProcessor]: imei file not present
D/dalvikvm(  426): GC freed 680 objects / 42208 bytes in 129ms
I/ActivityManager(   57): Process MyService.Test (pid 426) has died.

Can you tell what i'm doing wrong? Why Activity is manager is starting
process MyService.Test because when things were working fine there was no
mentioning of Activitymanager and following was the first line to be printed
in logs

I/System.out(  194): [IMEIProcessor]: imei:358280015019595

Suddenly why ActivityManager is trying to start my application ? and after
that service is never able to get IMEI and nor open file. Is it due to
context which the service uses of Boot completed receiver i.e
BootCompletedReceiver.appContext ?

I'm realy stuck due to this issue . Please help me to solve this issue

Thanks

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to