我可以在android服务中使用共享首选项吗?

我可以在android服务中使用共享首选项吗?,android,android-studio,notifications,android-service,sharedpreferences,Android,Android Studio,Notifications,Android Service,Sharedpreferences,我有一个android应用程序,它包含一些android后台服务,在设备启动后可以工作,而不运行应用程序,服务会向用户发送通知。我需要一些有关上次登录应用程序(上次输入的用户名和密码)的详细信息,以便使用服务代码 顺便说一句,我在登录页面中使用共享首选项来存储上次登录的用户的用户名和密码,所以我可以在应用程序未运行时使用这些共享首选项从服务中获取用户名和密码吗 我已经试过了,这是我在安卓服务上的代码 saveLog = loginPref.getBoolean("saveLog", fa

我有一个android应用程序,它包含一些android后台服务,在设备启动后可以工作,而不运行应用程序,服务会向用户发送通知。我需要一些有关上次登录应用程序(上次输入的用户名和密码)的详细信息,以便使用服务代码

顺便说一句,我在登录页面中使用共享首选项来存储上次登录的用户的用户名和密码,所以我可以在应用程序未运行时使用这些共享首选项从服务中获取用户名和密码吗

我已经试过了,这是我在安卓服务上的代码

    saveLog = loginPref.getBoolean("saveLog", false);
    String userName = "";
    String passWord = "";

    if (saveLog == true) {
        userName =loginPref.getString("username", "");
        passWord =loginPref.getString("password", "");
    }
以下是登录活动代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    log = (Button) findViewById(R.id.butLogin);
    log.setOnClickListener(this);
    loginPref = getSharedPreferences("loginPref", MODE_PRIVATE);
    loginPrefEditor = loginPref.edit();
    editUsername = (EditText) findViewById(R.id.userEB);
    editPassword = (EditText) findViewById(R.id.passEB);
    saveCheckBox = (CheckBox) findViewById(R.id.saveCB);

    saveLog = loginPref.getBoolean("saveLog", false);

    if (saveLog == true) {
        editUsername.setText(loginPref.getString("username", ""));
        editPassword.setText(loginPref.getString("password", ""));
        saveCheckBox.setChecked(true);
    }
}
在这里,我存储来自登录活动的这些共享首选项的值

        if (saveCheckBox.isChecked()) {
            loginPrefEditor.putBoolean("saveLog", true);
            loginPrefEditor.putString("username", username);
            loginPrefEditor.putString("password", password);
            loginPrefEditor.commit();
        } else {
            loginPrefEditor.clear();
            loginPrefEditor.commit();
        } 

当然可以,我的工作代码如下:

mLoginPreferences=getSharedPreferences(getResources().getString(R.string.pref_name), Context.MODE_PRIVATE);
您可以将变量放入prefs、清除prefs等。。你要什么都行


不要忘记这一点:服务就像活动一样,但它们是在后台运行的。

是的,它会工作的。你试过了吗,但没有成功?是的,我试过上面的代码,但它在@sankyjain不起作用。最大的问题是我今天刚刚了解了碎片首选项,所以对任何东西都不熟悉。你在共享首选项中保存值的地方,请显示codedone,我更新了它@sankyjain为什么使用saveCheckBox.isChecked()尝试删除它一次,并检查您是否从共享首选项中获得了价值不幸的是,我对这些主题非常熟悉,请您将这行代码设置为我的案例,因为我不知道如何读取2个变量。如果您可以发布您的服务代码,我可以帮助您。你可以使用这个网站:非常感谢你的时间。我已经整理了我的代码,现在它的工作非常出色。