Ich erstelle eine App mit Google Cloud Messaging. Nachdem ich die App geöffnet habe und meine Hauptaktivität (LoginActivity) die App registriert und das "GCM Registration Token" erhält, lege ich folgende Zeile in RegistrationIntentService.String wurde leer nachdem er gefüllt wurde
sharedPreferences.edit().putString("token", token).apply();
Die Aktivität ruft dieses Token ab und zeigt einen Toast mit dem Token an. Aber nachdem ich einen Knopf (btn_login) drücken wird der Token geleert ...
Dies ist der Code in LoginActivity
private BroadcastReceiver mRegistrationBroadcastReceiver;
private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
private boolean isReceiverRegistered;
private Context context;
static String token;
Button btn_login;
EditText txt_GebruikersNaam, txt_Wachtwoord;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
context = getApplicationContext();
btn_login = (Button)findViewById(R.id.btn_login);
txt_GebruikersNaam= (EditText)findViewById(R.id.txt_GebruikersNaam);
txt_Wachtwoord= (EditText)findViewById(R.id.txt_Wachtwoord);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String gebruikersnaam = txt_GebruikersNaam.getText().toString();
String wachtwoord = txt_Wachtwoord.getText().toString();
if(!gebruikersnaam.equals("") || !wachtwoord.equals("")) {
// HERE THE TOKEN IS EMPTY
String json = createJsonPost(gebruikersnaam, wachtwoord, token);
}
}
});
token = getToken();
}
private String getToken(){
final String[] token = {""};
mRegistrationBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
boolean sentToken = sharedPreferences.getBoolean(QuickstartPreferences.SENT_TOKEN_TO_SERVER, false);
if (sentToken) {
CharSequence text = sharedPreferences.getString("token",null);
Toast.makeText(context, text.toString(), Toast.LENGTH_SHORT).show();
token[0] = text.toString();
} else {
Toast.makeText(context, "Geen verbinding", Toast.LENGTH_SHORT).show();
}
}
};
// Registering BroadcastReceiver
registerReceiver();
if (checkPlayServices()) {
// Start IntentService to register this application with GCM.
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
return token[0];
}
private void registerReceiver(){
if(!isReceiverRegistered) {
LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
new IntentFilter(QuickstartPreferences.REGISTRATION_COMPLETE));
isReceiverRegistered = true;
}
}
private String createJsonPost(String Naam, String Wachtwoord, String token){
JSONObject jsonObject = new JSONObject();
JSONObject jsonData = new JSONObject();
jsonData.put("user", Naam);
jsonData.put("pass", Wachtwoord);
jsonData.put("token", token);
jsonObject.put("authorization", jsonData);
}
wo ist Ihr ** Spartoken zum Präferenzcode ** ?? –
Nicht sicher, ob das hilft, aber Sie speichern das Token in 'token [0]', aber Ihre Variable ist ein einfacher 'String'. Zweitens sehe ich keinen Ort, an dem Sie das Token speichern. – kazbeel