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

广州白云做网站发展速度迅猛 具有丰富的网站建设经验

广州白云做网站,发展速度迅猛 具有丰富的网站建设经验,大连仟亿科技网站建设公司怎么样,wordpress ampAndroid Settings 有线网设置界面优化 文章目录 Android Settings 有线网设置界面优化一、前言二、简单修改1、修改的EthernetSettings代码:2、有线网ip获取代码:3、AndroidManifest.xml定义有线网的Activity4、修改后界面: 三、其他1、有线网…

Android Settings 有线网设置界面优化

文章目录

  • Android Settings 有线网设置界面优化
    • 一、前言
    • 二、简单修改
      • 1、修改的EthernetSettings代码:
      • 2、有线网ip获取代码:
      • 3、AndroidManifest.xml定义有线网的Activity
      • 4、修改后界面:
    • 三、其他
      • 1、有线网设置界面优化小结
      • 2、Android 拉起开发者设置界面命令和代码实现
      • 3、Android13 有线网开关研究
      • 4、Android14 Settings应用添加有线网开关条目实现
      • 5、Android 获取ip地址多种方式介绍

一、前言

快清明放假了,说点简单的,有线网设置,估计只对部分系统开发的人有点用。

Android 原生设置应用好像大部分方案都是没有显示有线网设置界面的;

从接触的方案看只有rk方案的原生设置应用显示了有线网设置界面,和热点设置界面是同级目录显示的。

如下图所示:
在这里插入图片描述

但是这个有线网设置界面又是存在点问题的:

有线网DHCP自动获取模式下,是无法获取到ip的;
只有在设置了静态ip的模式下,才显示ip和其他信息。

如下图,所示:
在这里插入图片描述

难道是RK从谷歌的一个调试分支下载的Settings源码?

但是不应该啊,谷歌不会犯这么低级的错误吧,并且Ethernet的相关字符串都没有国际化,只有英文的;

并且查看里面获取有线网ip的地方居然使用的是反射,系统应用按道理是可以调用framework的隐藏方法的!

所以我大胆的猜测:这个有线网设置界面是RK自己添加的,并且是很久的代码了,

一直挪用下来,未重新适配,看了她Android15提供的代码也是一样的问题。

这个也是一个小bug,本文只简单修改一下。

二、简单修改

1、修改的EthernetSettings代码:

Settings\src\com\android\settings\ethernet\EthernetSettings.java

public class EthernetSettings extends SettingsPreferenceFragment ...{private static final String TAG = "EthernetSettings";private void refreshUI() {Iterator<String> iterator = mEthInfoList.keySet().iterator();while (iterator.hasNext()) {String key = iterator.next();String prefix = key + PREFIX_SPLIT;EthInfo info = mEthInfoList.get(key);log("info = " + info);if (info != null) {
-                setStringSummary(prefix + KEY_ETH_IP_ADDRESS, info.getIpAddress());
+			     IpConfiguration ipConfiguration = Reflect_getConfiguration("eth0");
+			     IpAssignment mode = ipConfiguration.getIpAssignment();
+				 if (mode == IpAssignment.DHCP || mode == IpAssignment.UNASSIGNED) {
+					 log("tyty  DHCP ========= ");
+					 setStringSummary(prefix + KEY_ETH_IP_ADDRESS, getEthernetIpAddress());
+				 }else{
+					setStringSummary(prefix + KEY_ETH_IP_ADDRESS, info.getIpAddress());}

上面只是把显示ip地址那行替换成了getEthernetIpAddress()方法获取的有线网ip地址就行;

2、有线网ip获取代码:

import android.net.ConnectivityManager;
import android.net.Network;
import android.net.LinkProperties;private ConnectivityManager mConnectivityManager;mConnectivityManager = (ConnectivityManager) getActivity().getSystemService(getActivity().CONNECTIVITY_SERVICE);public String getEthernetIpAddress() {Log.d(TAG,"");final Network network = getFirstEthernet();if (network == null) {return "";}final LinkProperties linkProperties = mConnectivityManager.getLinkProperties(network);if (linkProperties != null) {for (LinkAddress linkAddress : linkProperties.getLinkAddresses()) {InetAddress inetAddress = linkAddress.getAddress();if (inetAddress instanceof Inet4Address) {return inetAddress.getHostAddress();}}}return "";}public Network getFirstEthernet() {final Network[] networks = mConnectivityManager.getAllNetworks();for (final Network network : networks) {NetworkInfo networkInfo = mConnectivityManager.getNetworkInfo(network);if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {return network;}}return null;}

3、AndroidManifest.xml定义有线网的Activity

