diff --git a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java index e57d7bd5d..3c5f312ea 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java +++ b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java @@ -3,6 +3,13 @@ package com.fongmi.android.tv.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.NetworkRequest; +import android.os.Build; + +import androidx.annotation.NonNull; import com.android.cast.dlna.dmr.DLNARendererService; import com.fongmi.android.tv.App; @@ -13,7 +20,32 @@ public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - DLNARendererService.Companion.start(App.get(), R.drawable.ic_logo); - LiveConfig.get().init().load(); + registerCallback(); + } + + private void registerCallback() { + ConnectivityManager manager = (ConnectivityManager) App.get().getSystemService(Context.CONNECTIVITY_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) manager.registerDefaultNetworkCallback(new Callback()); + else manager.registerNetworkCallback(new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(), new Callback()); + } + + static class Callback extends ConnectivityManager.NetworkCallback { + + private boolean first; + + @Override + public void onAvailable(@NonNull Network network) { + if (first) doJob(); + else first = true; + } + + @Override + public void onLost(@NonNull Network network) { + } + + private void doJob() { + LiveConfig.get().init().load(); + DLNARendererService.Companion.start(App.get(), R.drawable.ic_logo); + } } }