2016-05-22 13 views
0

Ich möchte ein Token von einer Aktivität an eine andere übergeben, aber ich weiß nicht, was ich tun kann, weil Intent etwas falsch ist.Token Google Cloud Messaging zwischen Aktivitäten übergeben

Mit dieser Tätigkeit habe ich das Token:

public class RegistrationIntentService extends IntentService { 

// abbreviated tag name 
static final String TAG = "RegIntentService"; 

public RegistrationIntentService() { 
    super(TAG); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    // Make a call to Instance API 
    InstanceID instanceID = InstanceID.getInstance(this); 
    String senderId = getResources().getString(R.string.gcm_defaultSenderId); 
    try { 
     // request token that will be used by the server to send push notifications 
     String token = instanceID.getToken(senderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE); 
     Log.d(TAG, "GCM Registration Token: " + token); 
     // pass along this data 
     sendRegistrationToServer(token); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public void sendRegistrationToServer(String token) { 
    // Add custom implementation, as needed. 
    } 
} 

Mit dieser Aktivität ich den Code in meinem Server übergeben:

public void userLogin(View view){ 
    login_name = ET_NAME.getText().toString(); 
    login_pass = ET_PASS.getText().toString(); 
    String method = "login"; 
    String token = getRegTokenId(); 
    BackgroundTaskLogin backgroundTask = new BackgroundTaskLogin(mContext); 
    backgroundTask.execute(method, login_name, login_pass, token); 
} 



private void getRegTokenId(){ 
    Intent intent = new Intent(mContext, RegistrationIntentService.class); 
    startService(intent); 
} 

Vielen Dank im Voraus.

Antwort

1

Sie scheinen die Dinge ein wenig verwirrt zu haben. Ihr RegistrationIntentService ist eigentlich ein Dienst, keine Aktivität, der Code darunter ist wahrscheinlich in einer Aktivität enthalten.

Es ist ein wenig schwierig, genau zu sagen, was Sie versuchen, aber meine Vermutung ist, dass die userLogin() Methode einige Informationen aus Ihrer Aktivität verwenden soll, um das GCM-Gerät Token zu generieren, und melden Sie Ihren Benutzer auf einige Server und Fügen Sie das GCM-Geräte-Token als Teil der während der Anmeldung gesendeten Informationen hinzu.

Sie gehen davon aus, dass getRegTokenId() Ihnen das GCM-Gerätetoken zurückgibt, aber es gibt es nicht, tatsächlich gibt es void zurück, wie in Ihrem Code definiert.

private void getRegTokenId(){ 
    Intent intent = new Intent(mContext, RegistrationIntentService.class); 
    startService(intent); 
} 

Es sieht aus wie Sie ein Tutorial oder etwas zu folgen versuchen, und in diesem Fall sieht es aus wie die Idee ist, dass die RegistrationIntentService soll den Teil der Anmeldung in den Dienst zu handhaben, oder zumindest das Hochladen der Zeichen.

public void sendRegistrationToServer(String token) { 
    // Add custom implementation, as needed. 
    } 
} 

Also, was ich denke, Sie wirklich tun mögen, ist eher als das Token in der Tätigkeit zu bekommen, ich glaube, Sie den Rest der Login-Info in den Dienst zu bekommen, so dass es auf die sendRegistrationToServer() verfügbar ist

Sie können diese Informationen in der Absicht, fügen Sie

private void getRegTokenId(){ 
    Intent intent = new Intent(mContext, RegistrationIntentService.class); 
    intent.putExtra("SOME_KEY","SOME_VALUE"); // add info to the intent 
    startService(intent); 
} 

Sie können dann, dass in den Dienst zurück zu startService() senden mit

someValue = getStringExtra("SOME_KEY"); 

Wenn Sie das Token wirklich vom Dienst abrufen möchten, gibt es auch Möglichkeiten, dies zu tun. Sie können die Intent-Services here nachlesen.

+0

Vielen Dank jetzt Es funktioniert :) – Carlo

Verwandte Themen