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

网站建设 兼职 外包北京seo关键词排名优化软件

网站建设 兼职 外包,北京seo关键词排名优化软件,网站怎么做防盗,鞋设计师之家官网Android13 有线变更 以太网相关的功能在Android12 和13 网络部分变化是不大的#xff0c;Android11 到Android 12 网络部分无论是代码存放目录和代码逻辑都是有较多修改的#xff0c;主要包括以下几个部分 限制了设置有线网参数设置接口方法 新增有线网开启关闭接口方法 新…Android13 有线变更 以太网相关的功能在Android12 和13 网络部分变化是不大的Android11 到Android 12 网络部分无论是代码存放目录和代码逻辑都是有较多修改的主要包括以下几个部分 限制了设置有线网参数设置接口方法 新增有线网开启关闭接口方法 新增了 updateConfiguration 接口方法 有线网设置的静态ip和代理信息重启后无效 EthernetManager相关代码从framework移到packages/modules/Connectivity/ (之前目录frameworks\base\core\java\android\net\EthernetManager.java) 后面开发Android12 或新版本代码你会发现wifi 、蓝牙、热点 之前 framework 的源码都移动到了下面的package目录 基于以上变更。如果app api targetSdkVersion设置成Android12 应用用无法用以前的接口设置有线网信息。 限制了设置有线网参数设置接口方法 //packages\modules\Connectivity\framework-t\src\android\net\EthernetManager.java/*** Get Ethernet configuration.* return the Ethernet Configuration, contained in {link IpConfiguration}.* hide*/SystemApi(client MODULE_LIBRARIES)public NonNull IpConfiguration getConfiguration(NonNull String iface) {try {return mService.getConfiguration(iface);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}/*** Set Ethernet configuration.* hide*/SystemApi(client MODULE_LIBRARIES)public void setConfiguration(NonNull String iface, NonNull IpConfiguration config) {try {mService.setConfiguration(iface, config);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}UnsupportedAppUsage(maxTargetSdk Build.VERSION_CODES.R, trackingBug 170729553)public String[] getAvailableInterfaces() {try {return mService.getAvailableInterfaces();} catch (RemoteException e) {throw e.rethrowAsRuntimeException();}} 从上面看主要是api加了限制 maxTargetSdk Build.VERSION_CODES.R //Android11 所以Android 12 或者更新的版本在EthernetManager 是调用不到上面几个接口方法的 新增有线网开启关闭接口方法 //packages\modules\Connectivity\framework-t\src\android\net\EthernetManager.javaRequiresPermission(anyOf {NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,android.Manifest.permission.NETWORK_STACK,android.Manifest.permission.NETWORK_SETTINGS})SystemApi(client MODULE_LIBRARIES)public void setEthernetEnabled(boolean enabled) {try {mService.setEthernetEnabled(enabled);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}} 这个是新增的接口方法 setEthernetEnabled 之前是要自己实现有线网开关的。需要的权限上面已经说明的基本是要系统签名的应用才能调用。 新增了 updateConfiguration 接口方法 //packages\modules\Connectivity\framework-t\src\android\net\EthernetManager.javaSystemApiRequiresPermission(anyOf {NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,android.Manifest.permission.NETWORK_STACK,android.Manifest.permission.MANAGE_ETHERNET_NETWORKS})public void updateConfiguration(NonNull String iface,NonNull EthernetNetworkUpdateRequest request,Nullable CallbackExecutor Executor executor,Nullable OutcomeReceiverString, EthernetNetworkManagementException callback) {Objects.requireNonNull(iface, iface must be non-null);Objects.requireNonNull(request, request must be non-null);final NetworkInterfaceOutcomeReceiver proxy makeNetworkInterfaceOutcomeReceiver(executor, callback);try {mService.updateConfiguration(iface, request, proxy);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}} String iface //节点名称eth0 / eth1 EthernetNetworkUpdateRequest request 对象是包含静态ip和代理信息对象和特征属性对象。 后面两个是回调监听未要求非空是可以传null 的。 另外在有线网服务新api 增加了限制 //packages\modules\Connectivity\service-t\src\com\android\server\ethernet\EthernetServiceImpl.javaOverridepublic void updateConfiguration(NonNull final String iface,NonNull final EthernetNetworkUpdateRequest request,Nullable final INetworkInterfaceOutcomeReceiver listener) {Objects.requireNonNull(iface);Objects.requireNonNull(request);throwIfEthernetNotStarted();// TODO: validate that iface is listed in overlay config_ethernet_interfaces// only automotive devices are allowed to set the NetworkCapabilities using this API//only automotive devices 表明只有 车载设备支持设置该方法// 非车载项目必须注释调方法enforceAdminPermission 否则会报错这里是校验是否是车载项目//enforceAdminPermission(iface, request.getNetworkCapabilities() ! null,// updateConfiguration() with non-null capabilities);Log.i(TAG, lwz add updateConfiguration with: iface iface , listener listener);maybeValidateTestCapabilities(iface, request.getNetworkCapabilities());mTracker.updateConfiguration(iface, request.getIpConfiguration(), request.getNetworkCapabilities(), listener);} 所以要在自己项目中调用新的api 必须设置属性让自己的设备识别为车载项目或者把车载判断的逻辑去除即可 有线网设置的静态ip和代理信息重启后无效 //查看有线网配置信息保存的类 packages\modules\Connectivity\service-t\src\com\android\server\ethernet\EthernetConfigStore.javaprivate static final String CONFIG_FILE ipconfig.txt;private static final String FILE_PATH /misc/ethernet/;private static final String LEGACY_IP_CONFIG_FILE_PATH Environment.getDataDirectory() FILE_PATH;//Android13 新增下面路径private static final String APEX_IP_CONFIG_FILE_PATH ApexEnvironment.getApexEnvironment(TETHERING_MODULE_NAME).getDeviceProtectedDataDir() FILE_PATH; // TETHERING_MODULE_NAME --》com.android.tethering/** 可以看到之前的路径是 /data/misc/ethernet/ipconfig.txt 最新的有线网配置文件保存目录 /data/misc/apexdata/com.android.tethering/misc/ethernet/ipconfig.txt 可能存在因为未成功保存本地配置文件所以每次开机重启后无法读取到静态ip和代理等信息。 所以出现 有线网设置的静态ip和代理信息重启后无效 问题。主要原因为开机读取的时候目录未成功创建故保存未成功。 可以参考如下 *///packages\modules\Connectivity/service-t/src/com/android/server/ethernet/EthernetConfigStore.javaVisibleForTestingvoid read(final String newFilePath, final String oldFilePath, final String filename) {try {synchronized (mSync) {// Attempt to read the IP configuration from apex file path first.if (doesConfigFileExist(newFilePath filename)) {loadConfigFileLocked(newFilePath filename);return;}//ik-phoebe add for create dir data/misc/apexdata/com.android.tethering/misc/ethernetfinal File directory new File(newFilePath);if (!directory.exists()) {boolean mkdirs directory.mkdirs();Log.d(TAG, zmm add for mkdirs: newFilePath ,result: mkdirs);}// If the config file doesnt exist in the apex file path, attempt to read it from// the legacy file path, if config file exists, write the legacy IP configuration to// apex config file path, this should just happen on the first boot. New or updated// config entries are only written to the apex config file later.if (!doesConfigFileExist(oldFilePath filename)) return;loadConfigFileLocked(oldFilePath filename);writeLegacyIpConfigToApexPath(newFilePath, oldFilePath, filename);}} catch (Exception e) {e.printStackTrace();Log.e(TAG, zmm add for read exception: e.getMessage());}}Android13 有线网适配思路 主要是从以下两个方面 1使用新api接口设置静态ip和代理信息 2移除源码中限制接口的版本号 目前我采用的是二但是如果项目需要过gms认证则只能使用一因为gms合入mainline,packages\modules\Connectivity生成的jar会被覆盖。 diff --git a/framework-t/api/module-lib-current.txt b/framework-t/api/module-lib-current.txt index 5a8d47b..177f6c5 100644 --- a/framework-t/api/module-lib-current.txtb/framework-t/api/module-lib-current.txt-44,9 44,11 package android.net {public class EthernetManager {method RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void addEthernetStateListener(NonNull java.util.concurrent.Executor, NonNull java.util.function.IntConsumer);method RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void addInterfaceStateListener(NonNull java.util.concurrent.Executor, NonNull android.net.EthernetManager.InterfaceStateListener);method NonNull public android.net.IpConfiguration getConfiguration(NonNull String);method NonNull RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public java.util.Listjava.lang.String getInterfaceList();method RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void removeEthernetStateListener(NonNull java.util.function.IntConsumer);method public void removeInterfaceStateListener(NonNull android.net.EthernetManager.InterfaceStateListener);method public void setConfiguration(NonNull String, NonNull android.net.IpConfiguration);method RequiresPermission(anyOf{android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void setEthernetEnabled(boolean);method public void setIncludeTestInterfaces(boolean);field public static final int ETHERNET_STATE_DISABLED 0; // 0x0 diff --git a/framework-t/src/android/net/EthernetManager.java b/framework-t/src/android/net/EthernetManager.java index 886d194..9c675fb 100644 --- a/framework-t/src/android/net/EthernetManager.javab/framework-t/src/android/net/EthernetManager.java-191,8 191,8 public class EthernetManager {* return the Ethernet Configuration, contained in {link IpConfiguration}.* hide*/ - UnsupportedAppUsage(maxTargetSdk Build.VERSION_CODES.R, trackingBug 170729553) - public IpConfiguration getConfiguration(String iface) {SystemApi(client MODULE_LIBRARIES)public NonNull IpConfiguration getConfiguration(NonNull String iface) {try {return mService.getConfiguration(iface);} catch (RemoteException e) {-204,7 204,7 public class EthernetManager {* Set Ethernet configuration.* hide*/ - UnsupportedAppUsage(maxTargetSdk Build.VERSION_CODES.R, trackingBug 170729553)SystemApi(client MODULE_LIBRARIES)public void setConfiguration(NonNull String iface, NonNull IpConfiguration config) {try {mService.setConfiguration(iface, config); -- 2.17.1当然最好的还是使用系统提供的更新ip方法 IpConfiguration.Builder build new IpConfiguration.Builder();EthernetNetworkUpdateRequest.Builder requestBuilder new EthernetNetworkUpdateRequest.Builder();build.setHttpProxy(proxyinfo); //如果是静态ip需要创建对应的静态staticIpConfigurationbuild.setStaticIpConfiguration(staticIpConfiguration);requestBuilder.setIpConfiguration(build.build());mEthManager.updateConfiguration(eth0, requestBuilder.build(), null, null);以上为Android13 以太网相关的更新 单曲循环《大悲咒》
http://www.hkea.cn/news/14589008/

