在支持Android Cupcake(1.5)的设备上,如何检查和激活GPS?
当前回答
如果用户允许在其设置中使用GPS,则将使用GPS。
你不能再显式地打开它,但你不必这样做——这是一个隐私设置,所以你不想调整它。如果用户同意应用程序获得精确的坐标,它就会被打开。然后,如果可以的话,位置管理器API将使用GPS。
如果你的应用在没有GPS的情况下真的没有用处,而且它是关闭的,你可以在右边的屏幕上打开设置应用,这样用户就可以启用它。
其他回答
Kotlin解决方案:
private fun locationEnabled() : Boolean {
val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
}
以下是步骤:
步骤1:创建在后台运行的服务。
步骤2:在Manifest文件中也需要以下权限:
android.permission.ACCESS_FINE_LOCATION
步骤3:编写代码:
final LocationManager manager = (LocationManager)context.getSystemService (Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) )
Toast.makeText(context, "GPS is disabled!", Toast.LENGTH_LONG).show();
else
Toast.makeText(context, "GPS is enabled!", Toast.LENGTH_LONG).show();
第四步:或者你可以简单地使用:
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
步骤5:持续运行服务以监控连接。
下面是在我的情况下工作的片段
final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
buildAlertMessageNoGps();
}
`
在Kotlin:如何检查GPS是否启用
val manager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
checkGPSEnable()
}
private fun checkGPSEnable() {
val dialogBuilder = AlertDialog.Builder(this)
dialogBuilder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
.setCancelable(false)
.setPositiveButton("Yes", DialogInterface.OnClickListener { dialog, id
->
startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS))
})
.setNegativeButton("No", DialogInterface.OnClickListener { dialog, id ->
dialog.cancel()
})
val alert = dialogBuilder.create()
alert.show()
}
在LocationListener中,实现onProviderEnabled和onProviderDisabled事件处理程序。当你调用requestLocationUpdates(…)时,如果手机上的GPS是禁用的,onProviderDisabled将被调用;如果用户启用GPS, onProviderEnabled将被调用。
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件