Android 8.1 预置WIFI
最近收到客户需求,想要预置指定WIFI,预置WIFI账号密码以uID、uPassword为例说明,具体修改参照如下:
创建WIFI配置文件 WifiConfigStore.xml:
/prebuilts/data/misc/WifiConfigStore.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<WifiConfigStoreData>
<int name="Version" value="1" />
<NetworkList>
<Network>
<WifiConfiguration>
<string name="ConfigKey">"uID"WPA_PSK</string>
<string name="SSID">"uID"</string>
<null name="BSSID" />
<string name="PreSharedKey">"uPassword"</string>
<null name="WEPKeys" />
<int name="WEPTxKeyIndex" value="0" />
<boolean name="HiddenSSID" value="false" />
<boolean name="RequirePMF" value="false" />
<byte-array name="AllowedKeyMgmt" num="1">02</byte-array>
<byte-array name="AllowedProtocols" num="1">03</byte-array>
<byte-array name="AllowedAuthAlgos" num="1">01</byte-array>
<byte-array name="AllowedGroupCiphers" num="1">0f</byte-array>
<byte-array name="AllowedPairwiseCiphers" num="1">06</byte-array>
<boolean name="Shared" value="true" />
<null name="SimSlot" />
<null name="Aliases" />
<int name="Priority" value="0" />
<int name="Status" value="2" />
<null name="FQDN" />
<null name="ProviderFriendlyName" />
<null name="LinkedNetworksList" />
<null name="DefaultGwMacAddress" />
<boolean name="ValidatedInternetAccess" value="false" />
<boolean name="NoInternetAccessExpected" value="false" />
<int name="UserApproved" value="0" />
<boolean name="MeteredHint" value="false" />
<int name="MeteredOverride" value="0" />
<boolean name="UseExternalScores" value="false" />
<int name="NumAssociation" value="0" />
<int name="CreatorUid" value="1000" />
<string name="CreatorName">android.uid.system:1000</string>
<string name="CreationTime">time=12-27 13:42:19.561</string>
<int name="LastUpdateUid" value="1000" />
<string name="LastUpdateName">android.uid.system:1000</string>
<int name="LastConnectUid" value="0" />
<boolean name="IsLegacyPasspointConfig" value="false" />
<long-array name="RoamingConsortiumOIs" num="0" />
</WifiConfiguration>
<NetworkStatus>
<string name="SelectionStatus">NETWORK_SELECTION_ENABLED</string>
<string name="DisableReason">NETWORK_SELECTION_ENABLE</string>
<null name="ConnectChoice" />
<long name="ConnectChoiceTimeStamp" value="-1" />
<boolean name="HasEverConnected" value="false" />
</NetworkStatus>
<IpConfiguration>
<string name="IpAssignment">DHCP</string>
<string name="ProxySettings">NONE</string>
</IpConfiguration>
</Network>
</NetworkList>
<PasspointConfigData>
<long name="ProviderIndex" value="0" />
</PasspointConfigData>
</WifiConfigStoreData>
/device/droi/pj/device.mk:
+PRODUCT_COPY_FILES += upjpath/prebuilts/data/misc/WifiConfigStore.xml:system/etc/WifiConfigStore.xml
/system/core/rootdir/init.rc:
+on property:persist.sys.pj.firstboot=1
+ copy /system/etc/WifiConfigStore.xml /data/misc/wifi/WifiConfigStore.xml
+ chown system system /data/misc/wifi/WifiConfigStore.xml
+ chmod 0600 /data/misc/wifi/WifiConfigStore.xml
/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
public void systemReady() {
enforceSystemOrRoot("Only the system can claim the system is ready");
+ String ufirstboot = SystemProperties.get("persist.sys.pj.firstboot","0");
+ if ("0".equals(ufirstboot)) {
+ SystemProperties.set("persist.sys.pj.firstboot","1");
+ SystemProperties.set("persist.sys.pj.firstboot","2");
+ }
重新编译验证,修改生效,已成功预置WIFI