我知道名为WakefulBroadcastReceiver的 v4 辅助类,它旨在响应设备唤醒。
我想编写一个无头 Android 应用程序,它只是检测设备已唤醒,然后执行我想要的任何逻辑(在下面的测试应用程序中,它只是记录一条消息)。
但是,我找不到在应用程序清单中指定的意图,因此我的WakefulBroadcastReceiver将被解雇。
有谁知道如何配置这样的应用程序,以便WakefulBroadcastReceiver检测设备唤醒的所有实例?
首先,这是WakefulBroadcastReceiver:
public class MyWakeupReceiver extends WakefulBroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.i("MyWakeupReceiver", "received wake-up intent: " + intent.toString());
startWakefulService(context, new Intent(context, MyWakeupService.class));
}
}
...这是运行的服务:
public class MyWakeupService extends IntentService {
public MyWakeupService() {
super("MyWakeupService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.i("MyWakeupService", "onHandleIntent: " + intent.toString());
// Do stuff here.
MyWakeupReceiver.completeWakefulIntent(intent);
}
}
最后,这是我的清单。注意“WHAT_GOES_HERE????” 在意图过滤器中。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.test.package"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="my.test.package.MyWakeupReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.WHAT_GOES_HERE????" />
</intent-filter>
</receiver>
<service android:name="my.test.package.MyWakeupService" />
</application>
</manifest>
非常感谢。