GPS 服务检查,检查设备上的 GPS 是启用还是禁用
GPS Service Check, to check whether GPS is enabled or disabled on a device
我使用了 Stack Overflow 中的以下代码来检查设备上的 GPS 是启用还是禁用
public static boolean isLocationEnabled(Context context) {
int locationMode = 0;
String locationProviders;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
try {
locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
return locationMode != Settings.Secure.LOCATION_MODE_OFF;
} else {
locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
return !TextUtils.isEmpty(locationProviders);
}
}
它在我的设备 (Huawei G610) 上运行良好,没有任何问题。然后我把应用程序给了一个使用三星 Galaxy Note 的朋友,他说它不会通知是否未启用 GPS 服务。
此函数用于在 GPS 未启用时触发警告对话框以要求用户启用它。
我不知道为什么它不能在他的设备上运行,非常感谢您的帮助。我问的是它不能在某些设备上工作而在某些设备上工作的原因。
谢谢。
您可以使用以下代码检查位置是否已启用。我会在所有设备上工作
LocationManager location_manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
LocationListener listner = new MyLocationListener();
boolean networkLocationEnabled = location_manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
boolean gpsLocationEnabled = location_manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (networkLocationEnabled || gpsLocationEnabled) {
if (location_manager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER) && networkLocationEnabled) {
location_manager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 2000, 2000, listner);
location_manager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} else if (location_manager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && gpsLocationEnabled) {
location_manager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 2000, 2000, listner);
location_manager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
试试这个。
私人位置管理器 lm;
lm = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
你的清单文件应该设置权限
您需要的主要权限是 android.permission.ACCESS_COARSE_LOCATION 或 android.permission.ACCESS_FINE_LOCATION
我使用了 Stack Overflow 中的以下代码来检查设备上的 GPS 是启用还是禁用
public static boolean isLocationEnabled(Context context) {
int locationMode = 0;
String locationProviders;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
try {
locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
return locationMode != Settings.Secure.LOCATION_MODE_OFF;
} else {
locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
return !TextUtils.isEmpty(locationProviders);
}
}
它在我的设备 (Huawei G610) 上运行良好,没有任何问题。然后我把应用程序给了一个使用三星 Galaxy Note 的朋友,他说它不会通知是否未启用 GPS 服务。
此函数用于在 GPS 未启用时触发警告对话框以要求用户启用它。
我不知道为什么它不能在他的设备上运行,非常感谢您的帮助。我问的是它不能在某些设备上工作而在某些设备上工作的原因。
谢谢。
您可以使用以下代码检查位置是否已启用。我会在所有设备上工作
LocationManager location_manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
LocationListener listner = new MyLocationListener();
boolean networkLocationEnabled = location_manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
boolean gpsLocationEnabled = location_manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (networkLocationEnabled || gpsLocationEnabled) {
if (location_manager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER) && networkLocationEnabled) {
location_manager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 2000, 2000, listner);
location_manager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} else if (location_manager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && gpsLocationEnabled) {
location_manager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 2000, 2000, listner);
location_manager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
试试这个。
私人位置管理器 lm;
lm = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
你的清单文件应该设置权限 您需要的主要权限是 android.permission.ACCESS_COARSE_LOCATION 或 android.permission.ACCESS_FINE_LOCATION