前阵子恰好有朋友问到这个问题,给他讲了一下原理,这里简单分享一下
如何识别来源
核心:ActivityThread$ActivityClientRecord::referrer
简单来说这个referrer就是启动你act的包名
/**
* 通过反射获取referrer
* @return
*/
private String reflectGetReferrer() {
try {
Field referrerField =
Activity.class.getDeclaredField("mReferrer");
referrerField.setAccessible(true);
return (String) referrerField.get(this);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return "";
}
这是 adb启动act
这是点launcher的icon - reflectGetReferrer is com.miui.home
源码分析篇
vivo团队的文章已经写的够好了