0

我想使用广播接收器。我希望此接收器始终在后台运行,并检测何时启用或禁用 BT。我怎样才能创建这个?我不想要在后台运行的应用程序。我只想要接收器。也许我需要为此创建一个服务?

编辑:你不明白我的意思,我会解释:我只想要一个广播接收器,它总是在后台等待。我创建了设置广播接收器的活动,但是当我关闭活动时,广播接收器也会关闭。我希望 BroadcastReceiver 像服务一样。也许我需要创建一个包含广播接收器的服务?谢谢!

4

2 回答 2

0

假设您指的是BroadcastReceiver. 您可以使用相同的意图过滤器来启动一个活动、服务,甚至是BroadcastReceiver清单中的一个,如下所示:

<receiver android:name="MyScheduleReceiver" >
    <intent-filter>
        <action android:name="***your intent***" /> 
    </intent-filter>
</receiver>

此示例适用于 BroadcastReceiver。另外,你可以发布你的代码吗?

这是一个关于广播接收器的很好的教程:vogella文章-AndroidBroadcastReceiver

于 2013-07-26T13:52:44.193 回答
0

如下图所示进行服务

public class DataService extends Service {
public static String BROADCAST_ACTION = "com.start";
Intent intent;

@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
    intent = new Intent(BROADCAST_ACTION);
    sendBroadcast(intent);
    stopSelf();
}

@Override
public IBinder onBind(Intent arg0) {
    return null;
}

}

对于启动服务,请执行以下操作:

startService(new Intent(MainActivity.this, DataService.class));

对于注册接收者:

 registerReceiver(mHandleReceiver,new IntentFilter(LocationFindService.BROADCAST_ACTION));

    private final BroadcastReceiver mHandleReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

        }
    };

您可以根据需要检查您的数据。停止服务

stopService(new Intent(MainActivity.this,DataService.class));

在清单文件中

<service android:name="com.trafficapp.service.DataService" > </service>

alarm = (AlarmManager) getSystemService(
                Context.ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        alarm.setRepeating(AlarmManager.RTC_WAKEUP,
                calendar.getTimeInMillis(), 1000, pintent);

        registerReceiver(mHandleReceiver,
                new IntentFilter(LocationFindService.BROADCAST_ACTION));
mHandleReceiver calls at every 1 second.
于 2013-07-26T13:53:48.390 回答