当前位置: 首页 > news >正文

摄影行业网站桂林旅游攻略必去景点

摄影行业网站,桂林旅游攻略必去景点,网校,书店网站网站建设规划书AOSP Settings WIFI随机MAC地址功能 背景 最近客户提出了想要实现随机WIFIMAC地址的功能#xff08;我们默认WIFI的MAC地址是固定的#xff09;。网上搜到了一篇不错的文章#xff0c;本次改动也是基于这个来写的。 由于客户指定使用的settings是AOSP的#xff0c;所以在…AOSP Settings WIFI随机MAC地址功能 背景 最近客户提出了想要实现随机WIFIMAC地址的功能我们默认WIFI的MAC地址是固定的。网上搜到了一篇不错的文章本次改动也是基于这个来写的。 由于客户指定使用的settings是AOSP的所以在AOSP Settings上改动。 看了一下其实Amlogic提供的settings在这部分的代码量少多了。更好修改。 Android11 Wifi Mac地址设置随机或者固定分析_android11 获取wifi mac-CSDN博客 一、配置文件属性决定全局开启/关闭WIFI随机MAC 如果是需要固定死开启/关闭WIFI随机MAC只需要改动下面这个文件就可以了。 frameworks/opt/net/wifi/service/res/values/config.xml //WiFi MAC 是否随机设置 !-- Indicates that connected MAC randomization is supported on this device -- bool translatablefalse nameconfig_wifi_connected_mac_randomization_supportedtrue/bool//AP 一般是投屏 MAC 是否随机设置 !-- Indicates that p2p MAC randomization is supported on this device -- bool translatablefalse nameconfig_wifi_p2p_mac_randomization_supportedfalse/bool//AP 一般是热点 MAC 是否随机设置 !-- Indicates that AP mode MAC randomization is supported on this device -- bool translatablefalse nameconfig_wifi_ap_mac_randomization_supportedtrue/bool不过这样做只能定死不能随用户心情改动。 这个文件一旦编译完成就不可以更改。 因此需要把这个判断逻辑改掉不用它判断。 二、修改判断逻辑为prop属性 由于我们要新增加一个prop属性所以写属性的读取属性的方法都要写。 frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.java 这个函数是判断资源文件中是否随机WIFI MAC的位置 /*** Helper method to check if Connected MAC Randomization is supported - onDown events are* skipped if this feature is enabled (b/72459123).** return boolean true if Connected MAC randomization is supported, false otherwise*/ public boolean isConnectedMacRandomizationEnabled() {return mContext.getResources().getBoolean( R.bool.config_wifi_connected_mac_randomization_supported); }我们将其修改成判断prop属性 --- a/frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.javab/frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.java-153,6 153,7 import java.util.List;import java.util.Set;import java.util.concurrent.atomic.AtomicBoolean;import java.util.concurrent.atomic.AtomicInteger; import android.os.SystemProperties; -210,6 211,7 public class ClientModeImpl extends StateMachine {protected void log(String s) {Log.d(getName(), s);}private static final String PROP_MAC_RANDOMIZATION persist.mac_randomization_enabled;private final WifiMetrics mWifiMetrics;private final WifiInjector mWifiInjector;private final WifiMonitor mWifiMonitor;-3334,8 3336,7 public class ClientModeImpl extends StateMachine {public boolean isConnectedMacRandomizationEnabled() { - return mContext.getResources().getBoolean( - R.bool.config_wifi_connected_mac_randomization_supported);return SystemProperties.getBoolean(PROP_MAC_RANDOMIZATION, false);}还有一个地方也涉及到随机WIFI MAC的判断 --- a/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiConfigManager.javab/frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiConfigManager.java-75,6 75,7 import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set; import android.os.SystemProperties; -329,6 330,7 public class WifiConfigManager {private final NetworkListSharedStoreData mNetworkListSharedStoreData;private final NetworkListUserStoreData mNetworkListUserStoreData;private final RandomizedMacStoreData mRandomizedMacStoreData;private static final String PROP_MAC_RANDOMIZATION persist.mac_randomization_enabled; -645,10 647,10 public class WifiConfigManager {* Returns whether MAC randomization is supported on this device.* param config* return* modified by zhangt 2024.02.19*/private boolean isMacRandomizationSupported() { - return mContext.getResources().getBoolean( - R.bool.config_wifi_connected_mac_randomization_supported);return SystemProperties.getBoolean(PROP_MAC_RANDOMIZATION, false);}我是在同时修改上面两处内容后才成功的。 三、在WIFI 详细内容界面增加Switch开关用来开启关闭该功能 packages/apps/Settings/res/xml/wifi_network_details_fragment2.xml --- a/packages/apps/Settings/res/xml/wifi_network_details_fragment2.xmlb/packages/apps/Settings/res/xml/wifi_network_details_fragment2.xml-83,6 83,12 android:summarystring/wifi_subscription_summarysettings:allowDividerAbovetrue/ SwitchPreferenceandroid:keyrandom_mac_address_switchandroid:titlestring/random_mac_address_titleandroid:summarystring/random_mac_address_summaryandroid:defaultValuefalse /这里WIFI 详细内容界面的xml文件是上面这个。 然后我们要在这个界面的具体逻辑代码中进行实现。 --- a/packages/apps/Settings/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.javab/packages/apps/Settings/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java-55,6 55,10 import java.time.Clock;import java.time.ZoneOffset;import java.util.ArrayList;import java.util.List; import android.os.SystemProperties; import androidx.preference.SwitchPreference; import androidx.preference.Preference; import android.os.Bundle; -75,6 79,12 public class WifiNetworkDetailsFragment2 extends DashboardFragment implements// Interval between initiating SavedNetworkTracker scansprivate static final long SCAN_INTERVAL_MILLIS 10_000; private WifiManager wifiManager;private SwitchPreference randomMacAddressPreference;private static final String PROP_MAC_RANDOMIZATION persist.mac_randomization_enabled;VisibleForTestingNetworkDetailsTracker mNetworkDetailsTracker;private HandlerThread mWorkerThread; -134,6 145,25 public class WifiNetworkDetailsFragment2 extends DashboardFragment implementssuper.onCreateOptionsMenu(menu, inflater);} Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);wifiManager (WifiManager) requireContext().getSystemService(Context.WIFI_SERVICE);randomMacAddressPreference findPreference(random_mac_address_switch);if (randomMacAddressPreference ! null) {randomMacAddressPreference.setChecked(isMacRandomizationSupported());randomMacAddressPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {boolean isWifiMacRandomEnabled (boolean) newValue;setRandomMacAddress(isWifiMacRandomEnabled);return true;}});}} Overridepublic boolean onOptionsItemSelected(MenuItem menuItem) {switch (menuItem.getItemId()) {-218,6 248,15 public class WifiNetworkDetailsFragment2 extends DashboardFragment implementsreturn mControllers;} private void setRandomMacAddress(boolean isWifiMacRandomEnabled) {SystemProperties.set(PROP_MAC_RANDOMIZATION, Boolean.toString(isWifiMacRandomEnabled));}private boolean isMacRandomizationSupported() {return SystemProperties.getBoolean(PROP_MAC_RANDOMIZATION, false);}在代码中搜索的时候我发现有WifiNetworkDetailsFragment2.java和WifiNetworkDetailsFragment.java两个差不多的文件根据验证我的是WifiNetworkDetailsFragment2.java。 这里我首先添加了setRandomMacAddress和isMacRandomizationSupported方法用来写入和读取prop属性。然后在onCreate方法中获取到我们新建的自动连接Switch按钮与属性相绑定。如果没有改属性则写入属性。最后在开关的事件监听中改变属性值 四、最终现象 默认的效果是WIFI MAC不随机。在点开我们新加的Switch前也是没有prop属性的。在打开开关后新连接的WIFI的MAC地址会随机掉。在关掉开关后所有的WIFI MAC地址会变成一样的。 注意如果你随机到新MAC之后关闭这个开关那么所有的WIFI MAC都会变成你新随机到的这个而不是出厂默认MAC
http://www.w-s-a.com/news/135861/

