Включить-отключить точку доступа Wi-Fi и модем для Android API 6 и менее, используя Java-код - PullRequest
0 голосов
/ 13 ноября 2018

Я перепробовал много кодов, поэтому не найдено решение для изменения статуса точки доступа Wi-Fi. Кто-нибудь может дать пример кода, чтобы просто включить или выключить точку доступа Wi-Fi?

1 Ответ

0 голосов
/ 06 августа 2019

Для API <26 в Android SDK нет общедоступного API. Но вы можете использовать отражение, если хотите. </p>

 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

  <uses-permission  
      android:name="android.permission.WRITE_SETTINGS"  
      tools:ignore="ProtectedPermissions"/>

Запрос разрешения во время выполнения.

 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 вы можете реализовать это решение .

...