我有一个广播接收器,它需要访问存储在共享首选项中的数据,MainActivity.java
这是同一包的活动。
onreceive()
如果这段代码写在广播接收器的方法中,它是否有效?
String s ;
MainActivity g =new MainActivity();
s = g.getSharedPreferences(Context.MODE_PRIVATE).getString("Key","no key");
我有一个广播接收器,它需要访问存储在共享首选项中的数据,MainActivity.java
这是同一包的活动。
onreceive()
如果这段代码写在广播接收器的方法中,它是否有效?
String s ;
MainActivity g =new MainActivity();
s = g.getSharedPreferences(Context.MODE_PRIVATE).getString("Key","no key");
不,您正在尝试Activity
通过其构造函数实例化一个。永远不要那样做——活动有特殊的初始化步骤,允许它们成为正确的活动(并因此成为上下文)。
Context
类(您BroadcastReceiver
通过该方法接收一个实例)onReceive()
是包含方法的类,例如getSharedPreferences()
.
改用那个。
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive (Context context, Intent intent){
String s = context.getSharedPreferences("Shared_Prefs_Name",Context.MODE_PRIVATE).getString("Key","def_value");
}
}