我的应用需要根据内部计算的某个时间间隔查找当前位置。每次都会有所不同。在当前位置检查期间,如果互联网和GPS均已关闭,则应向用户显示警报并将用户带到“设置”页面。一旦用户打开GPS,它应该再次调用检查当前位置方法。 但有没有办法让我们触发用户在被带到设置页面后实际打开GPS?
答案 0 :(得分:0)
在LocationListener
中,onProviderDisabled
和onProviderEnabled
可以做你想做的事。
答案 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);
}
}
}
希望这会帮助你!
祝福,编码愉快!