如何从弹出的 Expo 项目中删除“android.hardware.location”权限请求?

Posted

技术标签:

【中文标题】如何从弹出的 Expo 项目中删除“android.hardware.location”权限请求?【英文标题】:How to remove "android.hardware.location" permission request from ejected Expo project? 【发布时间】:2020-05-17 05:34:47 【问题描述】:

我有一个 React Native Expo 项目,它开始使用 Expo“托管工作流”。然而,从那以后,我退出了托管工作流程(同时仍在使用一些 expo 模块)。

我遇到的问题是 Expo 似乎向我的 android 应用添加了任意权限请求。 我必须从应用程序中删除此特定权限请求:android.hardware.location

我尝试了很多方法在我的AndroidManifest.xml 文件中删除它,例如:

<uses-permission tools:node="remove" android:name="LOCATION_HARDWARE" />
<uses-permission tools:node="remove" android:name="ACCESS_COARSE_LOCATION" />
<uses-permission tools:node="remove" android:name="ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location" android:required="false" tools:node="remove" />

但最终捆绑的Android应用仍然请求android.hardware.location权限。

如何在捆绑应用之前将其删除?

【问题讨论】:

此问题已通过从 package.json 中删除 expo 依赖关系得到解决。 expo 依赖需要 expo-location,而 expo-location 又请求各种 android 位置权限。 【参考方案1】:

为了排除 expo 自动添加的任何权限,根据 expo documentation,您只需将 tools:node="remove" 添加到您的清单权限元素中。现在,如果您想删除位置权限,这应该可以解决您的问题:

<manifest ... xmlns:tools="http://schemas.android.com/tools">
 ...
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />
 ...
</manifest>

通过添加这些,硬件位置权限也应该消失。 不要忘记将 tools 命名空间添加到清单的根元素中

【讨论】:

【参考方案2】:

此问题已通过从 package.json 中删除 expo 依赖项得到解决。

expo 依赖项需要 expo-location,而 expo-location 又请求各种 android 位置权限。

【讨论】:

以上是关于如何从弹出的 Expo 项目中删除“android.hardware.location”权限请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何从弹出的谷歌地图信息窗口中删除关闭按钮(x)边框?

无法从弹出窗口列表中选择项目 - android

从弹出的视图控制器传递数据

从弹出的 UINavigationController 或 UITabBarController 确定 viewWillAppear

Kivy - 从弹出窗口自动启动方法

如何彻底卸载android studio