Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法创建和运行应用程序锁定服务_Java_Android_Service_Alarmmanager - Fatal编程技术网

Java 无法创建和运行应用程序锁定服务

Java 无法创建和运行应用程序锁定服务,java,android,service,alarmmanager,Java,Android,Service,Alarmmanager,我一直在尝试构建一个名为App Lock的项目。 我的问题是,每当我尝试运行该项目时,它都会显示一条消息,不幸的是,应用程序锁已停止 日志类别:- 01-15 10:29:58.322 31941-31941/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.pk.applock, PID: 31941


我一直在尝试构建一个名为App Lock的项目。
我的问题是,每当我尝试运行该项目时,它都会显示一条消息,不幸的是,应用程序锁已停止

日志类别:-

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) 
下面是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;
}
}
公共类ApplockService
扩展服务{
私人经办人;
私人静电吊挂;
私有字符串包名;
私有地图锁定包;
意图;
私人活动经理;
语境;
@可空
@凌驾
公共IBinder onBind(意向){
返回null;
}
private ActivityManager.RunningTaskInfo getTopTask()的私有活动
{
返回(ActivityManager.RunningTaskInfo)this.manager.getRunningTasks(1.get)(0);
}
私有布尔init()
{
handler=新的handler();
lockedPackages=newHashMap();
Iterator Iterator=PrefUtils.getLocked((上下文)this.Iterator();
做{
如果(!iterator.hasNext()){
startAlarm((上下文)this);
返回true;
}
字符串=(字符串)迭代器。下一步();
lockedPackages.put(字符串,true);
}虽然(正确);
}
私有静态void startAlarm(上下文)
{
AlarmManager AlarmManager=(AlarmManager)context.getSystemService(context.ALARM\u服务);
PendingIntent=ApplockService.getRunIntent(上下文);
alarmManager.setRepeating(3,SystemClock.elapsedRealtime(),5,repeated_意图);
}
私有静态最终PendingEvent getRunIntent(上下文)
{
if(pendingIntent==null)
{
Intent intent1=新的Intent(上下文,ApplockService.class);
intent1.setAction(“com.pk.applock.applock_service.start”);
pendingent=pendingent.getService(上下文,1193135,意图1,0);
}
返回悬挂式帐篷;
}
公共静态最终无效开始(上下文)
{
ApplockService.startAlarm(上下文);
}
public void showLocker(字符串包名称)
{
Intent-Intent=LockService.getLockIntent((上下文)this,packageName);
意图.设置动作(锁定服务.动作\u比较);
intent.putExtra(LockService.EXTRA_PACKAGENAME,PACKAGENAME);
startService(意向);
}
公共无效检查包已更改()
{
String String=getTopTask().topActivity.getPackageName();
onAppOpen(字符串);
}
应用程序打开时的专用void(字符串)
{
if(锁包.容器(字符串))
onLockedAppOpen(字符串);
}
私有void onLockedAppOpen(字符串)
{
if(this.lockedPackages.get(string).booleanValue())
{
showLocker(字符串);
}
}
@凌驾
公共int onStartCommand(Intent Intent、int n2、int n3)
{
if(intent==null | |“com.pk.applock.applock_service.start”.equals(intent.getAction()))
{
如果(!init())
init();
checkPackageChanged();
返回2;
}
返回2;
}
}
请帮帮我
我是android新手


提前感谢。

似乎
管理器
对象尚未在
ApplockService
类中设置。您可以将此代码放入
init()
函数:

this.manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

在何处创建此.manager?也许你应该发布ApplockService类的完整代码。这可能是你的问题@雷帕姆好的,我会的that@ReyPham现在检查问题!好的,我会试着告诉你它是否有效!!当我运行代码时,它在调试时会变得无响应,在我看来,调用setRepeating的startAlarm()方法中存在问题。请告诉我该怎么做?或者你能告诉我调用ApplockService的start方法的合适位置吗。