电话启动时触发ACTION_POWER_DISCONNECTED

时间:2013-09-16 21:14:34

标签: android android-intent

我有一个应用程序,当手机充电器断开连接时播放声音。 Evrything运行良好,但Android在手机启动时触发ACTION_POWER_DISCONNECTED,与充电器与ACTION_POWER_CONNECTED连接时相同。

我明白为什么操作系统会做出这样的事情,但有可能知道这是由于重启状态,所以我的声音不会被播放?

这种情况发生在Nexus 4上,尚未测试其他设备。

    @Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction() == Intent.ACTION_POWER_CONNECTED) {

    } else if (intent.getAction() == Intent.ACTION_POWER_DISCONNECTED) {
              //Don't want to get there if the phone is rebooting!
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

找到解决我问题的方法,这可能是一种通用且简单的方法,可确保在调用充电器意图时设备无法启动。

抓住ACTION_BOOT_COMPLETED(不要忘记清单权限和意图)并在共享偏好中设置时间。

if (intent.getAction() == Intent.ACTION_BOOT_COMPLETED) {
        SharedPreferences.Editor editor = PreferenceManager
                .getDefaultSharedPreferences(context)
                .edit();
        editor.putLong("uptime", System.currentTimeMillis());
        editor.commit();
        return;
    }

然后确保我们不会在启动过程中使用与系统正常运行时间相比的简单条件来围绕代码:

    if (preferences.getLong("uptime", System.currentTimeMillis()) > System.currentTimeMillis() - SystemClock.uptimeMillis()) {
               //Your code to be executed there!
    }

希望这对任何人都有帮助!