解锁Android设备时运行任务

时间:2020-02-02 19:36:57

标签: android

我是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. Job Scheduler仅适用于android 5及更高版本(我也可以)。 3.后台服务。较新的android版本将限制这些。

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

1 个答案:

答案 0 :(得分:0)

对不起! 我已经创建了项目,并且正在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