更改Android热点设置

更改Android热点设置,第1张

概述随着API级别26的发布,我的应用程序的核心功能破了,这就是改变了应用程序中用户的热点设置.要获取和设置此配置,我使用WifiManager隐藏的api:getWifiApConfiguration和setWifiApConfiguration中的以下函数.MethodgetWifiApConfiguration=wifiManager.getClass().getMethod("get

随着API级别26的发布,我的应用程序的核心功能破了,这就是改变了应用程序中用户的热点设置.
要获取和设置此配置,我使用WifiManager隐藏的API:getWifiApConfiguration和setWifiApConfiguration中的以下函数.

Method getWifiApConfiguration = wifiManager.getClass().getmethod("getWifiApConfiguration");getWifiApConfiguration.invoke(wifiManager);

这适用于AndroID O之前的设备,但在此版本中我收到以下错误:

App not allowed to read or update stored WiFi Ap config (uID = 10168)

我在清单中声明的​​权限是:

<uses-permission androID:name="androID.permission.WRITE_SETTINGS"/><uses-permission androID:name="androID.permission.CHANGE_NETWORK_STATE"/><uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE"/><uses-permission androID:name="androID.permission.CHANGE_WIFI_STATE"/><uses-permission androID:name="androID.permission.ACCESS_WIFI_STATE"/><uses-permission androID:name="androID.permission.INTERNET"/><uses-permission androID:name="androID.permission.READ_PHONE_STATE"/><uses-permission androID:name="com.Google.androID.gms.permission.ACTIVITY_RECOGNITION"/><uses-permission androID:name="androID.permission.ACCESS_COARSE_LOCATION"/><uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION"/><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE"/><uses-permission androID:name="androID.permission.NETWORK_STACK"/><uses-permission androID:name="androID.permission.TETHER_PRIVILEGED" />

如何使用最新的API执行此 *** 作?

解决方法:

从AndroID Oreo(26)开始,新的权限检查被添加到getWifiApConfiguration()方法的服务实现中:

来自WifiServiceImpl.java的片段

/** * see {@link WifiManager#getWifiApConfiguration()} * @return soft access point configuration * @throws SecurityException if the caller does not have permission to retrIEve the softap * config */@OverrIDepublic WifiConfiguration getWifiApConfiguration() {    enforceAccesspermission();    int uID = Binder.getCallingUID();    // only allow Settings UI to get the saved SoftApConfig    if (!mWifiPermissionsUtil.checkConfigOverrIDePermission(uID)) {        // random apps should not be allowed to read the user specifIEd config        throw new SecurityException("App not allowed to read or update stored WiFi Ap config "                + "(uID = " + uID + ")");    }    mLog.trace("getWifiApConfiguration uID=%").c(uID).flush();    return mWifiStateMachine.syncGetWifiApConfiguration();}

深入研究代码,您将很快发现要成功调用此方法,您的应用程序必须持有androID.permission.OVERRIDE_WIFI_CONfig权限,该权限是系统级别受保护的权限:

框架AndroidManifest.xml的片段

<!-- @SystemAPI @hIDe Allows an application to modify any wifi configuration, even if created by another application. Once reconfigured the original creator cannot make any further modifications. <p>Not for use by third-party applications. --><permission androID:name="androID.permission.OVERRIDE_WIFI_CONfig"    androID:protectionLevel="signature|privileged" />

这意味着您的应用程序需要由平台密钥签名或有权使用此API.

总结

以上是内存溢出为你收集整理的更改Android热点设置全部内容,希望文章能够帮你解决更改Android热点设置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存