如何解决android studio 中的 GPS 状态 - API 级别 29
我正在用面向 API 29 设备的 java 中的 android studio 编写一个 android 应用程序。我已经编写了一个 GPSReceiver(它扩展了 BroadcastReceiver),我需要知道 GPS 状态是否已经改变(即添加一个位置侦听器)。
在早期版本的 Android 中,我知道这可以通过
ContentResolver contentResolver = context.getContentResolver();
int state = Settings.Secure.getInt(contentResolver,Settings.Secure.LOCATION_MODE);
Log.i(TAG,"GPS status changed,new state = " + state);
if (state == Settings.Secure.LOCATION_MODE_OFF)
do_smth;
else
do_smth_else;
在 Android 11(API 级别 30)中,下一个代码段似乎适合我。
boolean state = intent.getIntExtra(LocationManager.EXTRA_LOCATION_ENABLED,-1);
if (state)
do_smth;
else
do_smth_else;
但是,我不知道如何在 API 29 中获得这种确切的行为。
解决方法
你可以试试这个代码,它对我有用
public boolean isGPSOn() {
boolean check = false;
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (locationManager != null) {
check = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}
return check;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。