Fix p2p_supplicant.conf path on Android 9

This commit is contained in:
Mygod
2018-09-04 08:15:56 +08:00
parent 89c26fe384
commit 4ea235b52b

View File

@@ -29,6 +29,9 @@ class P2pSupplicantConfiguration(private val initContent: String? = null) : Parc
* PSK parser can be found here: https://android.googlesource.com/platform/external/wpa_supplicant_8/+/d2986c2/wpa_supplicant/config.c#488
*/
private val pskParser = "^[\\r\\t ]*psk=(ext:|\"(.*)\"|\"(.*)|[0-9a-fA-F]{64}\$)".toRegex(RegexOption.MULTILINE)
private val confPath = if (Build.VERSION.SDK_INT >= 28)
"/data/vendor/wifi/wpa/p2p_supplicant.conf" else "/data/misc/wifi/p2p_supplicant.conf"
}
private class InvalidConfigurationError : IOException()
@@ -37,7 +40,7 @@ class P2pSupplicantConfiguration(private val initContent: String? = null) : Parc
}
override fun describeContents() = 0
private val contentDelegate = lazy { initContent ?: loggerSu("exec cat /data/misc/wifi/p2p_supplicant.conf") }
private val contentDelegate = lazy { initContent ?: loggerSu("exec cat $confPath") }
private val content by contentDelegate
fun readPsk(handler: ((RuntimeException) -> Unit)? = null): String? {
@@ -87,7 +90,7 @@ class P2pSupplicantConfiguration(private val initContent: String? = null) : Parc
}
if (ssidFound == 0 || pskFound == 0) return false
// pkill not available on Lollipop. Source: https://android.googlesource.com/platform/system/core/+/master/shell_and_utilities/README.md
return noisySu("cat ${tempFile.absolutePath} > /data/misc/wifi/p2p_supplicant.conf",
return noisySu("cat ${tempFile.absolutePath} > $confPath",
if (Build.VERSION.SDK_INT >= 23) "pkill wpa_supplicant"
else "set `ps | grep wpa_supplicant`; kill \$2")
} finally {