【问题标题】:Q: Android Permissions - Changing a Setting via Code possible without Root? [duplicate]问:Android 权限 - 无需 Root 即可通过代码更改设置? [复制]
【发布时间】:2016-06-01 12:33:47
【问题描述】:

感谢您帮助解决我的问题!

问:我正在开发一个具有定时机制的应用程序,需要通过代码更改设置(例如:关闭 WiFi 等).. 这是是否可以通过清单和运行时权限请求为其获取权限,而无需 Root?

我希望我可以通过权限请求简单地做到这一点!否则会浪费几个月的时间:(

提前感谢您的回答!只需要确定。

【问题讨论】:

  • 是的,你可以这样做,但前提是有权限。
  • 通常,更改设置所需的权限不适用于 3rd 方应用程序,并且作为“root”甚至没有直接帮助,尽管它可能使安装应用程序成为可能工厂建造的一部分。但是,给定目标所需的权限取决于目标,并且您可以获得一些权限来执行某些操作。 事实证明,启用/禁用 wifi 是允许的。只有您的问题的特定形式符合 stackoverflow 的意图,因此您的问题减少到唯一的特定形式你给了,wifi。
  • 我想我应该更直接地描述我的意图。我只是以 WiFi 为例,但具体来说,我需要将位置设置切换为关闭。也很容易做到吗?我可以想象访问某人的位置设置可能会被解释为危险,所以我希望我仍然可以使用权限(没有 root)来做到这一点?

标签: android android-studio permissions android-6.0-marshmallow android-permissions


【解决方案1】:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"> 不被认为是危险的,所以你不需要在棉花糖的运行时询问它

你需要做的就是在清单中声明它

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

然后在您的活动中,您可以像这样启用和禁用 wifi

WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
// TO CHECK WEATHER ITS ENABLED OR DISABLED
boolean wifiEnabled = wifiManager.isWifiEnabled()
// TO ENABLE
if(!wifiEnabled) wifiManager.setWifiEnabled(true);  
// TO DISABLE
if(wifiEnabled) wifiManager.setWifiEnabled(false);

希望对你有帮助

【讨论】:

  • 嘿,感谢伟大的回答人。要 100% 具体说明,我实际上需要将位置/GPS 设置更改为关闭。你知道这有什么不同吗? 换句话说,用 locationmanager 代替 wifimanager 的工作方式与您提供的代码相同吗?是否允许将位置设置更改为“关闭”?
  • 那么在问题中你应该要求位置设置而不是wifi,不,你不能未经许可更改位置设置。
  • 抱歉 - 我仅以 Wi-Fi 为例,因为它是主要设置之一,类似于位置。是的,我知道我必须使用权限,我只是想放心,一旦授予权限,我实际上可以轻松完成任务(关闭位置设置),并且不需要 root 或任何太疯狂的东西访问此类设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
相关资源
最近更新 更多