相关文章:

  • 建设标准网站网站开发工程师招聘要求
  • 网站域名如何注册湖北响应式网站建设设计
  • wordpress导航对齐修改百度快速优化软件排名
  • 做新闻类网站杭州十大设计公司排名
  • 建设集团和建设公司有什么区别么seo排名优化怎样
  • 两学一做网站专栏怎么设置wordpress页面无法显示
  • 网站推广设计方案目标怎么写设计网站一条龙
  • 商品网站建设实验格式亿码酷网站建设
  • 人脉做的最好的网站为大型企业设计网络营销方案
  • 网站开发项目建设经验广州海珠区邮编
  • 东莞网站设计资讯张家港网络推广
  • 南京网站设计是什么物流公司会计好做吗
  • 怎么做cc网站学院网站建设规划
  • wordpress的标题字怎么变seo这个职位是干什么的
  • 商务厅网站建设意见旅游网站设计总结
  • 建网站主机1.网站建设基本流程是什么
  • 建设网站银行免费流量
  • 17年哪个网站做h5最好如何创建网站
  • 宝安网站制作公司在线界面设计
  • 昌做网站的网站建设公司
  • 小说网站静态页面模板广州网络推广seo
  • 做暧暖网站网站隐私声明模板
  • 全屏网站设计尺寸首页2免费八度电影院
  • 创意个人网站设计惠山网页制作
  • wordpress网站修改域名云服务器怎么样做网站
  • 怎么建设网站挣钱精准营销
  • 如何攻击网站android 开发语言
  • 网站建设推广小王熊掌号期货融网站建设
  • 广州第一网站中山精品网站建设精英
  • 高校校园网站建设培训班世界500强企业招聘网站