我正在使用管理wifi
个关联的应用,我遇到的问题是android 6.0
当用户关闭位置服务时,wifi
扫描已关闭。< / p>
我想要知道的是,当用户关闭并且location services
时,我可以订阅一个动作。我在android文档中搜索了两个可能的操作,但我不确定使用哪个。
行动是
android.location.PROVIDERS_CHANGED
android.location.MODE_CHANGED
文档没有帮助我。非常感谢
答案 0 :(得分:0)
清单:
<action android:name="android.location.PROVIDERS_CHANGED" />
<receiver android:name=".ObserveGpsState">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
然后......
public class ObserveGpsState extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().matches(LocationManager.PROVIDERS_CHANGED_ACTION)) {
.........
}
}
}
答案 1 :(得分:0)
当用户想要在打开/关闭位置提供
时触发任何操作时,此功能非常有用您应该在清单
中添加此操作<action android:name="android.location.PROVIDERS_CHANGED" />
添加此操作后,您可以触发广播接收器
<receiver android:name=".GpsLocationReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
在您的BroadcastReceiver
课程中,您必须在该课程中实施LocationListener
,如下所示。
public class GpsLocationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
Toast.makeText(context, "in android.location.PROVIDERS_CHANGED",
Toast.LENGTH_SHORT).show();
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if( !locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ) {
//NO GPS
}else{
//Gps is on
}
}
}
}