簡體   English   中英

廣播接收器沒有被調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM