首页 > 解决方案 > 安卓设备解锁时运行任务

问题描述

我是 Android 开发的新手,但我有使用 Java 的经验。

我的目标是创建一个应用程序,该应用程序将在设备解锁时尝试连接到打开的 Wifi AP(在屏幕打开并正确输入密码/密码后)。

这将确保应用程序仅在用户将要使用手机之前运行,以便在不使用时节省电量。当我的应用程序没有在前台运行时,还有其他方法可以检测手机何时处于活跃状态。

我的应用程序是相对线性的: 1. 检测设备解锁(用户正在积极使用手机)状态或其他类型的触发器。2. 如果 wifi 已打开且设备尚未连接到任何 AP,请扫描 wifi。3.如果开放的AP在范围内,请选择信号最强的一个并尝试连接。

现在我正在研究如何检测设备解锁状态的选项,但是不同的 API 级别限制使它变得混乱。我不打算将此应用程序发布到 Play 商店,因此 Google Play 的目标 API 级别要求不会打扰我。我想我的应用程序是否可以在 android 4.3 及更高版本或 android 5 及更高版本上运行,如果 4.3 是不可能的。

这些是我现在遇到的选项。1.广播接收器-> ACTION_USER_PRESENT 2.仅适用于android 5及更高版本的作业调度程序(我也很好)。3.后台服务。较新的 android 版本会限制这些。

我愿意接受任何建议和信息,包括其他步骤中可能出现的问题。谢谢。

标签: android

解决方案


对不起!我已经创建了项目,并且正在 AVD 上测试多个代码片段,但似乎没有任何效果。然后我尝试在手机上运行我的应用程序,结果一切正常。

将处理广播的类。

public class ConBroRec extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())) {
            //when device is unlocked
        }
    }
}

显现

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    ...
    <application ...>
        ...
        <receiver android:name=".ConBroRec"
            android:enabled="true">
            <intent-filter>
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>
    ...
    </application>
...
</manifest>

targetSdkVersion<=25


推荐阅读