如何在Android 6及更高版本上处理卸载意图?

时间:2016-04-29 20:34:35

标签: android android-intent uninstall intentfilter

背景

在我的" app manager"应用程序,我处理了卸载意图,以便用户可以使用root在后台卸载应用程序。

问题

直到Android 5.x,一切顺利并且工作正常,但似乎从Android 6开始,事情已经发生了变化,即使正在使用日志,也无法使用相同的意图。

我尝试了什么

清单包含此活动的意图过滤器,因为它始终具有:

lst = 'x1 x2 x3 x4 x5 y1 y2 y3 y4 y5'.split()

lst
Out[9]: ['x1', 'x2', 'x3', 'x4', 'x5', 'y1', 'y2', 'y3', 'y4', 'y5']

out = sum((list(xy) for xy in zip(lst[:len(lst)//2], lst[len(lst)//2:])), [])

out
Out[11]: ['x1', 'y1', 'x2', 'y2', 'x3', 'y3', 'x4', 'y4', 'x5', 'y5']

这是因为文档herehere,它表示这些是框架使用的内容。

我尝试将操作分开,我尝试查看日志,但它与以前的日志完全相同。示例:

  

system_process I / ActivityManager:START u0   {act = android.intent.action.DELETE dat = package:me.scan.android.client   FLG = 0x10800000   CMP = com.google.android.packageinstaller / com.android.packageinstaller.UninstallerActivity   (有额外内容)}来自显示0的uid 10078

好像框架已经决定哪个应用程序会处理意图。

问题

是否仍然可以处理卸载意图?即使有root?

1 个答案:

答案 0 :(得分:1)

this commit,这是在marshmallow-release branch中首次出现的故意更改,禁止拦截程序包卸载UI。