tinker icon indicating copy to clipboard operation
tinker copied to clipboard

sdk 里面 activityManager.getRunningAppProcesses是隐私调用方法

Open hanbinbin opened this issue 4 years ago • 9 comments

sdk 里面 activityManager.getRunningAppProcesses是隐私调用方法,国家安全部门规定不允许调用,你们有时间升级下版本吗?

hanbinbin avatar Sep 05 '21 06:09 hanbinbin

+1; 有替代方案吗?

sailor1861 avatar Sep 06 '21 03:09 sailor1861

我们公司内部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();

代码亲测有效,你们也可以测试看下,谢谢

hanbinbin avatar Sep 06 '21 03:09 hanbinbin

同问,有替代方案吗? 顶上去

xingfeng2010 avatar Oct 26 '21 07:10 xingfeng2010

alen252 avatar Nov 02 '21 07:11 alen252

我的方案是修改tinker的源码,保证第一次安装或者第一次升级到新版本时,用户未同意用户协议时,不执行Tinker 相关代码。

在TinkerApplication中增加存储在SharedPreferences的隐私协议标记,默认是false。这个标记相关的set get代码就放在TinkerApplication类中实现。 根据状态决定是否执行TinkerApplication的loadTinker方法。 在你app的ApplicationLike的onBaseContextAttached方法中同样读取这个标记,决定是否执行Tinker的方法,然后尝试更新标记。 用户同意用户协议时更新隐私协议状态标记。

ghost avatar Nov 10 '21 03:11 ghost

https://github.com/Tencent/tinker/issues/1577#issuecomment-888286708

试试这个方法

fine1021 avatar Nov 26 '21 11:11 fine1021

赞一个

ye1088 avatar Apr 09 '24 07:04 ye1088

您好!很高兴收到您的邮件,稍后查看。

jacklongway avatar Apr 09 '24 07:04 jacklongway

这是来自QQ邮箱的自动回复邮件。您好,来信已收到,谢谢您,我会及时回复您的!O(∩_∩)O~

canlan818 avatar Apr 09 '24 07:04 canlan818