安装apk后是否可以强制重启设备?
我想强制执行此操作,因为我想确保我的服务已启动。
答案 0 :(得分:2)
很可能答案是否,不允许您从应用中执行此类操作。这是持有电话的用户(可能是核心系统服务)的唯一特权。
但是,您可以确保在用户启动主活动时启动服务,这在用户安装应用程序后立即执行是非常正常的事情。
有关其他信息,请参阅问题How to start android service on installation,这实际上是您应该尝试的内容。
答案 1 :(得分:0)
在用户首次从主屏幕启动应用程序之前,无法以任何方式让应用程序在安装后立即执行任何操作。您无法明确收听广播操作。但是,您可以侦听一些被调用的泛型,例如:
android.intent.action.USER_PRESENT
,android.intent.action.SCREEN_OFF
或android.intent.action.SCREEN_ON
无论如何你不应该重启设备。你的用户将追捕你并用石头杀死你。除了笑话,谷歌可能实际上是从市场上推出你的应用程序。只需监听上面提到的其中一个操作,检查是否刚刚安装了应用程序(例如,使用一次性布尔首选项)并启动该服务。
注意:如果您最终收听了上述某项操作,请在第一次收到意图时停用您的接收器。你可以这样做(在接收器中):
public class FirstTimeReceiver extends BroadcastReceiver {
public void onReceive (Context context, Intent intent) {
// start your service (which does stuff asynchronously, of course, and then:
final ComponentName mySelf = new ComponentName(context, FirstTimeReceiver.class);
context.getPackageManager().setComponentEnabledSetting(mySelf, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
}
然而,你应该只做这个,如果这个服务对用户来说绝对是至关重要的(这个方案很少适用),而不是你/你的应用程序。正如 bjarkef 所提到的那样,您应该只在用户从主屏幕启动您的应用程序后启动它(更好的是,请求用户授权运行该服务)。