PageRenderTime 58ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/ANE3Source/src/com/adobe/air/AndroidGcmRegistrationService.java

https://github.com/SixMinute/ANEResourcesBugExample
Java | 395 lines | 351 code | 31 blank | 13 comment | 41 complexity | 252d5ff765175ecc312c725be267a94c MD5 | raw file
  1. // Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
  2. // Jad home page: http://www.geocities.com/kpdus/jad.html
  3. // Decompiler options: braces fieldsfirst space lnc
  4. package com.adobe.air;
  5. import android.app.IntentService;
  6. import android.content.ComponentName;
  7. import android.content.Intent;
  8. import android.content.SharedPreferences;
  9. import android.content.pm.PackageInfo;
  10. import android.content.pm.PackageManager;
  11. import android.content.pm.ServiceInfo;
  12. import android.location.Address;
  13. import android.location.Geocoder;
  14. import android.location.Location;
  15. import android.location.LocationManager;
  16. import android.os.AsyncTask;
  17. import android.os.Build;
  18. import android.os.Bundle;
  19. import android.os.ResultReceiver;
  20. import android.util.Log;
  21. import com.amazonaws.AmazonClientException;
  22. import com.amazonaws.AmazonServiceException;
  23. import com.amazonaws.auth.BasicAWSCredentials;
  24. import com.amazonaws.regions.Region;
  25. import com.amazonaws.regions.Regions;
  26. import com.amazonaws.services.sns.AmazonSNS;
  27. import com.amazonaws.services.sns.AmazonSNSClient;
  28. import com.amazonaws.services.sns.model.CreatePlatformEndpointRequest;
  29. import com.amazonaws.services.sns.model.CreatePlatformEndpointResult;
  30. import com.amazonaws.services.sns.model.InternalErrorException;
  31. import com.amazonaws.services.sns.model.InvalidParameterException;
  32. import com.amazonaws.services.sns.model.SetEndpointAttributesRequest;
  33. import com.google.android.gms.common.GooglePlayServicesUtil;
  34. import com.google.android.gms.gcm.GoogleCloudMessaging;
  35. import java.util.HashMap;
  36. import java.util.List;
  37. import java.util.Locale;
  38. import java.util.Map;
  39. import org.json.JSONObject;
  40. // Referenced classes of package com.adobe.air:
  41. // AdobeAIR, SystemCapabilities
  42. public class AndroidGcmRegistrationService extends IntentService
  43. {
  44. private class AsyncTaskRunner extends AsyncTask
  45. {
  46. final AndroidGcmRegistrationService this$0;
  47. protected volatile Object doInBackground(Object aobj[])
  48. {
  49. return doInBackground((Integer[])aobj);
  50. }
  51. protected transient Void doInBackground(Integer ainteger[])
  52. {
  53. label0:
  54. {
  55. Thread.sleep(ainteger[0].intValue());
  56. AndroidGcmRegistrationService androidgcmregistrationservice = AndroidGcmRegistrationService.this;
  57. GoogleCloudMessaging googlecloudmessaging = mGcm;
  58. String as[] = new String[1];
  59. as[0] = AndroidGcmRegistrationService.SENDER_ID;
  60. androidgcmregistrationservice.mRegId = googlecloudmessaging.register(as);
  61. if (mRegId == null)
  62. {
  63. registerInBackground(0x493e0);
  64. break label0;
  65. }
  66. try
  67. {
  68. sendRegistrationIdToAws();
  69. }
  70. catch (Exception exception)
  71. {
  72. registerInBackground(0x493e0);
  73. }
  74. }
  75. return null;
  76. }
  77. private AsyncTaskRunner()
  78. {
  79. this$0 = AndroidGcmRegistrationService.this;
  80. super();
  81. }
  82. }
  83. private static String ACCESS_KEY = "AKIAJG52SOYICZNTIMFQ";
  84. private static String APPLICATION_ARN = "arn:aws:sns:us-west-2:502492504188:app/GCM/AdobeAIRGCM";
  85. private static final String CUSTOM_USER_DATA = "CustomUserData";
  86. private static final String ENABLED = "Enabled";
  87. private static final String ENABLE_LOGGING = "enableLogging";
  88. private static final int MAX_RETRIES = 10;
  89. private static final String PROPERTY_APP_VERSION = "appVersion";
  90. private static final String PROPERTY_ENDPOINT_ARN = "endpointArn";
  91. private static final String RATE_LIMIT = "rateLimit";
  92. private static final int RETRY_TIME = 0x493e0;
  93. private static String SECRET_KEY = "yBwSeKzSWwPNrQ33G49qmwI8TeB5xZz7pqttfeGQ";
  94. private static String SENDER_ID = "233437466354";
  95. private static final String TAG = "AndroidGcmRegistrationService";
  96. private static final String TEST_ACCESS_KEY = "AKIAI5AWXTYSXJGU55QA";
  97. private static final String TEST_APPLICATION_ARN = "arn:aws:sns:us-west-2:413177889857:app/GCM/airruntimetestapp";
  98. private static final String TEST_ENV = "testEnv";
  99. private static final String TEST_SECRET_KEY = "8DSumtc3WxSjf3LUsjzoZ9fU8qyYyKlLp2sKWE2X";
  100. private static final String TEST_SENDER_ID = "1078258869814";
  101. private static final String TOKEN = "Token";
  102. private AmazonSNS mClient;
  103. private boolean mEnableLogging;
  104. private String mEndpointArn;
  105. private GoogleCloudMessaging mGcm;
  106. private String mRegId;
  107. private ResultReceiver mResultReceiver;
  108. private int mRetryCount;
  109. private boolean mTestEnv;
  110. public AndroidGcmRegistrationService()
  111. {
  112. super("AndroidGcmRegistrationService");
  113. mRetryCount = 0;
  114. mRegId = null;
  115. mEndpointArn = null;
  116. mClient = null;
  117. mGcm = null;
  118. mResultReceiver = null;
  119. mEnableLogging = false;
  120. mTestEnv = false;
  121. }
  122. private boolean checkPlayServices()
  123. {
  124. int i = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
  125. if (i != 0)
  126. {
  127. if (GooglePlayServicesUtil.isUserRecoverableError(i) && mResultReceiver != null)
  128. {
  129. mResultReceiver.send(i, null);
  130. }
  131. return false;
  132. } else
  133. {
  134. return true;
  135. }
  136. }
  137. private void configureTestEnv()
  138. {
  139. Bundle bundle;
  140. ComponentName componentname = new ComponentName(this, getClass());
  141. bundle = getPackageManager().getServiceInfo(componentname, 128).metaData;
  142. if (bundle == null)
  143. {
  144. return;
  145. }
  146. int i;
  147. mEnableLogging = bundle.getBoolean("enableLogging");
  148. mTestEnv = bundle.getBoolean("testEnv");
  149. if (!mTestEnv)
  150. {
  151. break MISSING_BLOCK_LABEL_105;
  152. }
  153. SENDER_ID = "1078258869814";
  154. APPLICATION_ARN = "arn:aws:sns:us-west-2:413177889857:app/GCM/airruntimetestapp";
  155. ACCESS_KEY = "AKIAI5AWXTYSXJGU55QA";
  156. SECRET_KEY = "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";
  157. i = bundle.getInt("rateLimit", 0x80000000);
  158. if (i != 0x80000000)
  159. {
  160. try
  161. {
  162. AdobeAIR.RATE_LIMIT = i;
  163. return;
  164. }
  165. catch (android.content.pm.PackageManager.NameNotFoundException namenotfoundexception) { }
  166. }
  167. }
  168. private int getAppVersion()
  169. {
  170. int i;
  171. try
  172. {
  173. i = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
  174. }
  175. catch (android.content.pm.PackageManager.NameNotFoundException namenotfoundexception)
  176. {
  177. return 0;
  178. }
  179. return i;
  180. }
  181. private String getCustomData()
  182. {
  183. JSONObject jsonobject;
  184. String s;
  185. Exception exception1;
  186. String s1;
  187. String s2;
  188. LocationManager locationmanager;
  189. Location location;
  190. Geocoder geocoder;
  191. String s3;
  192. try
  193. {
  194. jsonobject = new JSONObject();
  195. jsonobject.put("osVersion", android.os.Build.VERSION.RELEASE);
  196. jsonobject.put("airVersion", getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
  197. jsonobject.put("deviceInfo", (new StringBuilder()).append(Build.MODEL).append("&").append(Build.MANUFACTURER).append("&").append(Integer.toString(SystemCapabilities.GetScreenHRes(this))).append("&").append(Integer.toString(SystemCapabilities.GetScreenVRes(this))).append("&").append(Integer.toString(SystemCapabilities.GetScreenDPI(this))).toString());
  198. Locale locale = Locale.getDefault();
  199. jsonobject.put("locale", locale.toString());
  200. s = locale.getDisplayCountry(Locale.ENGLISH);
  201. }
  202. catch (Exception exception)
  203. {
  204. return "";
  205. }
  206. locationmanager = (LocationManager)getSystemService("location");
  207. if (!locationmanager.isProviderEnabled("network")) goto _L2; else goto _L1
  208. _L1:
  209. location = locationmanager.getLastKnownLocation("network");
  210. geocoder = new Geocoder(this, Locale.ENGLISH);
  211. if (location == null || geocoder == null) goto _L2; else goto _L3
  212. _L3:
  213. if (!Geocoder.isPresent()) goto _L2; else goto _L4
  214. _L4:
  215. s3 = ((Address)geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1).get(0)).getCountryName();
  216. s1 = s3;
  217. _L6:
  218. jsonobject.put("geo", s1);
  219. jsonobject.put("timestamp", String.valueOf(System.currentTimeMillis()));
  220. s2 = jsonobject.toString();
  221. return s2;
  222. exception1;
  223. s1 = s;
  224. continue; /* Loop/switch isn't completed */
  225. _L2:
  226. s1 = s;
  227. if (true) goto _L6; else goto _L5
  228. _L5:
  229. }
  230. private boolean isAppRegistered()
  231. {
  232. int i = getSharedPreferences(com/adobe/air/AdobeAIR.getSimpleName(), 0).getInt("appVersion", 0x80000000);
  233. int j = getAppVersion();
  234. return i != 0x80000000 && i == j;
  235. }
  236. private void registerForNotifications()
  237. {
  238. while (isAppRegistered() || !checkPlayServices())
  239. {
  240. return;
  241. }
  242. configureTestEnv();
  243. registerInBackground(0);
  244. }
  245. private void registerInBackground(int i)
  246. {
  247. if (mRetryCount < 10)
  248. {
  249. if (i != 0)
  250. {
  251. mRetryCount = 1 + mRetryCount;
  252. }
  253. if (mGcm == null)
  254. {
  255. mGcm = GoogleCloudMessaging.getInstance(this);
  256. }
  257. AsyncTaskRunner asynctaskrunner = new AsyncTaskRunner();
  258. Integer ainteger[] = new Integer[1];
  259. ainteger[0] = Integer.valueOf(i);
  260. asynctaskrunner.execute(ainteger);
  261. }
  262. }
  263. private void sendRegistrationIdToAws()
  264. {
  265. BasicAWSCredentials basicawscredentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
  266. Region region = Region.getRegion(Regions.US_WEST_2);
  267. mClient = new AmazonSNSClient(basicawscredentials);
  268. mClient.setRegion(region);
  269. CreatePlatformEndpointResult createplatformendpointresult;
  270. CreatePlatformEndpointRequest createplatformendpointrequest = new CreatePlatformEndpointRequest();
  271. createplatformendpointrequest.setPlatformApplicationArn(APPLICATION_ARN);
  272. createplatformendpointrequest.setToken(mRegId);
  273. createplatformendpointrequest.setCustomUserData(getCustomData());
  274. createplatformendpointresult = mClient.createPlatformEndpoint(createplatformendpointrequest);
  275. if (createplatformendpointresult == null)
  276. {
  277. break MISSING_BLOCK_LABEL_153;
  278. }
  279. if (createplatformendpointresult.getEndpointArn() != null)
  280. {
  281. mEndpointArn = createplatformendpointresult.getEndpointArn();
  282. if (mEnableLogging)
  283. {
  284. Log.i("AndroidGcmRegistrationService", (new StringBuilder()).append("Creation EndpointArn = ").append(mEndpointArn).toString());
  285. }
  286. updateSharedPref();
  287. }
  288. return;
  289. InternalErrorException internalerrorexception;
  290. internalerrorexception;
  291. AmazonServiceException amazonserviceexception;
  292. AmazonClientException amazonclientexception;
  293. InvalidParameterException invalidparameterexception;
  294. try
  295. {
  296. registerInBackground(0x493e0);
  297. return;
  298. }
  299. catch (Exception exception)
  300. {
  301. return;
  302. }
  303. invalidparameterexception;
  304. updateEndpointAttributes();
  305. return;
  306. amazonclientexception;
  307. return;
  308. amazonserviceexception;
  309. }
  310. private void updateEndpointAttributes()
  311. {
  312. try
  313. {
  314. SetEndpointAttributesRequest setendpointattributesrequest = new SetEndpointAttributesRequest();
  315. if (mEndpointArn == null)
  316. {
  317. mEndpointArn = getSharedPreferences(com/adobe/air/AdobeAIR.getSimpleName(), 0).getString("endpointArn", "");
  318. if (mEnableLogging)
  319. {
  320. Log.i("AndroidGcmRegistrationService", (new StringBuilder()).append("Update EndpointArn = ").append(mEndpointArn).toString());
  321. }
  322. }
  323. setendpointattributesrequest.setEndpointArn(mEndpointArn);
  324. HashMap hashmap = new HashMap();
  325. hashmap.put("CustomUserData", getCustomData());
  326. hashmap.put("Enabled", "true");
  327. hashmap.put("Token", mRegId);
  328. setendpointattributesrequest.setAttributes(hashmap);
  329. mClient.setEndpointAttributes(setendpointattributesrequest);
  330. updateSharedPref();
  331. return;
  332. }
  333. catch (AmazonServiceException amazonserviceexception)
  334. {
  335. return;
  336. }
  337. catch (AmazonClientException amazonclientexception)
  338. {
  339. return;
  340. }
  341. }
  342. private void updateSharedPref()
  343. {
  344. SharedPreferences sharedpreferences = getSharedPreferences(com/adobe/air/AdobeAIR.getSimpleName(), 0);
  345. int i = getAppVersion();
  346. android.content.SharedPreferences.Editor editor = sharedpreferences.edit();
  347. editor.putInt("appVersion", i);
  348. editor.putString("endpointArn", mEndpointArn);
  349. editor.commit();
  350. }
  351. protected void onHandleIntent(Intent intent)
  352. {
  353. mResultReceiver = (ResultReceiver)intent.getParcelableExtra("resultReceiver");
  354. registerForNotifications();
  355. }
  356. /*
  357. static String access$102(AndroidGcmRegistrationService androidgcmregistrationservice, String s)
  358. {
  359. androidgcmregistrationservice.mRegId = s;
  360. return s;
  361. }
  362. */
  363. }