我正在尝试开发Tasker例程(最终导出为应用程序),该例程将直接访问电子墨水启动器的“应用程序抽屉”。发送意图不起作用,并且运行shell命令也不起作用。我想我不明白我在AndroidManifest中找到意图的知识。
启动启动器并导航到应用程序抽屉部分后,我通过adb完成了此操作:
dumpsys window windows | grep -E 'mCurrentFocus'
结果是:
com.harasoft.relaunch/com.harasoft.relaunch.AllApplications
如果我已正确理解,则应该是软件包名称/活动。
该应用程序的AndroidManifest.xml(https://github.com/yiselieren/ReLaunch/blob/master/AndroidManifest.xml)将AllApplications显示为一种意图(并且已指定了意图过滤器),因此看起来不错。
仅使用包名称和活动从Tasker发送的“发送意图”会给出退出错误。通过adb shell,我尝试了以下方法:
# am start -n com.harasoft.relaunch/com.harasoft.relaunch.AllApplications
这不会产生期望的结果,而是会吐出一个错误:
Starting: Intent { cmp=com.harasoft.relaunch/.AllApplications }
java.lang.SecurityException: Permission Denial: starting Intent {
flg=0x10000000 cmp=com.harasoft.relaunch/.AllApplications } from null
(pid=-1, uid=-1) requires null
这就是我被困住的地方。我已经阅读了有关此错误的信息,但并未全部理解。似乎该意图要么必须在清单中显式导出,要么伴随一个意图过滤器。清单中有一个意图过滤器(android.intent.action.LAUNCHER),除非我误解了这一点。清单中以“。”开头的意图。确实在没有“。”的情况下起作用。不要。我读过,这没有什么区别。
有人可以启发我吗?