在AndroidM中:我使用下面的代码删除当前连接的WIFI AP。
void RemoveConnectedNetwork(){
int ID=_wifiManager.getConnectionInfo().getNetworkId();
Log.d("test", "network id = ["+ID+"]");
boolen ret =_wifiManager.removeNetwork(ID);
Log.d("test", "removeNetwork return ="+ret);
_wifiManager.saveConfiguration();
}
但是RemoveConnectedNetwork()
总是返回false。
虽然这个API在以前的版本中运行良好。
使用AndroidM中的任何其他API可以在这个平台上实现任何解决方案?
谢谢。
自AndroidM应用程序开始,不允许修改它们未创建的网络。如果应用程序本身配置了任何网络,则可以从该应用程序中删除该网络。在调用removeNetwork(int)后,从“WifiConfigManager”检查日志,您将得到一个错误,例如UID(应用程序UID)没有删除配置的权限(“wifi SSID”功能)
原因很多,请参阅以下代码和链接以了解更多详细信息。https://android.googlesource.com/platform/frameworks/opt/net/wifi//master/service/java/com/android/server/wifi/wificonfig管理器。JAVA
/**
* Checks if |uid| has permission to modify the provided configuration.
*
* @param config WifiConfiguration object corresponding to the network to be modified.
* @param uid UID of the app requesting the modification.
* @param ignoreLockdown Ignore the configuration lockdown checks for connection attempts.
*/
private boolean canModifyNetwork(WifiConfiguration config, int uid, boolean ignoreLockdown) {
// System internals can always update networks; they're typically only
// making meteredHint or meteredOverride changes
if (uid == Process.SYSTEM_UID) {
return true;
}
// Passpoint configurations are generated and managed by PasspointManager. They can be
// added by either PasspointNetworkEvaluator (for auto connection) or Settings app
// (for manual connection), and need to be removed once the connection is completed.
// Since it is "owned" by us, so always allow us to modify them.
if (config.isPasspoint() && uid == Process.WIFI_UID) {
return true;
}
// EAP-SIM/AKA/AKA' network needs framework to update the anonymous identity provided
// by authenticator back to the WifiConfiguration object.
// Since it is "owned" by us, so always allow us to modify them.
if (config.enterpriseConfig != null
&& uid == Process.WIFI_UID
&& TelephonyUtil.isSimEapMethod(config.enterpriseConfig.getEapMethod())) {
return true;
}
final DevicePolicyManagerInternal dpmi = LocalServices.getService(
DevicePolicyManagerInternal.class);
final boolean isUidDeviceOwner = dpmi != null && dpmi.isActiveAdminWithPolicy(uid,
DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
// If |uid| corresponds to the device owner, allow all modifications.
if (isUidDeviceOwner) {
return true;
}
final boolean isCreator = (config.creatorUid == uid);
// Check if the |uid| holds the |NETWORK_SETTINGS| permission if the caller asks us to
// bypass the lockdown checks.
if (ignoreLockdown) {
return mWifiPermissionsUtil.checkNetworkSettingsPermission(uid);
}
// Check if device has DPM capability. If it has and |dpmi| is still null, then we
// treat this case with suspicion and bail out.
if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)
&& dpmi == null) {
Log.w(TAG, "Error retrieving DPMI service.");
return false;
}
// WiFi config lockdown related logic. At this point we know uid is NOT a Device Owner.
final boolean isConfigEligibleForLockdown = dpmi != null && dpmi.isActiveAdminWithPolicy(
config.creatorUid, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
if (!isConfigEligibleForLockdown) {
return isCreator || mWifiPermissionsUtil.checkNetworkSettingsPermission(uid);
}
final ContentResolver resolver = mContext.getContentResolver();
final boolean isLockdownFeatureEnabled = Settings.Global.getInt(resolver,
Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 0) != 0;
return !isLockdownFeatureEnabled
&& mWifiPermissionsUtil.checkNetworkSettingsPermission(uid);
}
Android 6.0中的Wifi管理器有一些变化。
如果WIFI\u Device\u Owner\u CONFIGS\u LOCKDOWN为非零,则用户不能再修改或删除由活动设备所有者创建的任何Wi-Fi配置。
用户仍然可以创建和修改自己的Wi-Fi配置。
主动设备所有者有权编辑或删除任何Wi-Fi配置,包括非由他们创建的配置。
详情请参考此链接:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
问题内容: 我正在尝试删除路径下的文件 到目前为止,我所做的是: 并且文件仍在其位置(未删除:() 另外,我已在清单文件中授予了权限。 问题答案:
在阅读了其他几个问题/答案后,我仍然在使用wifiManager时遇到问题。重新安排工作。 根据: Android-无法通过编程删除Wifi网络-WifiManager类型中的removeNetwork(int)方法不适用于参数(字符串) 和 如何忘记一个无线网络在Android编程? ...我的代码应该工作: 然而,当我在API 23上测试时,它不起作用。查看代码时,没有任何内容被贬低,代码在A
问题内容: 我在4.4.2上,尝试通过uri删除文件(图像)。这是我的代码: 目前,这些删除功能均未真正删除文件。我的AndroidManifest.xml中也有此代码: 问题答案: 您为什么不使用以下代码对此进行测试: 我认为问题的一部分是您永远不要尝试删除文件,而只是创建一个具有方法调用的变量。 因此,在您的情况下,您可以尝试: 但是我认为这有点过分。 您添加了一条注释,说明您正在使用外部目录
我想以编程方式删除(重置)已在XML布局中设置的ImageView色调。
有没有办法在不使用REST操作的情况下从Eureka服务器中删除注册实例?哪个是包含所有应用程序的数据结构? (很明显,我想删除他们在Eureka服务器中编写代码)。
用EraseMode属性适合于画面变化最小的简单图的长序列。这里有一个例子放映模拟的布朗运动。指定点的数目,例如 n = 20 以及温度或速度,例如 s = .02 这两个参数的最佳值决定于你的计算机的速度。生成n个随机点,其(x,y)坐标介乎-1/2和+1/2。 x = rand(n,1)-0.5; y = rand(n,1)-0.5; 在边界为-1和1的正方形作出各点。保存点的向量的句柄