无法使用带有Linking.openURL('app-settings')的expo打开设置

问题描述 投票:0回答:2

您好我尝试按照youtube上的教程,了解如果用户未启用位置服务,如何让应用程序打开位置设置。然而,在他的电脑上,它正在工作(他正在使用Android模拟器)我的Iphone XS(我相信在最新的IOS版本上工作)没有做任何事情。

我试图在互联网上打开设置甚至链接,但它不起作用

openSetting = () => {
    if(Platform.OS=='ios'){
      Linking.openURL('app-settings:')
    }
    else{
      IntentLauncherAndroid.startActivityAsync(
        IntentLauncherAndroid.ACTION_LOCATION_SOURCE_SETTINGS
      );
    }
    this.setState({openSetting:false});

  }
<Button onPress={() => this.setState({isLocationModalVisible:false, openSetting:true})}
          title ="Enable Location Services"/>
javascript react-native settings
2个回答
0
投票

我想你只需要调用它的功能。我检查了你的代码,它在两个平台上都运行良好

<Button onPress={() => this.openSetting()} title ="Enable Location Services"/>

同时调用setState

<Button onPress={() => {this.openSetting();
        this.setState({isLocationModalVisible:false, openSetting:true})}}

0
投票

哦,是的,现在工作得很好,非常感谢!但是我现在还有另外一个问题,当我去设置切换位置权限从永远不会永远,我回到应用程序它告诉我“经验需要权限”,即使我说允许屏幕不更新的位置它一直显示我的错误消息的信息是“访问位置的权限被拒绝” 我添加了Appstate我设置了appState:AppState.currentState(我基本上遵循了本机文档的反应)

appState: AppState.currentState
handleAppStateChange = nextAppState => {
    if(this.state.appState.match(/inactive|background/) && nextAppState === 'active'){
      console.log('App has come to the foreground');
      this._getLocationAsync();
    }
    this.setState({appState : nextAppState});
  };

它看起来像我得到的位置,因为如果我刷新应用程序它显示我的位置coords但我必须刷新它。它不会自动更改。但是现在,如果我将位置从始终切换回从不会自动更新到权限,并再次显示模式。

© www.soinside.com 2019 - 2024. All rights reserved.