Starting Settings Activity for result

2019-05-03 07:54发布

In my application I'm checking whether the GPS is enabled on the user's device, and if not I would like to send him to the Settings to let him turn it on.

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

After the user closes Settings screen, I would to perform an action right inside the onActivityResult().

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

However, the onActivityResult() doesn't get called. Am I doing something wrong or this approach doesn't work in general? Thanks in advance.

2条回答
虎瘦雄心在
2楼-- · 2019-05-03 08:21

Have you defined ACCESS_FINE_LOCATION permission in your manifest?

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
查看更多
Viruses.
3楼-- · 2019-05-03 08:26

lauch the setting intent :

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

and fetch the current location in onResume method :

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

after backing from setting screen , your onResume method will be call and here you can fetch your location.

查看更多
登录 后发表回答