【发布时间】:2017-05-16 13:14:59
【问题描述】:
我想记录一切以供用户实验。但我也想记录android手机设备ID,手机品牌,应用版本是什么......这样的。
Firebase Analythics 和 Appsee 正在这样做。我从哪里开始?
编辑:
想想我会写一个SDK,用这个SDK可以学习一切。
【问题讨论】:
-
崩溃日志有很多选项 1) Firebase Analythics 2) Fabric
我想记录一切以供用户实验。但我也想记录android手机设备ID,手机品牌,应用版本是什么......这样的。
Firebase Analythics 和 Appsee 正在这样做。我从哪里开始?
编辑:
想想我会写一个SDK,用这个SDK可以学习一切。
【问题讨论】:
public String getDeviceName () {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith (manufacturer)) {
return capitalize (model);
}
else {
return capitalize (manufacturer) + " " + model;
}
}
public static int getAppVersion () {
try {
PackageInfo packageInfo = MainApplication.getContext ().getPackageManager ()
.getPackageInfo (MainApplication.getContext ().getPackageName (), 0);
return packageInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
// should never happen
throw new RuntimeException ("Could not get package name: " + e);
}
}
【讨论】:
这是获取设备属性代码的示例
public static String getAPIlevel() {
return "Android API :" + Build.VERSION.SDK_INT;
}
public static String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return SubUtils.capitalize(model);
} else {
return SubUtils.capitalize(manufacturer) + " " + model;
}
}
public static String getDeviceVersion(Context activity) {
String v;
try {
v = activity.getApplication().getPackageManager().getPackageInfo(activity.getPackageName(), 0).versionName;
return v.replace("-staging", "");
} catch (PackageManager.NameNotFoundException e) {
return null;
}
}
@SuppressLint("HardwareIds")
public static String getUDID(Context activity) {
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
TelephonyManager tm = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE);
String tmDevice = "" + tm.getDeviceId();
String tmSerial = "" + tm.getSimSerialNumber();
String androidId = "" + Settings.Secure.getString(activity.getContentResolver(), Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
return deviceUuid.toString();
} else {
return Settings.Secure.getString(activity.getContentResolver(), Settings.Secure.ANDROID_ID);
}
}
您可以使用AndroidCodeUtils获取更完整的设备访问信息
【讨论】: