我遇到問題。如果我的設備在服務器中註冊,服務器將生成409響應。所以當我將設備註冊到服務器時,我將服務器生成的ID響應保存在共享首選項管理器中。但由於某些原因,ID未存儲在共享偏好管理器中。我是android開發的新手,我不知道現在該做什麼。請幫我解決這個問題。響應409,共享首選項管理器
共享偏好管理器的
public class SharedPrefManager {
private static final String SHARED_PREF_NAME = "fcmsharedprefdemo";
private static Context mCtx;
private static SharedPrefManager mInstance;
private SharedPrefManager(Context context){
mCtx = context;
}
public static synchronized SharedPrefManager getInstance(Context context){
if(mInstance == null)
mInstance = new SharedPrefManager(context);
return mInstance;
}
public boolean storeDeviceId(String deviceId){
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(d_Id, deviceId);
editor.apply();
return true;
}
public String getDeviceId(){
SharedPreferences sharedPreferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getString(d_Id, null);
}
}
這是我的共享偏好管理器,我加入的主要活動。
public class MainActivity extends AppCompatActivity {
public static String deviceId = "";
public static Context context;
public SharedPrefManager sharedInst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getApplicationContext();
sharedInst = SharedPrefManager.getInstance(context);
setContentView(R.layout.activity_main);
IMEI_NUMBER = Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
if(sharedInst.getDeviceId() == null){
HashMap<String, String> params = new HashMap<String, String>();
params.put("name", IMEI_NUMBER);
JsonObjectRequest req = new JsonObjectRequest(server_url, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
String s = "id";
try {
deviceId = response.getString(s);
sharedInst.storeDeviceId(deviceId);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
}
);
ApplicationController.getInstance().addToRequestQueue(req);
}
Log.d("deviceID:", sharedInst.getDeviceId());
}
共享首選項管理器只是存儲設備的ID並獲取設備ID還存儲fcm令牌並獲取fcm令牌。
在我的代碼中,我試圖保存從服務器獲得的deviceId作爲響應。但是我面臨的問題是deviceId由於某種原因沒有得到存儲。一些android guru能幫助我解決這個問題,爲什麼deviceId沒有被存儲。我在這裏錯過了很明顯的東西。有什麼我必須添加到代碼中。我沒有正確生成實例,這是設備ID未生成的原因。我可以看到調用正確地對服務器進行,服務器也正在生成deviceId。
也可以有人告訴我如何處理像409這樣的回覆,我希望我的程序能夠運行,儘管得到這些迴應。
歡迎來到堆棧溢出!哇,這是很多代碼。如果包含複製錯誤所需的最小代碼量,則更有可能得到答案 –
如果可能,現在是否可以幫助我,爲什麼deviceId沒有被存儲。它給出null – Bijju