Register a device id with c2dm

pull/14/head
Sam Bosley 13 years ago
parent 7f740c159c
commit 34e751e632

@ -10,6 +10,9 @@ import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
@ -21,6 +24,7 @@ import com.todoroo.andlib.service.NotificationManager;
import com.todoroo.andlib.service.NotificationManager.AndroidNotificationManager;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.TagViewActivity;
@ -72,6 +76,35 @@ public class C2DMReceiver extends BroadcastReceiver {
}
};
private static String getDeviceID() {
String id = ((TelephonyManager) ContextManager.getContext().getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
if(id == null) { // check for devices that do not have a Telephony Manager device id
if(AndroidUtilities.getSdkVersion() > 8) { //Gingerbread and above
//the following uses relection to get android.os.Build.SERIAL to avoid having to build with Gingerbread
try {
id = Build.SERIAL;
if(Build.UNKNOWN.equals(id))
id = "";
} catch(Exception e) {
e.printStackTrace();
id = "";
}
} else {
id = Secure.getString(ContextManager.getContext().getContentResolver(), Secure.ANDROID_ID);
}
if ("".equals(id) || "9774d56d682e549c".equals(id)) { // check for failure or devices affected by the "9774d56d682e549c" bug
return null;
}
}
return id;
}
@Override
public void onReceive(Context context, final Intent intent) {
ContextManager.setContext(context);
@ -116,7 +149,7 @@ public class C2DMReceiver extends BroadcastReceiver {
tagData.readFromCursor(cursor);
}
new ActFmSyncV2Provider().synchronizeList(tagData, false, refreshOnlyCallback);
actFmSyncService.fetchTag(tagData);
} finally {
cursor.close();
}
@ -291,7 +324,13 @@ public class C2DMReceiver extends BroadcastReceiver {
new Thread(new Runnable() {
@Override
public void run() {
new ActFmSyncV2Provider().synchronizeList(tagData, false, refreshOnlyCallback);
try {
actFmSyncService.fetchTag(tagData);
} catch (IOException e) {
Log.e("c2dm-tag-rx", "io-exception", e);
} catch (JSONException e) {
Log.e("c2dm-tag-rx", "json-exception", e);
}
}
}).start();
} else {
@ -366,7 +405,11 @@ public class C2DMReceiver extends BroadcastReceiver {
@Override
public void run() {
try {
actFmSyncService.invoke("user_set_c2dm", "c2dm", registration);
String deviceId = getDeviceID();
if (deviceId != null)
actFmSyncService.invoke("user_set_c2dm", "c2dm", registration, "device_id", deviceId);
else
actFmSyncService.invoke("user_set_c2dm", "c2dm", registration);
Preferences.setString(PREF_REGISTRATION, registration);
} catch (IOException e) {
Log.e("astrid-actfm", "error-c2dm-transfer", e);

Loading…
Cancel
Save