加了检测的库,会影响判断是否在主进程
Closed this issue · 4 comments
LIUPING789 commented
//--------------------------------------合规检测依赖----------------------------------------------
//TODO 用来检测合规问题.媒体不需要的话可以不用添加以下依赖
def privacyVersion = "1.2.7"
implementation "com.github.allenymt.PrivacySentry:hook-sentry:$privacyVersion"
implementation "com.github.allenymt.PrivacySentry:privacy-annotation:$privacyVersion"
//如果不想使用库中本身的代理方法,可以不引入这个aar,自己实现
implementation "com.github.allenymt.PrivacySentry:privacy-proxy:$privacyVersion"
// 1.2.3 新增类替换,主要是为了hook构造函数的参数
implementation "com.github.allenymt.PrivacySentry:privacy-replace:$privacyVersion"
现象:如果加了以上库,会影响之前主线程的判断,不加没有问题。
判断主线程代码如下:
if (ProcessUtil.isMainProcess(DemoApplication.getContext())) {
//do in something
}
LIUPING789 commented
// 包名判断是否为主进程
public static boolean isMainProcess(Context context) {
if (context == null) {
return false;
}
return context.getPackageName().equals(getCurrentProcessName(context));
}
// 获取当前进程名
public static String getCurrentProcessName(Context context) {
if (context == null) return "";
int pid = android.os.Process.myPid();
String processName = "";
ActivityManager manager = (ActivityManager) context.getSystemService(
Context.ACTIVITY_SERVICE
);
for (ActivityManager.RunningAppProcessInfo process : manager.getRunningAppProcesses()) {
if (process.pid == pid) {
processName = process.processName;
}
}
return processName;
}
对应工具类中的方法
allenymt commented
这个调用应该是在 隐私协议同意之前掉的吧,也就是在PrivacySentry.Privacy.updatePrivacyShow()之前调用,原因是这个类里的getRunningAppProcesses方法做了拦截
LIUPING789 commented
好的,已解决。