首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用-使用java代码禁用android API 6及更低版本的Wifi hotspot和tethering

启用-使用java代码禁用android API 6及更低版本的Wifi hotspot和tethering
EN

Stack Overflow用户
提问于 2018-11-13 17:33:32
回答 1查看 367关注 0票数 0

我尝试了许多代码,所以没有找到解决方案来改变wifi热点status.can谁给我的示例代码,只是打开和关闭wifi热点?

EN

回答 1

Stack Overflow用户

发布于 2019-08-06 08:52:09

对于API<26,Android SDK中没有公共接口。但是如果你愿意,你可以使用反射。

代码语言:javascript
复制
 public boolean setWifiEnabled(WifiConfiguration wifiConfig, boolean enabled) { 
 WifiManager wifiManager;
try {   
  if (enabled) { //disables wifi hotspot if it's already enabled    
    wifiManager.setWifiEnabled(false);  
  } 

   Method method = wifiManager.getClass()   
      .getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);   
  return (Boolean) method.invoke(wifiManager, wifiConfig, enabled); 
} catch (Exception e) { 
  Log.e(this.getClass().toString(), "", e); 
  return false; 
}   
}

但您需要WRITE_SYSTEM_SETTINGS权限。在manifest.xml中声明它

代码语言:javascript
复制
  <uses-permission  
      android:name="android.permission.WRITE_SETTINGS"  
      tools:ignore="ProtectedPermissions"/>

请求运行时的权限。

代码语言:javascript
复制
 private boolean showWritePermissionSettings() {    
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M  
    && Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { 
  if (!Settings.System.canWrite(this)) {    
    Log.v("DANG", " " + !Settings.System.canWrite(this));   
    Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS); 
    intent.setData(Uri.parse("package:" + this.getPackageName()));  
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    this.startActivity(intent); 
    return false;   
  } 
}   
return true; //Permission already given 
}

对于API>=26,您可以实现此solution

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53277856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档