权限Android 未显示在 React Native 应用程序中

Posted

技术标签:

【中文标题】权限Android 未显示在 React Native 应用程序中【英文标题】:PermissionsAndroid is not showing up in React Native app 【发布时间】:2019-03-21 18:37:21 【问题描述】:

所以我更改了地理位置,我现在使用 'react-native-geolocation-service' 的地理位置。所以我现在的问题是不确定我的 Permissionsandroid 代码是否正确,因为没有显示位置对话框的权限。每次我按下“未授予位置权限”按钮时,console.log 中都会显示此按钮,因此这意味着未授予权限。正如我所说,没有显示权限对话框。

如果我的错误在哪里,我希望你们检查我的代码。 这些是我的代码:

hasLocationPermission = () => 
try
  const granted = PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
    
      title: 'Location Permission',
      message: 'You must to accept this to make it work.'
    
  )
  if(granted === PermissionsAndroid.RESULTS.GRANTED)
    console.log('Location permission accepted.')
  else
    console.log("Location permission denied")
  
 catch (err) 
  console.warn(err)



getUserLocationHandler = () => 
if(this.hasLocationPermission)
  Geolocation.getCurrentPosition(
    position => 
      this.setState(
        userLocation: 
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,
          latitudeDelta: 0.0622,
          longitudeDelta: 0.0421,
        ,
      );
    ,
    err => console.log(err),
    
      enableHighAccuracy: true,
      timeout: 15000,
      maximumAge: 10000

    
  );



 render() 
return (
  <View style=styles.container>
    <FetchLocation onGetLocation=this.getUserLocationHandler/>
    <UsersMap userLocation=this.state.userLocation/>
  </View>
);

“FetchLocation”是按钮,“UsersMap”是地图。

如果你们知道如何像 Grab 应用一样在应用打开之前显示权限对话框,那就更好了。谢谢!

如果您想在我的代码或 build.gradles 中查看其他内容,请随时提问。谢谢!

【问题讨论】:

您是否在运行时请求过用户权限? 不。但我的 android manifest.xml 中有“access_fine_location” 当他们点击按钮导航到他们的位置时,权限就会显示出来。 Android 6 及以上版本需要明确请求运行时权限 阅读运行时权限:facebook.github.io/react-native/docs/permissionsandroid 【参考方案1】:

您是否在 AndroidManifest 文件中添加了权限?就像documentation 所说的那样。

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

【讨论】:

【参考方案2】:

您添加的请求权限的用户定义文本:

title: 'Location Permission',
message: 'You must to accept this to make it work.'

不会显示第一个 Permission-Reuquest。但是,如果用户单击“拒绝”并且您再次请求应用中的权限,则会出现您的文本。

我也为此苦苦挣扎,但文档描述了这种行为:

如果用户之前关闭了您提示的权限,操作系统会建议您的应用显示需要该权限的理由。可选的rational 参数将仅在必要时显示对话框提示 - 否则将出现正常的权限提示。

因此,如果您不想通知用户您需要什么权限,您似乎需要在第一个权限请求前使用警报。

如果有人有其他方法,我会很高兴听到。

【讨论】:

您是否也找到了在第一次请求时显示理由的方法?【参考方案3】:

检查您的应用是否已经拥有权限,如果授予权限则不会显示任何弹出窗口

【讨论】:

以上是关于权限Android 未显示在 React Native 应用程序中的主要内容,如果未能解决你的问题,请参考以下文章

权限未在android中显示(相机权限)没有错误

React-native:图像未显示在 android 设备中;但在模拟器中完美显示

Android运行时权限对话框未显示

Android Fragment 未显示在 React Native App 中

仅在 iOS 上没有弹出询问权限,未确定权限,react-native-community/geolocation

OneSignal - Android React Native 中未显示弹出通知