如何从弹出的 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”权限请求?的主要内容,如果未能解决你的问题,请参考以下文章
从弹出的 UINavigationController 或 UITabBarController 确定 viewWillAppear