Open hanbinbin opened 3 years ago
+1; 有替代方案吗?
我们公司内部SDK有替代方案,具体代码下面已经给出;不只是getRunningAppProcesses不让使用,getInstalledPackages,getInstalledApplications,getRunningTasks这几个方法都不让使用,不过在当前SDK里面只是用了getRunningAppProcesses
Java Code :
public static String getProcessNameByPid(int pid) { try (BufferedReader br = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline"))) { return br.readLine().replace('\u0000', ' ').trim(); } catch (Throwable e) { e.printStackTrace(); } return null; }
Kotlin Code:
fun getProcessNameByPid(pid: Int): String? { try { BufferedReader(FileReader("/proc/$pid/cmdline")).use { br -> return br.readLine().trim { c -> c.isWhitespace() || c == '\u0000' } } } catch (e: Throwable) { e.printStackTrace() return null } }
int pid = Process.myPid();
代码亲测有效,你们也可以测试看下,谢谢
同问,有替代方案吗? 顶上去
顶
我的方案是修改tinker的源码,保证第一次安装或者第一次升级到新版本时,用户未同意用户协议时,不执行Tinker 相关代码。
在TinkerApplication中增加存储在SharedPreferences的隐私协议标记,默认是false。这个标记相关的set get代码就放在TinkerApplication类中实现。 根据状态决定是否执行TinkerApplication的loadTinker方法。 在你app的ApplicationLike的onBaseContextAttached方法中同样读取这个标记,决定是否执行Tinker的方法,然后尝试更新标记。 用户同意用户协议时更新隐私协议状态标记。
赞一个
您好!很高兴收到您的邮件,稍后查看。
这是来自QQ邮箱的自动回复邮件。您好,来信已收到,谢谢您,我会及时回复您的!O(∩_∩)O~
sdk 里面 activityManager.getRunningAppProcesses是隐私调用方法,国家安全部门规定不允许调用,你们有时间升级下版本吗?