Conectando-se à rede Wi-Fi automaticamente no Android 5 e 6

Há um tempo que estou lutando para conectar-me à rede Wi-Fi no Android 5 e 6 e outras perguntas semelhantes parecem não funcionar para mim. Eu poderia obter o mesmo código trabalhando no Android 4.4.2

Adicionando o snippet de código abaixo.

        String networkSSID = getSsid();
        String networkPass = getNetworkPass();

        WifiConfiguration conf = new WifiConfiguration();
        conf.SSID = "\"" + networkSSID + "\"";
        conf.status = WifiConfiguration.Status.ENABLED;
        conf.priority = 40;

        conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
        conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
        conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
        conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
        conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
        conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
        conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
        conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

        conf.preSharedKey = "\""+ networkPass +"\"";
        int value = mWifiManager.addNetwork(conf);
        Log.i(TAG_CHECK, "Connecting to : " + value);
        boolean enabled = mWifiManager.enableNetwork(value, true);
        Log.i(TAG_CHECK, "enabled to : " + enabled);
        mWifiManager.reconnect();

E aqui está o que eu notei.

mWifiManager.addNetwork (conf)

retornaalguns (+) números inteiros com Android 5 (telefone) e Android 6 (guia).

Mas ambos não se conectam, a menos que eu abra as configurações de Wi-Fi (não preciso fazer nada e apenas aterrar lá, conecto-me) ou desligo e ligo manualmente o Wifi na barra superior para conectar-me automaticamente.

Os ouvintes para detectar a conexão à rede estão intactos para que ambas as versões saibam com precisão quando a conexão é estabelecida - confirmando o comportamento acima. Anexou uma foto das permissões concedidas abaixo.

Alguma dica sobre o que estou perdendo?

EDIT: Ao pesquisar na classe WifiManager, parece que o ponto de acesso permanece no estado WIFI_AP_STATE_DISABLED. Devo também destacar que tudo funcionou como esperado ao experimentar um telefone Android M diferente.

EDIT2

I have the following observations.

1. The issue so far is specific to 1 android 6.0.1 Samsung tablet and 1 android 5.0.2 Micromax phone. It works just fine on 3 other android 6.0.1 phones, 1 android N phone and Android 4.4.2 phone. 
2. The access point ends up in wifi_ap_disabled state in the problematic cases consistently. Both addNetwork and enableNetwork calls are affirmative.
3. These access points are not that of a router wifi but that of other phones that broadcast. The problematic phones can programatically connect to wifi hotspots (setup manually and not in the programatic way as I would like to) without any issue.
4. Mobile data enabled/disabled state or wifi state with a different connected network doesn't change the dynamics for both working and problematic phones. 

This makes me think that it is a combination of phones/tabs (and not OS) and the access point broadcast configuration. Do you think I should be playing around with some config parameters?



Edit 3 - Important Update

So the wifimanager is obtained like below

WifiManager mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

I instantiate mWifiManager in a service (inside onCreate method) and use that later to scan and connect with inputs from front-end activity. While it doesn't work in the way as described earlier, using the same snippet seems to work when the enableNetwork call is done right in the onCreate method - working just as expected. It also works fine when called from front-end activity but only when I don't instantiate mWifiManager in the service.

Though I would expect only one reference to a system service - WifiManager i.e, I think the subsequent usage of that reference (or a different reference to WifiManager) gets a lower priority (or gets deprioritized  by the previous reference)  and hence doesn't get completely executed leaving the access point in disabled state and requiring manual intervention to help complete the execution by WifiManager and other wifi system services.

Also, I notice the same in Android 5.0.2 phone, the asynchronous enableNetwork does get executed, but it takes some time to execute it.

My questions
1. It is no more a question about the correctness of the code. Services in general have lesser priority compared to front-end threads So, is there is way I could prioritise the enableNetwork call so that it gets immediately executed?
2. What happens in case of multiple references to WifiManager? 

questionAnswers(1)

yourAnswerToTheQuestion