0


I have been trying to build a project named App Lock.
My problem is that whenever i try to run the project it shows a message Unfortunately App Lock has been stopped.

Log cat :-

01-15 10:29:58.322 31941-31941/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.pk.applock, PID: 31941
                                                   java.lang.RuntimeException: Unable to start service com.pk.applock.ApplockService@21d15610 with Intent { act=com.pk.applock.applock_service.start flg=0x4 cmp=com.pk.applock/.ApplockService (has extras) }: java.lang.NullPointerException
                                                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2886)
                                                       at android.app.ActivityThread.access$2100(ActivityThread.java:139)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1390)
                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                       at android.os.Looper.loop(Looper.java:149)
                                                       at android.app.ActivityThread.main(ActivityThread.java:5257)
                                                       at java.lang.reflect.Method.invokeNative(Native Method)
                                                       at java.lang.reflect.Method.invoke(Method.java:515)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
                                                       at dalvik.system.NativeStart.main(Native Method)
                                                    Caused by: java.lang.NullPointerException
                                                       at com.pk.applock.ApplockService.getTopTask(ApplockService.java:37)
                                                       at com.pk.applock.ApplockService.checkPackageChanged(ApplockService.java:86)
                                                       at com.pk.applock.ApplockService.onStartCommand(ApplockService.java:110)
                                                       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2869)
                                                       at android.app.ActivityThread.access$2100(ActivityThread.java:139) 
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1390) 
                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                       at android.os.Looper.loop(Looper.java:149) 
                                                       at android.app.ActivityThread.main(ActivityThread.java:5257) 
                                                       at java.lang.reflect.Method.invokeNative(Native Method) 
                                                       at java.lang.reflect.Method.invoke(Method.java:515) 
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 
                                                       at dalvik.system.NativeStart.main(Native Method) 

Here is the complete code of ApplockService.class

public class ApplockService
extends Service{
private Handler handler;
private static PendingIntent pendingIntent;
private String packageName;
private Map<String,Boolean> lockedPackages;
Intent intent;
private ActivityManager manager;
Context context;
@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
private ActivityManager.RunningTaskInfo getTopTask()
{
    return (ActivityManager.RunningTaskInfo)this.manager.getRunningTasks(1).get(0);
}
private boolean init()
{
    handler=new Handler();
    lockedPackages=new HashMap();
    Iterator iterator=PrefUtils.getLocked((Context)this).iterator();
    do {
        if(!iterator.hasNext()) {
            ApplockService.startAlarm((Context)this);
        return true;
        }
        String string=(String)iterator.next();
        lockedPackages.put(string,true);
                    }while (true);
    }
       private static void startAlarm(Context context)
    {
        AlarmManager alarmManager=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        PendingIntent repeated_intent=ApplockService.getRunIntent(context);
        alarmManager.setRepeating(3, SystemClock.elapsedRealtime(),5,repeated_intent);

    }
    private static final PendingIntent getRunIntent(Context context)
    {
        if(pendingIntent==null)
        {
            Intent intent1=new Intent(context,ApplockService.class);
            intent1.setAction("com.pk.applock.applock_service.start");
            pendingIntent=PendingIntent.getService(context,1193135,intent1,0);

    }
    return pendingIntent;
}
public static final void start(Context context)
{
    ApplockService.startAlarm(context);

}
public void showLocker(String packageName)
{
    Intent intent=LockService.getLockIntent((Context)this,packageName);

    intent.setAction(LockService.ACTION_COMPARE);
    intent.putExtra(LockService.EXTRA_PACKAGENAME, packageName);
    startService(intent);
}
public void checkPackageChanged()
{
    String string=getTopTask().topActivity.getPackageName();

    onAppOpen(string);
}
private void onAppOpen(String string)
{
    if (lockedPackages.containsKey(string))
        onLockedAppOpen(string);
}
private void onLockedAppOpen(String string)
{
    if(this.lockedPackages.get(string).booleanValue())
    {
        showLocker(string);
    }

}
@Override
public int onStartCommand(Intent intent,int n2,int n3)
{
    if(intent==null||"com.pk.applock.applock_service.start".equals(intent.getAction()))
    {
        if(!init())
            init();
        checkPackageChanged();
        return 2;
    }
    return 2;
}
}

Please help me!!!
I am new to android!

Thanks in advance.

Priyank
  • 83
  • 8

1 Answers1

0

Seem like manager object is not set yet in ApplockService class. You may put this code to init() function:

this.manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
Rey Pham
  • 605
  • 3
  • 11
  • Okay I'll try and inform you whether its working or not!! – Priyank Jan 15 '16 at 05:34
  • When i run the code it become unresponsive on debugging it, It seems to me that there is problem in startAlarm() method in which setRepeating is called please tell me what to do? – Priyank Jan 15 '16 at 08:02
  • Or can you tell me the suitable place to call ApplockService's start method. – Priyank Jan 15 '16 at 08:12