对原生地理位置做出反应,而不是在 android 模拟器上询问用户权限
Posted
技术标签:
【中文标题】对原生地理位置做出反应,而不是在 android 模拟器上询问用户权限【英文标题】:react native geolocation not asking user permission on android emulator 【发布时间】:2019-01-14 02:12:26 【问题描述】:您好,我使用以下代码成功获取用户位置,但在 android 模拟器中,它不会询问用户是否要分享他们的位置(即使在我重新安装应用程序之后)。
代码很好用……但我真的希望出现标准警报,上面写着“你确定要与应用分享你的位置吗”
任何指导将不胜感激
navigator.geolocation.getCurrentPosition(
(pos) =>
console.log(pos.coords.longitude, pos.coords.latitude);
【问题讨论】:
【参考方案1】:我认为如果您重新安装应用程序,位置权限不会再次显示,因为手机仍然记得为应用程序授予的权限。您可以在 Android Setting with App (https://www.howtogeek.com/230683/how-to-manage-app-permissions-on-android-6.0/) 中检查应用是否已授予权限。
也许这段代码可以帮助你
import PermissionsAndroid from 'react-native';
async function getLocation()
try
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
'title': 'App',
'message': 'are you sure you want to share your location with the app ?'
)
if (granted === PermissionsAndroid.RESULTS.GRANTED)
// permission granted
// do code get location here.
navigator.geolocation.getCurrentPosition(
(pos) =>
console.log(pos.coords.longitude, pos.coords.latitude);
)
else
// permission denied
console.log("GPS permission denied")
catch (err)
console.warn(err)
【讨论】:
您可以进入应用程序设置来重置位置偏好....不需要重新安装应用程序。上面的代码也没有帮助,因为(a)出现的弹出窗口不能(容易)被用户关闭,因为它没有所需的按钮(中性/否定/肯定)和(b)无论用户从请求方法中选择什么一旦他们点击 navigator.geolocation,他们将被再次询问。很奇怪。无论如何感谢您的意见以上是关于对原生地理位置做出反应,而不是在 android 模拟器上询问用户权限的主要内容,如果未能解决你的问题,请参考以下文章
使用 vs 代码对本机 docker 容器做出反应以发布到主机操作系统上的 android 模拟器
在对 GoogleVisionBarcodes 的原生相机做出反应时检测到无法在 IOS 上运行