下面列出了android.os.Build#MANUFACTURER 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 获取手机唯一标识序列号
*
* @return
*/
public static String getUniqueSerialNumber() {
String phoneName = Build.MODEL;// Galaxy nexus 品牌类型
String manuFacturer = Build.MANUFACTURER;//samsung 品牌
Log.d("详细序列号", manuFacturer + "-" + phoneName + "-" + getSerialNumber());
return manuFacturer + "-" + phoneName + "-" + getSerialNumber();
}
private static String getManufacturer() {
try {
String manufacturer = Build.MANUFACTURER;
if (!TextUtils.isEmpty(manufacturer)) {
return manufacturer.toLowerCase();
}
} catch (Throwable ignore) {/**/}
return UNKNOWN;
}
public static String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
}
return capitalize(manufacturer) + " " + model;
}
private int getTimoutThreshold() {
String manufacturer = Build.MANUFACTURER;
if (manufacturer.equals("samsung")) {
return TIMEOUT_THRESHOLD_SAMSUNG;
} else {
return TIMEOUT_THRESHOLD_DEFAULT;
}
}
/**
* INTERNAL method that returns the device model name with correct capitalization.
* Taken from: http://stackoverflow.com/a/12707479/1254846
*
* @return The device model name (i.e., "LGE Nexus 5")
*/
private static String getDeviceModelName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}
/**
* 获取崩溃头
*
* @return 崩溃头
*/
private String getCrashHead() {
return "\n************* Crash Log Head ****************" +
"\nDevice Manufacturer: " + Build.MANUFACTURER +// 设备厂商
"\nDevice Model : " + Build.MODEL +// 设备型号
"\nAndroid Version : " + Build.VERSION.RELEASE +// 系统版本
"\nAndroid SDK : " + Build.VERSION.SDK_INT +// SDK版本
"\nApp VersionName : " + mVersionName +
"\nApp VersionCode : " + mVersionCode +
"\n************* Crash Log Head ****************\n\n";
}
public static String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return model;
} else {
return manufacturer + " " + model;
}
}
public String getMetaData() {
return "<metadata>\n" +
"\t<author>\n" +
"\t\t<name>" + Build.MANUFACTURER + " " + Build.MODEL + "</name>\n" +
"\t</author>\n" +
"</metadata>";
}
private static boolean isSamsung() {
String manufacturer = Build.MANUFACTURER;
if (manufacturer != null) return manufacturer.toLowerCase().equals("samsung");
return false;
}
public static boolean isMagicBoxDevice() {
String manufacturer = Build.MANUFACTURER;
String productName = Build.PRODUCT;
return manufacturer.equalsIgnoreCase("MagicBox")
&& productName.equalsIgnoreCase("MagicBox");
}
public static String getDeviceManufacturer() {
return Build.MANUFACTURER;
}
public static boolean is360Rom() {
String manufacturer = Build.MANUFACTURER;
return !TextUtils.isEmpty(manufacturer) && manufacturer.toUpperCase().contains(ROM_QIKU);
}
/** device factory */
public String getFactory() {
return Build.MANUFACTURER;
}
/**
* Returns a string representation of the result of a heap analysis.
*/
public static @NonNull
String leakInfo(@NonNull Context context,
@NonNull HeapDump heapDump,
@NonNull AnalysisResult result,
boolean detailed) {
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();
PackageInfo packageInfo;
try {
packageInfo = packageManager.getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
String versionName = packageInfo.versionName;
int versionCode = packageInfo.versionCode;
String info = "In " + packageName + ":" + versionName + ":" + versionCode + ".\n";
String detailedString = "";
if (result.leakFound) {
if (result.excludedLeak) {
info += "* EXCLUDED LEAK.\n";
}
info += "* " + result.className;
if (!heapDump.referenceName.equals("")) {
info += " (" + heapDump.referenceName + ")";
}
info += " has leaked:\n" + result.leakTrace.toString() + "\n";
if (result.retainedHeapSize != AnalysisResult.RETAINED_HEAP_SKIPPED) {
info += "* Retaining: " + formatShortFileSize(context, result.retainedHeapSize) + ".\n";
}
if (detailed) {
detailedString = "\n* Details:\n" + result.leakTrace.toDetailedString();
}
} else if (result.failure != null) {
// We duplicate the library version & Sha information because bug reports often only contain
// the stacktrace.
info += "* FAILURE in " + BuildConfig.LEAKCANARY_LIBRARY_VERSION + " " + BuildConfig.GIT_SHA + ":" + Log.getStackTraceString(
result.failure) + "\n";
} else {
info += "* NO LEAK FOUND.\n\n";
}
if (detailed) {
detailedString += "* Excluded Refs:\n" + heapDump.excludedRefs;
}
info += "* Reference Key: "
+ heapDump.referenceKey
+ "\n"
+ "* Device: "
+ Build.MANUFACTURER
+ " "
+ Build.BRAND
+ " "
+ Build.MODEL
+ " "
+ Build.PRODUCT
+ "\n"
+ "* Android Version: "
+ Build.VERSION.RELEASE
+ " API: "
+ Build.VERSION.SDK_INT
+ " LeakCanary: "
+ BuildConfig.LEAKCANARY_LIBRARY_VERSION
+ " "
+ BuildConfig.GIT_SHA
+ "\n"
+ "* Durations: watch="
+ heapDump.watchDurationMs
+ "ms, gc="
+ heapDump.gcDurationMs
+ "ms, heap dump="
+ heapDump.heapDumpDurationMs
+ "ms, analysis="
+ result.analysisDurationMs
+ "ms"
+ "\n"
+ detailedString;
return info;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crash);
toolbar = findViewById(R.id.toolbar);
name = findViewById(R.id.name);
message = findViewById(R.id.message);
description = findViewById(R.id.description);
copy = findViewById(R.id.copy);
share = findViewById(R.id.share);
email = findViewById(R.id.email);
stackTraceHeader = findViewById(R.id.stackTraceHeader);
stackTraceArrow = findViewById(R.id.stackTraceArrow);
stackTrace = findViewById(R.id.stackTrace);
setSupportActionBar(toolbar);
actionBar = getSupportActionBar();
int color = getIntent().getIntExtra(EXTRA_COLOR, ContextCompat.getColor(this, R.color.colorPrimary));
int colorDark = ColorUtils.darkColor(color);
boolean isColorDark = ColorUtils.isColorDark(color);
toolbar.setBackgroundColor(color);
toolbar.setTitleTextColor(isColorDark ? Color.WHITE : Color.BLACK);
copy.setBackgroundColor(colorDark);
copy.setTextColor(colorDark);
copy.setOnClickListener(this);
share.setBackgroundColor(colorDark);
share.setTextColor(colorDark);
share.setOnClickListener(this);
email.setBackgroundColor(colorDark);
email.setTextColor(colorDark);
if (getIntent().hasExtra(EXTRA_EMAIL)) {
email.setOnClickListener(this);
} else email.setVisibility(View.GONE);
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(String.format(Locale.getDefault(), getString(R.string.title_crasher_crashed), getString(R.string.app_name)));
actionBar.setHomeAsUpIndicator(ImageUtils.getVectorDrawable(this, R.drawable.ic_crasher_back, isColorDark ? Color.WHITE : Color.BLACK));
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(colorDark);
getWindow().setNavigationBarColor(colorDark);
}
String stack = getIntent().getStringExtra(EXTRA_STACK_TRACE);
String stackCause = CrashUtils.getCause(this, stack);
String nameString = getIntent().getStringExtra(EXTRA_NAME) + (stackCause != null ? " at " + stackCause : "");
String messageString = getIntent().getStringExtra(EXTRA_NAME);
name.setText(nameString);
if (messageString != null && messageString.length() > 0)
message.setText(messageString);
else message.setVisibility(View.GONE);
description.setText(String.format(Locale.getDefault(), getString(R.string.msg_crasher_crashed), getString(R.string.app_name)));
stackTrace.setText(stack);
stackTraceHeader.setOnClickListener(this);
if (BuildConfig.DEBUG)
stackTraceHeader.callOnClick();
body = nameString + "\n" + (messageString != null ? messageString : "") + "\n\n" + stack
+ "\n\nAndroid Version: " + Build.VERSION.SDK_INT
+ "\nDevice Manufacturer: " + Build.MANUFACTURER
+ "\nDevice Model: " + Build.MODEL
+ "\n\n" + (getIntent().hasExtra(EXTRA_DEBUG_MESSAGE) ? getIntent().getStringExtra(EXTRA_DEBUG_MESSAGE) : "");
}
private static boolean isXiaomiPhone() {
final String phoneManufacturer = Build.MANUFACTURER;
return !StringUtil.isEmpty(phoneManufacturer)
&& phoneManufacturer.toLowerCase().contains("xiaomi");
}
public static String getManufacturer() {
return Build.MANUFACTURER;
}
public static String getDeviceName() {
return Build.MANUFACTURER + " " + Build.MODEL;
}
/**
* 设备厂商
*
* @return
*/
public static String getPhoneBrand() {
return Build.BOARD + " " + Build.MANUFACTURER;
}
/**
* Return the manufacturer of the product/hardware.
* <p>e.g. Xiaomi</p>
*
* @return the manufacturer of the product/hardware
*/
public static String getManufacturer() {
return Build.MANUFACTURER;
}