【问题标题】:Cannot open Setting using expo with Linking.openURL('app-settings')无法使用带有 Linking.openURL('app-settings')的 expo 打开设置
【发布时间】:2019-09-03 21:47:48
【问题描述】:

您好,我尝试按照 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


    【解决方案1】:

    我认为你只需要调用函数就可以了。我已经检查了您的代码,它在两个平台上都可以正常工作

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

    同时调用 setState

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

    【讨论】:

    • 您好,感谢您的回复,但是如果我按照您说的做,我将无法在点击时更改状态吗?我可以在单个 onPress 方法上执行多项操作吗?(它会是 openSetting(),但也会说明 Modal 和 openSetting 的状态是否为 true。
    • 嘿,@ElPandario 我更新了我的答案。看看吧。
    • 嘿,非常感谢您的回复我已经更新了我的问题,因为即使我遵循了 react native 文档,我还是有一些不明白的地方。
    【解决方案2】:

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

    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});
      };
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2023-04-07
      • 2022-08-16
      • 2020-01-11
      • 2023-02-18
      • 1970-01-01
      • 2021-05-02
      相关资源
      最近更新 更多