Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从GCMBroadcastReceiver获取共享首选项_Java_Android_Notifications_Sharedpreferences_Google Cloud Messaging - Fatal编程技术网

Java 从GCMBroadcastReceiver获取共享首选项

Java 从GCMBroadcastReceiver获取共享首选项,java,android,notifications,sharedpreferences,google-cloud-messaging,Java,Android,Notifications,Sharedpreferences,Google Cloud Messaging,我的应用程序中有一个值保存在main活动的共享首选项中,每当我的应用程序收到通知时,我需要在我的GCMBroadcastReceiver中使用该值 我可以从GCMBroadcastReceiver访问共享首选项吗?或者有其他方法接收此值?使用以下代码保存值和检索值 public class GCMBroadcastReceiver extends BroadcastReceiver { PreferenceManager manager; @Override public

我的应用程序中有一个值保存在
main活动的共享首选项中,每当我的应用程序收到通知时,我需要在我的
GCMBroadcastReceiver
中使用该值


我可以从
GCMBroadcastReceiver
访问共享首选项吗?或者有其他方法接收此值?

使用以下代码保存值和检索值

public class GCMBroadcastReceiver extends BroadcastReceiver 
{
   PreferenceManager manager;

   @Override
   public void onReceive(Context context, Intent intent) 
  {

      manager = (PreferenceManager) PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
      SharedPreferences preferences = manager.getSharedPreferences();
    // handle here your broadcast receiver specific code. 
  }
}
我发现了问题

我必须使用传递给onReceive方法的上下文

SharedPreferences prefs = context.getsharedPreferences("prefs name", Context.MODE_PRIVATE);

它不起作用,因为
GcmBroadcastReceiver
不是一个活动。但您将可以访问BroadcastReceiver中的上下文,通过它可以获取应用程序上下文。您只需做一件事,即在ApplicationContext中保存首选项,而不是任何特定于组件的上下文。然后,只有您的首选项才能通过应用程序使用。