        <activityandroid:name="Settings$EthernetSettingsActivity"android:label="@string/ethernet_settings_title"android:icon="@drawable/ic_settings_wireless"android:taskAffinity=""android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.VOICE_LAUNCH" /><category android:name="com.android.settings.SHORTCUT" /></intent-filter><meta-data android:name="com.android.settings.FRAGMENT_CLASS"android:value="com.android.settings.ethernet.EthernetSettings" /></activity><!-- Keep compatibility with old shortcuts. --><activity-aliasandroid:name=".EthernetSettings"android:label="@string/ethernet_settings"android:clearTaskOnLaunch="true"android:targetActivity="Settings$EthernetSettingsActivity"android:exported="true"><meta-data android:name="com.android.settings.FRAGMENT_CLASS"android:value="com.android.settings.EthernetSettings" /></activity-alias>

从上面代码可以看到可以使用adb拉起有线网设置界面命令:

am start -n com.android.settings/.Settings\$EthernetSettingsActivity
am start -n com.android.settings/.EthernetSettings //有点bug,不一定能打开

如果无法使用上面命令打开有线网设置,那么设置应用应该就是没有有线网设置界面的。

比如我开发的:MTK和AML方案的原生设置代码就没有有线网设置界面。

4、修改后界面:

没有大改,只显示了ip地址,其实动态获取有线网的情况,网关,dns那些都应该隐藏的。
在这里插入图片描述

后续有时时间再介绍一下有线网修改配置信息最新的api(Android13增加)吧。

三、其他

1、有线网设置界面优化小结

目前是rk方案存在的问题,其实没啥需求可以隐藏这个条目的;

如果要显示ip就按照上面的修改一下吧。

2、Android 拉起开发者设置界面命令和代码实现

有些情况,原生设置是隐藏的或者不想打开原生设置,如何直接拉起开发者选项呢?

是否有命令或者代码可以实现呢?

下面简单介绍一下:

https://blog.csdn.net/wenzhi20102321/article/details/146985730

3、Android13 有线网开关研究

Android13 的api 提供了有线网开关 EthernetManager.setEthernetEnabled(boolean),
Android9 如果要设置有线网开关,需要自己实现。

https://blog.csdn.net/wenzhi20102321/article/details/131871354

4、Android14 Settings应用添加有线网开关条目实现

Android 原生Settings应用没有有线网开关条目;
Tv平台一般是有有线网连接的,如果没有有线网控制条目是不太方便的;

如果要在原生Settings添加有线网开关和显示有线网ip,要如何实现呢?

本文简单实现一下,有需要的可以参考修改:

https://blog.csdn.net/wenzhi20102321/article/details/146536467

5、Android 获取ip地址多种方式介绍

adb shell 的 ifconfig可以获取当前设备网络节点信息;
这些信息使用Android代码也是可以获取的;

Android 获取网络ip有多种方式,有时候某种方式获取失败的情况下;
那么就可以换一种获取方式,所有多学习一下获取网络ip相关信息是有用的。

https://blog.csdn.net/wenzhi20102321/article/details/141673195

http://www.dtcms.com/wzjs/590937.html

相关文章:

  • 洛龙区网站设计建设wordpress充值金币的插件
  • 垂直网站做网站需要哪些费用支出
  • wordpress建站系统视频教程哪里有网站建设联系方式
  • 南宁网络企业网站win7 做网站服务器
  • 网站备案 后期网络架构方案书
  • 哪些作弊网站龙光城业主论坛家在深圳
  • 网站建设 seo模块北京哪家制作网站好
  • 网站制作广建网站一定要备案吗
  • 合肥 做网站的公司网上花店 网站源代码
  • 建网站 企汇网php快速建网站
  • 江西南昌电子商务网站建设公司南京专业做网站的公司
  • 做网站比较便宜各种网站
  • 加强 廉政网站建设二手交易网站开发系统
  • 动图从哪个网站做怎么做qq代刷网站
  • 网站后台管理员扫描廉政网站建设经验交流
  • 网站开发工作室邯郸之战
  • wordpress外贸网站wordpress cookie
  • 农村建设网站溧阳做网站的哪家好
  • 徐州网站建设方案推广wordpress置顶重复
  • 广州一站式网站建设企业运营包括哪些环节
  • 网站建设丿金手指谷哥12招聘网站可以做两份简历吗
  • 网站投入费用网站建设行业怎么样
  • 南昌做网站的流程莱芜建设网站
  • 怎样优化自己的网站网络设置ip地址
  • 为什么网站要备案58同城石家庄网站建设
  • 网站开发项目详细计划友情链接交易
  • 宠物网站建设进度表网络推广策划思路
  • discuz论坛 整合到网站北美跨境电商平台有哪些
  • 做一个自适应网站多少钱陵川网站建设
  • 南京百度网站建设做网站的预算表