Java 如何在我的应用程序中启用网络和gps定位?

Java 如何在我的应用程序中启用网络和gps定位?,java,android,gps,geolocation,android-location,Java,Android,Gps,Geolocation,Android Location,我正在尝试获取用户的位置: //获取GPS状态 isGPSEnabled = locationManage.isProviderEnabled(LocationManager.GPS_PROVIDER); // getting network status isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

我正在尝试获取用户的位置:

//获取GPS状态

isGPSEnabled = locationManage.isProviderEnabled(LocationManager.GPS_PROVIDER);

        // getting network status
        isNetworkEnabled = locationManager
                .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!isGPSEnabled && !isNetworkEnabled) {
            // no network provider is enabled
            Log.e(MyLogger.TAG, "Non providers are enabled");
我需要用户设置
启用网络位置
打开GPS

如何帮助用户完成这些选项中的每一项

  • 打开“设备设置”页面,然后按“我的活动”

  • 是否仅在我的应用程序中更改这两个设备设置


  • 这意味着打开一个确认对话框来启用这两个设置。

    startActivityForResult(新意图(android.provider.settings.ACTION\u LOCATION\u SOURCE\u settings),0)

    在4.1之后,在代码中更改这些设置是不可能的(它们可能是打开设置的一种变通方法,因为如果出现错误,但在4.3或4.4上不起作用,或者您需要根手机,您可以向用户显示一个对话框以转到设置以启用GPS

    public static void LocationAlertDialog(final Context context) {
    
        AlertDialog.Builder d = new AlertDialog.Builder(context);
        d.setTitle("No Providers");
        d.setMessage("Unfortunately, you don't have any providers to get your location, would you like to turn on your GPS?");
    
        d.setNegativeButton(context.getResources().getString(R.string.dialogCancel), new OnClickListener() {
    
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            }
        });
    
        d.setPositiveButton(context.getResources().getString(R.string.dialogAccept), new OnClickListener() {
    
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                context.startActivityForResult(i, 0);
            }
        });
    
        d.show();
    }
    
    调用中的上一个函数

    if (!isGPSEnabled && !isNetworkEnabled) {
            LocationAlertDialog(this);
            Log.e(MyLogger.TAG, "Non providers are enabled");
    

    然后,在您的
    onActivityResult
    中,您可以使用最新的位置api检查代码0是否已打开GPS

    ,您可以通过应用程序内的设置对话框提示用户动态更改位置设置


    我可以仅在我的应用程序内更改这两个设备设置吗?它将更改所有已安装的应用程序,您不能仅更改一个应用程序的位置配置否,我的意思是,我如何更改所有已安装应用程序的全局设置,但只能在我的应用程序内更改(静默),而无需将用户带到e设置页面使用我编写的代码,它会将您带到位置设置页面,并在更改后返回应用程序,然后所有应用程序的位置设置都会更改。如果您想创建自己的位置配置视图(不使用默认的android)我不认为你能做到这一点,也许有办法要求超级用户的许可,但我不知道很久以前这种方法是用于gps的,但这是一个错误尝试这个链接:,