Java bindService上的NullPointerException getPackageName()

Java bindService上的NullPointerException getPackageName(),java,android,Java,Android,我正在尝试为android应用程序创建远程服务。我或多或少地从Android开发者网站上复制了代码,为我的目的对其进行了重新配置。但是,当我进入bindService步骤时,我在android.content.Context.getPackageName()上得到了一个NullPointerException。我做错了什么 我在早期版本的应用程序中使用了进程内服务,但这还不足以满足我的需求。服务本身在两者之间保持不变,只是在代码中进行了必要的更改。我已经看了这里的所有结果,但它们要么没有关联,要

我正在尝试为android应用程序创建远程服务。我或多或少地从Android开发者网站上复制了代码,为我的目的对其进行了重新配置。但是,当我进入bindService步骤时,我在android.content.Context.getPackageName()上得到了一个NullPointerException。我做错了什么

我在早期版本的应用程序中使用了进程内服务,但这还不足以满足我的需求。服务本身在两者之间保持不变,只是在代码中进行了必要的更改。我已经看了这里的所有结果,但它们要么没有关联,要么对我没有任何帮助

我已尝试将呼叫从onCreate移动到onStart。没有区别。从未执行BinderActivity的onCreate。我尝试了startService而不是bindService,但它给了我同样的错误。我已经检查过这个、意图和mConnection都是非null的(它们是)。我知道服务没有启动,但我使用的是Context.BIND\u AUTO\u CREATE(如果没有启动,应该启动它)。除了在这个问题上挥舞着一只死鸡,我不知道在这里还能做什么

我的主要活动:

package com.example.trainschecker;
导入android.content.Intent;
导入android.os.Bundle;
导入com.google.android.material.floatingactionbutton.floatingactionbutton;
导入androidx.appcompat.app.appcompat活动;
导入androidx.appcompat.widget.Toolbar;
导入androidx.recyclerview.widget.LinearLayoutManager;
导入androidx.recyclerview.widget.recyclerview;
导入android.content.Context;
导入android.os.Message;
导入android.os.Messenger;
导入java.io.*;
导入java.util.ArrayList;
导入android.widget.TextView;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BinderActivity ba=新的BinderActivity();
ba.BindService();
}
}
这就是BinderActivity,魔法应该在这里发生。相反,该错误会:

package com.example.trainschecker;
导入android.app.Activity;
导入android.content.ComponentName;
导入android.content.Context;
导入android.content.Intent;
导入android.content.ServiceConnection;
导入android.os.IBinder;
导入android.os.RemoteException;
导入android.util.Log;
导入android.os.Message;
导入android.os.Handler;
导入android.os.Messenger;
公共类BinderActivity扩展了活动{
公共信使ms=null;
私人活动硕士;
类IncomingHandler扩展了Handler{
@凌驾
公共无效handleMessage(消息消息消息){
超级handleMessage(msg);
}
}
最终通讯器mm=新通讯器(新输入手柄());
专用ServiceConnection mConnection=新ServiceConnection(){
服务连接上的公共无效(组件名称类名称,IBinder服务){
Log.d(“MCon”、“Sentinel Online”);
ms=新信使(服务);
试一试{
Message msg=Message.get(null,TCService.msg\u REGISTER\u CLIENT);
msg.replyTo=mm;
send女士(msg);
}catch(远程异常e){e.printStackTrace();}
}
ServiceDisconnected上的公共void(ComponentName类名称){
Log.d(“MCon”、“Sentinel离线”);
试一试{
Message msg=Message.get(null,2);
msg.replyTo=mm;
send女士(msg);
}catch(远程异常e){e.printStackTrace();}
}
};
公共服务(){
bindService(新意图(this,TCService.class),mConnection,Context.BIND\u AUTO\u CREATE);
}
}
最后是服务本身。那里不多,但它是我的:

package com.example.trainchecker;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;

import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;

import java.util.ArrayList;
import android.os.Message;
import android.os.Messenger;

public class TCService extends Service {

    ArrayList<Messenger> mc = new ArrayList<>();

    @Override
    public IBinder onBind(Intent i) {
        Log.d("TCS", "Binding Now");
        return mm.getBinder();
    }


    static final int MSG_REGISTER_CLIENT = 1;

    class IncomingHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 1:
                    mc.add(msg.replyTo);
                    break;
                case 2:
                    mc.remove(msg.replyTo);
                    break;
                default:
                    super.handleMessage(msg);
            }
        }
    }

    final Messenger mm = new Messenger(new IncomingHandler());
}

package com.example.trainschecker;
导入android.app.NotificationChannel;
导入android.app.NotificationManager;
导入android.app.Service;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Handler;
导入android.os.IBinder;
导入android.util.Log;
导入java.util.ArrayList;
导入android.os.Message;
导入android.os.Messenger;
公共类TCService扩展服务{
ArrayList mc=新的ArrayList();
@凌驾
公共IBinder onBind(意向一){
Log.d(“TCS”,“立即生效”);
返回mm.getBinder();
}
静态最终int MSG_寄存器_客户端=1;
类IncomingHandler扩展了Handler{
@凌驾
公共无效handleMessage(消息消息消息){
开关(msg.what){
案例1:
mc.add(msg.replyTo);
打破
案例2:
mc.移除(msg.replyTo);
打破
违约:
超级handleMessage(msg);
}
}
}
最终通讯器mm=新通讯器(新输入手柄());
}
以下是全部错误:

09-15 11:39:04.518 15448-15448/com.example.trainchecker E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.trainchecker, PID: 15448
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.trainchecker/com.example.trainchecker.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
        at android.app.ActivityThread.access$900(ActivityThread.java:150)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:171)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
        at android.content.ContextWrapper.getPackageName(ContextWrapper.java:133)
        at android.content.ComponentName.<init>(ComponentName.java:128)
        at android.content.Intent.<init>(Intent.java:4468)
        at com.example.trainchecker.BinderActivity.BindService(BinderActivity.java:58)
        at com.example.trainchecker.MainActivity.onCreate(MainActivity.java:65)
        at android.app.Activity.performCreate(Activity.java:6285)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:171) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
09-15 11:39:04.518 15448-15448/com.example.trainschecker E/AndroidRuntime:致命异常:main
流程:com.example.trainschecker,PID:15448
java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.trainchecker/com.example.trainchecker.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
在android.app.ActivityThread.access$900(ActivityThread.java:150)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:171)
位于android.app.ActivityThread.main(ActivityThread.java:5417)