我使用了广播接收器,当它在Android设备上找到互联网连接时被调用,以检查广播接收器是否正在运行我尝试在logcat中打印它。我没有显示任何消息。 我正在调用我的广播接收器中的服务,该服务也没有被调用。 我已经看到类似的堆栈溢出问题,但我仍然无法解决问题。 很多天以来我一直坚持这个。有人可以帮我解决这个问题吗?
这是我的广播接收器:
public final class ConnectivityReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.e("BRRRRRRRRRR","works!!!! In Broadcast Receiver...!!!");
final AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final PendingIntent wakeupIntent = PendingIntent.getService(context, 0,
new Intent(context, LocationUpdate.class), PendingIntent.FLAG_UPDATE_CURRENT);
final boolean hasNetwork = !intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
if (hasNetwork)
{
// start service now for doing once
context.startService(new Intent(context, LocationUpdate.class));
// schedule service for every 15 minutes
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_FIFTEEN_MINUTES,
AlarmManager.INTERVAL_FIFTEEN_MINUTES, wakeupIntent);
}
else
{
alarmManager.cancel(wakeupIntent);
}
}
}
的Manifest.xml
<receiver android:name="info.androidhive.loginandregistration.ConnectivityReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
答案 0 :(得分:0)
你的接收器看起来很好。请检查您的包裹名称是否正确。在AndroidManifest.xml
注册接收器应该足够了,但如果由于某种原因它没有工作,你可以尝试不同的解决方案。
尝试以下列方式以编程方式注册您的接收器,例如在您的活动的onResume()
方法中:
@Override
protected void onResume() {
super.onResume();
ConnectivityReceiver receiver = new ConnectivityReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(receiver, filter);
}
您还应该在活动中使用onPause()
方法取消注册您的接收器:
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
如果它没有帮助,您可以在标记内添加AndroidManifest.xml文件的新权限。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
答案 1 :(得分:0)
由于您正在检查连接更改,我建议您先检查您的应用是否有权连接到互联网。
该应用访问互联网的权限将是 -
ctrl + s