1
我想实现一个最小屏幕活动记录器应用程序。所以,应用程序应该在后台运行(无需用户交互),并且它会记录屏幕上的和停止的活动。我已经开始了这些代码,但似乎我需要注册我的ScreenBroadcastReceiver
broadcastreceiver
。如果我在主要活动中使用下面的代码,它就可以工作。但是,我不想主要注册它,因为用户无法每次启动活动。那么,我应该在哪里注册我的BroadcastReceiver
,以便应用程序在没有用户交互的情况下工作?Android注册BroadcastReceiver连续运行
oncreate
在主要活动
//I need to find another place to put these code, Where ???
//IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
//filter.addAction(Intent.ACTION_SCREEN_OFF);
//BroadcastReceiver screenOnReceiver = new ScreenBroadcastReceiver();
//registerReceiver(screenOnReceiver, filter);
这是ScreenBroadcastReceiver,当屏幕上就会被触发。
public class ScreenBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Log.w("OnReceive", "SCREEN IS ON");
}
}
}
这是BootReceiver在后台运行程序本身。
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, ScreenListenerService.class);
context.startService(service);
//IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
//filter.addAction(Intent.ACTION_SCREEN_OFF);
//BroadcastReceiver screenOnReceiver = new ScreenBroadcastReceiver();
//context.registerReceiver(screenOnReceiver, filter);
}
}
这是明显的:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<service android:name=".ScreenListenerService"></service>
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
更新:
我添加了一个服务,但它不工作。我忘了添加一些东西吗?或者是什么 ?
public class ScreenListenerService extends Service {
public void OnCreate(){
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver screenOnReceiver = new ScreenBroadcastReceiver();
registerReceiver(screenOnReceiver, filter);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
谢谢,我添加了一个服务,并做了同样的,但没有工作。你能检查更新吗? – 2013-04-28 03:49:17
我的意思是,使用broadcastreceiver与服务,而不是与活动一起使用。 – stinepike 2013-04-28 03:56:46
是的,我做到了。我不再使用主要活动中的代码。但仍然没有成功.... – 2013-04-28 03:58:45