如果android中的系统设置以编程方式更改,如何触发?
我的应用程序需要根据内部计算的某个时间间隔查找当前位置。每次都会有所不同。在当前位置检查期间,如果Internet和GPS都关闭,则应向用户显示警报,并将用户带到设置页面。一旦用户打开GPS,它应该再次调用检查当前位置方法。如果android中的系统设置以编程方式更改,如何触发?,android,gps,Android,Gps,我的应用程序需要根据内部计算的某个时间间隔查找当前位置。每次都会有所不同。在当前位置检查期间,如果Internet和GPS都关闭,则应向用户显示警报,并将用户带到设置页面。一旦用户打开GPS,它应该再次调用检查当前位置方法。 但是,我们有没有办法触发用户在进入设置页面后实际打开了GPS 你有,哪些应该做你想做的。我最近不得不做完全相同的任务(当用户打开他们的位置设置时,用一些代码响应),我让它工作得很好(尽管与上面其他用户回答的方式不同)——尽管他们的方法也可以工作。。但大致根据我的方法,在您的
但是,我们有没有办法触发用户在进入设置页面后实际打开了GPS 你有,哪些应该做你想做的。我最近不得不做完全相同的任务(当用户打开他们的位置设置时,用一些代码响应),我让它工作得很好(尽管与上面其他用户回答的方式不同)——尽管他们的方法也可以工作。。但大致根据我的方法,在您的情况下,我只需在Java代码中使用
Intent
动态注册BroadcastListener
。请记住,您需要通过Manifest.xml
文件注册相应的权限,例如:
并且(假设您已经以这样或那样的方式注册了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);
}
}
}