对原生地理位置做出反应,而不是在 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 模拟器上询问用户权限的主要内容,如果未能解决你的问题,请参考以下文章

android服务如何对未处理的异常做出反应?

使用 vs 代码对本机 docker 容器做出反应以发布到主机操作系统上的 android 模拟器

对任何崩溃或错误 iOS 做出反应原生白屏

在对 GoogleVisionBarcodes 的原生相机做出反应时检测到无法在 IOS 上运行

无法编译使用Google Services Analytics对本机项目做出反应

反应原生无法从蜂窝网络找到位置