I have following permissions in AndroidManifest.xml
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.REBOOT" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
Then I have this BroadcastReceiver:
public class StartAfterRebootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Properties.DEBUG) Log.d(TAG, "Receiver started");
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
connectivityManager.registerNetworkCallback(
builder.build(),
new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
if (Properties.DEBUG) Log.d(TAG, "Receiver running after connectivity up");
if (Properties.DEBUG)
Log.d(TAG, "Receiver starts service, probably once");
if (!UpdateService.isCurrentlyRunning()) {
if (Properties.DEBUG)
Log.d(TAG, "Receiver UpdateService is not running, try to start");
UpdateService.startService(context);
}
}
@Override
public void onLost(Network network) {
if (Properties.DEBUG)
Log.d(TAG, "Receiver not running after connectivity lost");
if (UpdateService.isCurrentlyRunning()) {
if (Properties.DEBUG)
Log.d(TAG, "Receiver UpdateService is running, sometimes need to redesigned stop service");
UpdateService.stopService(context);
}
}
}
);
}
}
I have Android TV box with Android 11, exactly I have two boxes from different vendors, on both is there only ethernet, not wifi, but on one of them is all working well, but on the other app start, starts foreground service correctly, when I plug out ethernet cable, service is correcty destroyed, but its all. App dies and over logcat I got this message:
05-18 22:05:03.444 548 852 D ConnectivityService: ConnectivityService NetworkRequestInfo binderDied(NetworkRequest [ LISTEN id=19, [ Capabilities: NOT_RESTRICTED&TRUSTED&NOT_VPN&FOREGROUND Uid: 10027 AdministratorUids: [] RequestorUid: 10027 RequestorPackageName: com.droidlogic.updater] ], android.os.BinderProxy@dc6b02d)
What I am doing wrong. I am sitting here over week and I cant see any mistake. Its system app compiled with android.
Thank you very much. D
I moved ConnectivityService to Service and it helps.