今天调试一个荣耀平板闪退,结果发现设备没有GPS定位芯片,导致闪退。研究一番,可通过以下代码检测设备是否有GPS硬件模块:
public boolean hasGPSDevice(Context context)
{
final LocationManager mgr = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
if ( mgr == null )
return false;
final List<String> providers = mgr.getAllProviders();
if ( providers == null )
return false;
return providers.contains(LocationManager.GPS_PROVIDER);
}
在非华为设备中以下代码也可以,但是华为的鸿蒙系统中就不行:
if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
MyLog.e("错误:", "设备缺少GPS模块!");
}