首先,我在AOSP环境中工作,这里提到的两个应用程序都是使用Android源代码构建的,并且都是系统应用程序(UID是系统)。启用和禁用Android中的活动或整个应用程序(AOSP源)
在第一次引导/恢复出厂设置时启动的应用程序被编写为利用android.intent.action.DEVICE_INITIALIZATION_WIZARD
意图过滤器。当应用程序做它的工作,它禁用它的代码活动
PackageManager pm = mContext.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("com.xyzapp",
"com.xyzapp.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
这一切工作正常。我面临的问题是重新启用我想从另一个应用程序执行的活动(服务更精确)。
我们几乎一样将其关闭:
PackageManager pm = mContext.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("com.xyzapp",
"com.xyzapp.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
这种方法是行不通的,我想不通为什么。
下面是简要概述应该如何工作的:
- 首先启动 - 启动发射开始
com.xyzapp.MainActivity
以前如果OTA更新可用并且用户决定要下载并安装它,在远端应重新启用前要恢复和安装更新com.xyzapp.MainActivity
过程,因此前发射器开始在下次开机
任何提示,想法?
感谢名单
谢谢,但那不幸对我来说并不奏效。但是,我错过了清单中的CHANGE_COMPONENT_ENABLED_STATE权限,所以这是一个更少的错误,我猜测:)。如果我弄清楚发生了什么,我会更加努力地工作,并会发布。 –
但是你有没有在logcat中的任何错误?您拨打的服务的UID是什么? – Olaia
我得检查一下,没有时间去做。很可能会在周末那样做。不想粗鲁,不想回复这么久。我将很快发布logcat的详细信息。 –