【问题标题】:Starting Settings Activity for result为结果启动设置活动
【发布时间】:2013-02-18 10:26:29
【问题描述】:

在我的应用程序中,我正在检查用户设备上是否启用了 GPS,如果没有,我想将他发送到设置让他打开它。

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, LocationHelper.LOCATION_SETTINGS_REQUEST_CODE);

用户关闭设置屏幕后,我会在onActivityResult() 内执行操作。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == LocationHelper.LOCATION_SETTINGS_REQUEST_CODE) {
        LogUtils.d("onActivityResult from settings");
        fetchCurrentLocation();
    }
}

但是,onActivityResult() 不会被调用。我做错了什么还是这种方法通常不起作用?提前致谢。

【问题讨论】:

    标签: android android-intent android-location


    【解决方案1】:

    启动设置意图:

    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    startActivity(intent);
    

    并在 onResume 方法中获取当前位置:

    public void onResume(){
        super.onResume();
        if(isGPSEnabled){
             fetchCurrentLocation();
    }
    }
    

    从设置屏幕返回后,您的 onResume 方法将被调用,您可以在此处获取您的位置。

    【讨论】:

    • 是的,谢谢,我现在实际上正在使用这种方法,因为我还没有找到更好的解决方案。只是认为有一个更简单的解决方案。
    【解决方案2】:

    您是否在清单中定义了 ACCESS_FINE_LOCATION 权限?

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

    【讨论】:

    • 是的,我有,否则我会得到一个例外。
    • LocationHelper.LOCATION_SETTINGS_REQUEST_CODE 的值是多少?
    • 现在是 16 岁,但这有关系吗?
    • Yes..requestCode 如果>= 0,则活动退出时onActivityResult()中会返回此代码。
    猜你喜欢
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多