相关文章:

  • 邓砚谷电子商务网站建设镇江网
  • 网站空间支持什么程序工作服款式
  • 网站单页品牌网站建设 蝌蚪5小
  • 怎么做外贸网站需注意哪些做电脑系统的网站
  • 网站建设介绍推广用语河南网站优化外包服务
  • 课程网站模板贵州省城乡与建设厅网站
  • 网站模板及源码谁家网站用户体验做的好
  • 做网站的技术要求搜索栏在wordpress菜单上位置
  • 如何给网站弄ftpwordpress怎么添加关键词描述
  • 成都工程建设信息网站金科网站建设
  • 传媒公司 网站开发厦门网站建设门户
  • 宿城区建设局网站做网站的绿色背景图
  • 网站空间托管合同 .doc网站开发团队 组建
  • 网站建设书本信息it运维服务
  • 四核网站建设设计网站流程
  • ui设计网站设计与网页制作视频教程wordpress插件漏洞利用
  • 网站建设公司排名前十做网站的最终目的
  • 选择网站开发公司的标准中国网站建设市场规模
  • 衣服网站建设策划书广州住房和城乡建设部网站
  • 微商城科技淄博网站建设优化seo
  • 杭州 网站设计制作东圃手机网站开发
  • 网站文章页内链结构不好可以改吗微信平台如何开发
  • 炫酷业务网站课程网站如何建设方案
  • 网站建设服务器可以租吗wordpress微信打赏
  • 网站制作的重要流程图大连网站优化快速排名
  • 河南省住房建设厅官方网站注册公司邮箱需要什么
  • 美橙网站注册华为手机网站建设策划方案论文
  • 河南省和建设厅网站首页在线图片翻译
  • 关于备案空壳网站清理通知去别人网站挂黑链
  • 做网站待遇世界购物平台排行榜