[英]Broadcast receiver is not getting invoked
我已經使用了廣播接收器,當它在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>
您的接收器看起來不錯。 請檢查您的包裹名稱是否正確。 在AndroidManifest.xml
注冊接收者就足夠了,但是如果由於某種原因它不起作用,則可以嘗試其他解決方案。
嘗試以下列方式(例如,在活動中的onResume()
方法中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" />
由於您正在檢查連接更改,因此我建議您首先檢查您的應用是否具有連接到互聯網的權限。
該應用訪問互聯網的權限為- <uses-permission android:name="android.permission.INTERNET" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.