0

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

onreceive()如果这段代码写在广播接收器的方法中,它是否有效?

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

1 回答 1

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");
   }
}
于 2013-08-10T04:02:23.200 回答