0

我有一个具有intent过滤器的广播接收器:ACTION_POWER_CONNECTED。接收器应该启动一项服务。当设备尚未重新启动时,接收器工作良好,但是一旦我重新启动设备并插入设备,应用程序就会关闭。在我的接收器中,我引用了另一个活动的静态变量。为什么应用程序部队会这样关闭?在设备重新启动后插入时,App强制关闭

“dataSaved” 是MainActivity

if (MainActivity.dataSaved.getBoolean("User", false)) { 
    Intent i = new Intent(context, BatteryService.class) 
    context.startService(i); 
} 
+0

什么是堆栈跟踪告诉你吗? –

+0

@AlanStokes它没有告诉我任何事情。一旦我的设备重新启动,我连接我的电缆,但在我的系统识别出我插入设备之前,我的app force关闭。 – Navio53

回答

1

一个SharedPreferences变量你说dataSaved是静态SharedPreference,它没有被初始化,所以getBoolean抛出一个NullPointerException。你初始化它,当某个地方MainActivity但重启后没有MainActivity初始化它

获取sharedprefernce在reciever

SharedPreferences dataSaved = context.getSharedPreferences("prefs", Context.MODE_PRIVATE); 
boolean isUser = dataSaved.getBoolean("User", false); 
+0

您可否详细说明如何在接收器中获取sharedpreference?我已经尝试了很多不同的东西,比如使用FileInputStream和FileOutputStream而不是sharedpreferences,但仍然是同样的问题。 – Navio53

相关问题