导致Context.getPackageName()出现NullPointerException的Java Android上下文问题>> [

问题描述 投票:0回答:1
我想做的就是调用此方法从MainActivity中启动意图,而我不断得到:

java.lang.NullPointerException:尝试调用虚拟方法'java.lang.String android.content.Context.getPackageName()'在null上对象参考

我假设的问题是在某个时候传递上下文,但是我看不到如何正确设置?

public class Manager extends AppCompatActivity implements Serializable { public void startUpdatingSensors(){ //Start sensor service -->Here Intent startService = new Intent(this, SensorService.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { startForegroundService(startService); } else { startService(startService); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_trace_manager); } }

从Main称为:

public class MainActivity extends AppCompatActivity { public static final String TAG = "Main"; private Manager Manager = new TraceManager(this); @RequiresApi(api = Build.VERSION_CODES.O) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //initialise trace Manager.startUpdatingSensors(); Manager.startUpdatingLocation(); Manager.startUpdatingTrace(); //get permissions for location Dexter.withActivity(this) .withPermissions(Arrays.asList( Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION )) .withListener(new MultiplePermissionsListener() { @Override public void onPermissionsChecked(MultiplePermissionsReport multiplePermissionsReport) { Manager.startUpdatingSensors(); Manager.startUpdatingLocation(); Manager.startUpdatingTrace(); } @Override public void onPermissionRationaleShouldBeShown(List<PermissionRequest> list, PermissionToken permissionToken) { } }); } }

我已经尝试通过各种上下文和活动,但是我无法使其正常工作。

完整的堆栈跟踪:

Process: com.app.android, PID: 11760 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.android/com.app.android.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:3270) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 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:145) at android.content.ComponentName.<init>(ComponentName.java:131) at android.content.Intent.<init>(Intent.java:6513) at com.app.android.Manager.startUpdatingSensors(Manager.java:187) at com.app.android.MainActivity.onCreate(MainActivity.java:76)

在Manager中为187的行是:Intent startService = new Intent(this,SensorService.class); 

我要做的就是从MainActivity调用此方法以启动意图,而我不断得到:java.lang.NullPointerException:尝试调用虚拟方法'java.lang.String android...。

java android android-intent android-service android-context
1个回答
0
投票
更改下一行:

Intent startService = new Intent(context,SensorService.class);
© www.soinside.com 2019 - 2024. All rights reserved.