我有一个广播的接收器,需要访问存储在MainActivity.java
的共享首选项中的数据,这是同一个包的活动。
如果用广播接收器的onreceive()
方法写入,该代码是否有效?
String s ;
MainActivity g =new MainActivity();
s = g.getSharedPreferences(Context.MODE_PRIVATE).getString("Key","no key");
答案 0 :(得分:2)
不,您正尝试通过其构造函数实例化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");
}
}