gpt4 book ai didi

android - 我如何打印 Intent 的内容以进行日志记录?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:37 34 4
gpt4 key购买 nike

您是否编写了实用程序来打印 Intent 的所有参数?喜欢...

Intent i = ...    
Log.d(tag, "INTENT = " + Util.printIntent(i) );

包括目标、额外内容、数据等 ?感谢您的帮助。

更新:到目前为止我所拥有的...

if (G.DEBUG) Log.d(U.getTag(), "INTENT = " + intentToString(intent)  );

public static String intentToString(Intent intent) {
if (intent == null) {return null;}
String out = intent.toString();
Bundle extras = intent.getExtras();
if (extras != null) {
extras.size();
out += "\n" + printBundle(extras);
}
if (intent.getAction() != null) out+="\nAction = " + intent.getAction();
if (intent.getType() != null) out+="\nType = " + intent.getType();
if (intent.getData() != null) out+="\nData = " + intent.getData();
if (intent.getPackage() != null) out+="\nPackage = " + intent.getPackage();
if (intent.getDataString() != null) out+="\nDataString = " + intent.getDataString();
return out;
}

最佳答案

Intent#toString() 方法工作得很好,它会打印大部分内容,但不幸的是它不会打印额外内容。 extras 在 Bundle 中,也可以用 Bundle#toString() 打印,但如果 Intent 刚从另一个进程到达,那么 extras Bundle 的内容 不会被打印,直到你触发它被取消,它也不会正确打印列表或数组。下面的代码应该有助于打印出几乎所有内容:

public static String intentToString(Intent intent) {
if (intent == null) {
return null;
}

return intent.toString() + " " + bundleToString(intent.getExtras());
}

public static String bundleToString(Bundle bundle) {
StringBuilder out = new StringBuilder("Bundle[");

if (bundle == null) {
out.append("null");
} else {
boolean first = true;
for (String key : bundle.keySet()) {
if (!first) {
out.append(", ");
}

out.append(key).append('=');

Object value = bundle.get(key);

if (value instanceof int[]) {
out.append(Arrays.toString((int[]) value));
} else if (value instanceof byte[]) {
out.append(Arrays.toString((byte[]) value));
} else if (value instanceof boolean[]) {
out.append(Arrays.toString((boolean[]) value));
} else if (value instanceof short[]) {
out.append(Arrays.toString((short[]) value));
} else if (value instanceof long[]) {
out.append(Arrays.toString((long[]) value));
} else if (value instanceof float[]) {
out.append(Arrays.toString((float[]) value));
} else if (value instanceof double[]) {
out.append(Arrays.toString((double[]) value));
} else if (value instanceof String[]) {
out.append(Arrays.toString((String[]) value));
} else if (value instanceof CharSequence[]) {
out.append(Arrays.toString((CharSequence[]) value));
} else if (value instanceof Parcelable[]) {
out.append(Arrays.toString((Parcelable[]) value));
} else if (value instanceof Bundle) {
out.append(bundleToString((Bundle) value));
} else {
out.append(value);
}

first = false;
}
}

out.append("]");
return out.toString();
}

关于android - 我如何打印 Intent 的内容以进行日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32612803/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com