安装后重新启动

时间:2011-08-24 09:05:57

标签: android

安装apk后是否可以强制重启设备?

我想强制执行此操作,因为我想确保我的服务已启动。

2 个答案:

答案 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 所提到的那样,您应该只在用户从主屏幕启动您的应用程序后启动它(更好的是,请求用户授权运行该服务)。