如果以编程方式在android中更改系统设置,如何触发?

时间:2014-01-06 14:43:55

标签: android gps

我的应用需要根据内部计算的某个时间间隔查找当前位置。每次都会有所不同。在当前位置检查期间,如果互联网和GPS均已关闭,则应向用户显示警报并将用户带到“设置”页面。一旦用户打开GPS,它应该再次调用检查当前位置方法。 但有没有办法让我们触发用户在被带到设置页面后实际打开GPS?

2 个答案:

答案 0 :(得分:0)

LocationListener中,onProviderDisabledonProviderEnabled可以做你想做的事。

答案 1 :(得分:0)

我最近不得不做这个完全相同的任务(当用户将其LOCATION设置设置为ON时回复一些代码)并且我让它工作得非常好(虽然方式与上面其他用户的答案不同) - 尽管他们的方法也可以工作..但是大致基于我的方法,在你的情况下,我只需使用BroadcastListener在你的Java代码中动态注册Intent(需要时)。请记住,您需要使用以下内容通过permission文件注册相应的Manifest.xml

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

并且(假设您已经以这种或那种方式注册了BroadcastReceiver),这些行中的某些内容将被放置在您的接收器中:

// START OF onReceive METHOD FOR RECEIVER
@Override
public void onReceive(Context context, Intent intent) {

    boolean isGpsEnabled;
    boolean isNetworkEnabled;

    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);



    // PRIMARY RECEIVER RESPONSE (FOR "PROVIDERS_CHANGED" INTENT-FILTER)
    if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {

        Toast.makeText(context, "GPS Enabled: " + isGpsEnabled + " NetworkLocation Enabled: " + isNetworkEnabled, Toast.LENGTH_LONG).show();

        // START ANOTHER ACTIVITY WHEN GPS IS ENABLED IF YOU WANT
        if (isGpsEnabled) {

            Intent startNextActivity = new Intent(context, YourNextActivity.class);

            // THIS IS NEEDED IF CALLING ACTIVITY FROM OUTSIDE ACTIVITY
            startNextActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            context.startActivity(startNextActivity);

        }

    }

}



希望这会帮助你! 祝福,编码愉快!