mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 00:38:39 +09:00
pt 1 in reviving the android build (copied from pm 28a1, wish me luck)
This commit is contained in:
parent
efa9662725
commit
d7788a6d6d
4249 changed files with 468189 additions and 0 deletions
290
mobile/android/thirdparty/com/adjust/sdk/DeviceInfo.java
vendored
Normal file
290
mobile/android/thirdparty/com/adjust/sdk/DeviceInfo.java
vendored
Normal file
|
|
@ -0,0 +1,290 @@
|
|||
package com.adjust.sdk;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.util.DisplayMetrics;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.adjust.sdk.Constants.ENCODING;
|
||||
import static com.adjust.sdk.Constants.HIGH;
|
||||
import static com.adjust.sdk.Constants.LARGE;
|
||||
import static com.adjust.sdk.Constants.LONG;
|
||||
import static com.adjust.sdk.Constants.LOW;
|
||||
import static com.adjust.sdk.Constants.MD5;
|
||||
import static com.adjust.sdk.Constants.MEDIUM;
|
||||
import static com.adjust.sdk.Constants.NORMAL;
|
||||
import static com.adjust.sdk.Constants.SHA1;
|
||||
import static com.adjust.sdk.Constants.SMALL;
|
||||
import static com.adjust.sdk.Constants.XLARGE;
|
||||
|
||||
/**
|
||||
* Created by pfms on 06/11/14.
|
||||
*/
|
||||
class DeviceInfo {
|
||||
String macSha1;
|
||||
String macShortMd5;
|
||||
String androidId;
|
||||
String fbAttributionId;
|
||||
String clientSdk;
|
||||
String packageName;
|
||||
String appVersion;
|
||||
String deviceType;
|
||||
String deviceName;
|
||||
String deviceManufacturer;
|
||||
String osName;
|
||||
String osVersion;
|
||||
String language;
|
||||
String country;
|
||||
String screenSize;
|
||||
String screenFormat;
|
||||
String screenDensity;
|
||||
String displayWidth;
|
||||
String displayHeight;
|
||||
Map<String, String> pluginKeys;
|
||||
|
||||
DeviceInfo(Context context, String sdkPrefix) {
|
||||
Resources resources = context.getResources();
|
||||
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
|
||||
Configuration configuration = resources.getConfiguration();
|
||||
Locale locale = configuration.locale;
|
||||
int screenLayout = configuration.screenLayout;
|
||||
boolean isGooglePlayServicesAvailable = Reflection.isGooglePlayServicesAvailable(context);
|
||||
String macAddress = getMacAddress(context, isGooglePlayServicesAvailable);
|
||||
|
||||
packageName = getPackageName(context);
|
||||
appVersion = getAppVersion(context);
|
||||
deviceType = getDeviceType(screenLayout);
|
||||
deviceName = getDeviceName();
|
||||
deviceManufacturer = getDeviceManufacturer();
|
||||
osName = getOsName();
|
||||
osVersion = getOsVersion();
|
||||
language = getLanguage(locale);
|
||||
country = getCountry(locale);
|
||||
screenSize = getScreenSize(screenLayout);
|
||||
screenFormat = getScreenFormat(screenLayout);
|
||||
screenDensity = getScreenDensity(displayMetrics);
|
||||
displayWidth = getDisplayWidth(displayMetrics);
|
||||
displayHeight = getDisplayHeight(displayMetrics);
|
||||
clientSdk = getClientSdk(sdkPrefix);
|
||||
androidId = getAndroidId(context, isGooglePlayServicesAvailable);
|
||||
fbAttributionId = getFacebookAttributionId(context);
|
||||
pluginKeys = Reflection.getPluginKeys(context);
|
||||
macSha1 = getMacSha1(macAddress);
|
||||
macShortMd5 = getMacShortMd5(macAddress);
|
||||
}
|
||||
|
||||
private String getMacAddress(Context context, boolean isGooglePlayServicesAvailable) {
|
||||
if (!isGooglePlayServicesAvailable) {
|
||||
if (!!Util.checkPermission(context, android.Manifest.permission.ACCESS_WIFI_STATE)) {
|
||||
AdjustFactory.getLogger().warn("Missing permission: ACCESS_WIFI_STATE");
|
||||
}
|
||||
return Reflection.getMacAddress(context);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String getPackageName(Context context) {
|
||||
return context.getPackageName();
|
||||
}
|
||||
|
||||
private String getAppVersion(Context context) {
|
||||
try {
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
String name = context.getPackageName();
|
||||
PackageInfo info = packageManager.getPackageInfo(name, 0);
|
||||
return info.versionName;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String getDeviceType(int screenLayout) {
|
||||
int screenSize = screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
|
||||
|
||||
switch (screenSize) {
|
||||
case Configuration.SCREENLAYOUT_SIZE_SMALL:
|
||||
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
|
||||
return "phone";
|
||||
case Configuration.SCREENLAYOUT_SIZE_LARGE:
|
||||
case 4:
|
||||
return "tablet";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String getDeviceName() {
|
||||
return Build.MODEL;
|
||||
}
|
||||
|
||||
private String getDeviceManufacturer() {
|
||||
return Build.MANUFACTURER;
|
||||
}
|
||||
|
||||
private String getOsName() {
|
||||
return "android";
|
||||
}
|
||||
|
||||
private String getOsVersion() {
|
||||
return osVersion = "" + Build.VERSION.SDK_INT;
|
||||
}
|
||||
|
||||
private String getLanguage(Locale locale) {
|
||||
return locale.getLanguage();
|
||||
}
|
||||
|
||||
private String getCountry(Locale locale) {
|
||||
return locale.getCountry();
|
||||
}
|
||||
|
||||
private String getScreenSize(int screenLayout) {
|
||||
int screenSize = screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
|
||||
|
||||
switch (screenSize) {
|
||||
case Configuration.SCREENLAYOUT_SIZE_SMALL:
|
||||
return SMALL;
|
||||
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
|
||||
return NORMAL;
|
||||
case Configuration.SCREENLAYOUT_SIZE_LARGE:
|
||||
return LARGE;
|
||||
case 4:
|
||||
return XLARGE;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String getScreenFormat(int screenLayout) {
|
||||
int screenFormat = screenLayout & Configuration.SCREENLAYOUT_LONG_MASK;
|
||||
|
||||
switch (screenFormat) {
|
||||
case Configuration.SCREENLAYOUT_LONG_YES:
|
||||
return LONG;
|
||||
case Configuration.SCREENLAYOUT_LONG_NO:
|
||||
return NORMAL;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String getScreenDensity(DisplayMetrics displayMetrics) {
|
||||
int density = displayMetrics.densityDpi;
|
||||
int low = (DisplayMetrics.DENSITY_MEDIUM + DisplayMetrics.DENSITY_LOW) / 2;
|
||||
int high = (DisplayMetrics.DENSITY_MEDIUM + DisplayMetrics.DENSITY_HIGH) / 2;
|
||||
|
||||
if (0 == density) {
|
||||
return null;
|
||||
} else if (density < low) {
|
||||
return LOW;
|
||||
} else if (density > high) {
|
||||
return HIGH;
|
||||
}
|
||||
return MEDIUM;
|
||||
}
|
||||
|
||||
private String getDisplayWidth(DisplayMetrics displayMetrics) {
|
||||
return String.valueOf(displayMetrics.widthPixels);
|
||||
}
|
||||
|
||||
private String getDisplayHeight(DisplayMetrics displayMetrics) {
|
||||
return String.valueOf(displayMetrics.heightPixels);
|
||||
}
|
||||
|
||||
private String getClientSdk(String sdkPrefix) {
|
||||
if (sdkPrefix == null) {
|
||||
return Constants.CLIENT_SDK;
|
||||
} else {
|
||||
return String.format("%s@%s", sdkPrefix, Constants.CLIENT_SDK);
|
||||
}
|
||||
}
|
||||
|
||||
private String getMacSha1(String macAddress) {
|
||||
if (macAddress == null) {
|
||||
return null;
|
||||
}
|
||||
String macSha1 = sha1(macAddress);
|
||||
|
||||
return macSha1;
|
||||
}
|
||||
|
||||
private String getMacShortMd5(String macAddress) {
|
||||
if (macAddress == null) {
|
||||
return null;
|
||||
}
|
||||
String macShort = macAddress.replaceAll(":", "");
|
||||
String macShortMd5 = md5(macShort);
|
||||
|
||||
return macShortMd5;
|
||||
}
|
||||
|
||||
private String getAndroidId(Context context, boolean isGooglePlayServicesAvailable) {
|
||||
if (!isGooglePlayServicesAvailable) {
|
||||
return Reflection.getAndroidId(context);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String sha1(final String text) {
|
||||
return hash(text, SHA1);
|
||||
}
|
||||
|
||||
private String md5(final String text) {
|
||||
return hash(text, MD5);
|
||||
}
|
||||
|
||||
private String hash(final String text, final String method) {
|
||||
String hashString = null;
|
||||
try {
|
||||
final byte[] bytes = text.getBytes(ENCODING);
|
||||
final MessageDigest mesd = MessageDigest.getInstance(method);
|
||||
mesd.update(bytes, 0, bytes.length);
|
||||
final byte[] hash = mesd.digest();
|
||||
hashString = convertToHex(hash);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
return hashString;
|
||||
}
|
||||
|
||||
private static String convertToHex(final byte[] bytes) {
|
||||
final BigInteger bigInt = new BigInteger(1, bytes);
|
||||
final String formatString = "%0" + (bytes.length << 1) + "x";
|
||||
return String.format(formatString, bigInt);
|
||||
}
|
||||
|
||||
private String getFacebookAttributionId(final Context context) {
|
||||
try {
|
||||
final ContentResolver contentResolver = context.getContentResolver();
|
||||
final Uri uri = Uri.parse("content://com.facebook.katana.provider.AttributionIdProvider");
|
||||
final String columnName = "aid";
|
||||
final String[] projection = {columnName};
|
||||
final Cursor cursor = contentResolver.query(uri, projection, null, null, null);
|
||||
|
||||
if (null == cursor) {
|
||||
return null;
|
||||
}
|
||||
if (!cursor.moveToFirst()) {
|
||||
cursor.close();
|
||||
return null;
|
||||
}
|
||||
|
||||
final String attributionId = cursor.getString(cursor.getColumnIndex(columnName));
|
||||
cursor.close();
|
||||
return attributionId;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue