gpt4 book ai didi

android - 在 Android 的 Repository 或 ViewModel 中使用共享的 Preference 值

转载 作者:行者123 更新时间:2023-12-03 21:20:07 25 4
gpt4 key购买 nike

我正在使用 ArchitectureComponents在我的应用程序中。我正在制作 API来自 ViewModel 的请求并将数据设置为 RecyclerView在 ActivityMain 中使用 ViewModel。为了进行 Api 调用,我需要一个 Token保存在 SharedPreference .我需要在发出请求时获取该 token 并将其添加到 header 中。在哪里以及如何获取 SharedPreference 值。它应该在 ViewModel 或 Repository 中。
这是我的 ViewModel 的代码

public class FoodieViewModel extends AndroidViewModel {
FoodieRepository repository;
MutableLiveData<ArrayList<Foodie>> foodieList;
public FoodieViewModel(@NonNull Application application) {
super(application);
repository=new FoodieRepository(application);
}

LiveData<ArrayList<Foodie>> getAllFoodie(){
if(foodieList==null){
foodieList=new MutableLiveData<ArrayList<Foodie>>();
loadFoodies();
}
return foodieList;
}
public void loadFoodies(){
String url="somethimg.com";
JsonArrayRequest request =new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
ArrayList<Foodie> list=new ArrayList<>();
try {
for(int i=0;i<response.length();i++){
JSONObject obj=response.getJSONObject(i);
Foodie foodie=new Foodie();
String name=obj.getString("firstname");
foodie.setName(name);
list.add(foodie);
}

}catch (JSONException e){
e.printStackTrace();
}
foodieList.setValue(list);

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {

}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String auth = "JWT " + "sometoken";
headers.put("Authorization", auth);
headers.put("Content-Type", "application/json");
return headers;
}

};
AppController.getInstance().addToRequestQueue(request);
}

Token存放在 SharedPreference中如何获取?

最佳答案

public class FoodieViewModel extends AndroidViewModel {
........
SharedPreferences sharedpreferences =getApplication().getSharedPreferences("preference_key", Context.MODE_PRIVATE);
...........

//wherever u want to get token
String token = sharedpreferences.getString("token", "")

}

关于android - 在 Android 的 Repository 或 ViewModel 中使用共享的 Preference 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55122907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com