活动和广播接收器之间的通信

时间:2013-08-10 03:35:59

标签: android

我有一个广播的接收器,需要访问存储在MainActivity.java的共享首选项中的数据,这是同一个包的活动。

如果用广播接收器的onreceive()方法写入,该代码是否有效?

String s ;  
MainActivity g =new MainActivity();
s = g.getSharedPreferences(Context.MODE_PRIVATE).getString("Key","no key");

1 个答案:

答案 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");
   }
}