Ich habe einen BroadcastReceiver, der nicht instanziiert oder aufgerufen wird, jede Hilfe bei dem, was ich tue, wird geschätzt.BroadcastReceiver wird nicht instanziiert
Es sollte auf Wifi Verbindung/Trennung Ereignisse reagieren, aber ist nicht, und es ist Superklasse Konstruktor wird nicht einmal aufgerufen.
MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
BroadcastReceiver:
public class ConnectivityChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v(TAG, "action: " + intent.getAction());
Log.v(TAG, "component: " + intent.getComponent());
}
}
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".ConnectivityChangeReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" />
</intent-filter>
</receiver>
</application>
</manifest>
Danke, das hat funktioniert, obwohl ich jetzt ein anderes Thema habe :-). Warnung: Das Deklarieren eines Broadcastempfängers für android.net.conn.CONNECTIVITY_CHANGE gilt nicht mehr für Apps mit dem Ziel N und höher. Im Allgemeinen sollten sich Apps nicht auf diese Sendung verlassen und stattdessen JobScheduler oder GCMNetworkManager verwenden. – Rory
Ja, dies ist eine Änderung mit Android N. Der langfristige Plan von Google besteht darin, alle Übertragungen zu entfernen, die eine App wecken könnten, die noch nicht läuft. Dies verursacht eine Menge an Leistungs-Thrash, was im Allgemeinen unnötig ist. Sie können sich jedoch dynamisch für diese Übertragung registrieren, indem Sie Ihre Aktivität verwenden. –