如何打开Android上的GPS

我正在开发一个需要激活GPS的Android应用程序。

我在很多论坛读了很多话题,我发现的答案是:

这是不可能的

但是…“Cerberus”APP会打开我的GPS …所以…这是可能的!

谁能帮我这个?

Solutions Collecting From Web of "如何打开Android上的GPS"

不是不可能的,不适合的。 你不能没有他的权力就pipe理用户的电话。

从Play商店:

“当您尝试本地化您的设备时,Cerberus会自动启用GPS (仅适用于Android 2.3.3),并且可以防止未经授权的卸载 – 在应用程序configuration中提供更多信息。”

你可以做这样的事情:

startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 

曾经有一个漏洞,允许GPS没有特殊权限的应用程序打开。 这个漏洞利用已经不存在了(大多数ROMs)。 这是另外一篇文章,

如何在Android上以编程方式启用或禁用GPS?

“启用GPS”是一个安全的设置,所以你必须有WRITE_SECURE_SETTINGS权限。 然而,这是一个受保护的签名权限,所以除非使用制造商的平台证书进行签名,否则您的应用将不会被授予此权限。

正确的事情是发送用户到位置设置页面,并让他们启用GPS,如果他们想。 例如,

 Intent i = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(i); 
  if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.gps_disabled_message) .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } 

这将创build一个提醒,并允许用户转到设置屏幕,并点击返回button来回到您的应用程序。 据我所知,电源插件的function不能超过2.3。

使用此代码// turnGPSON调用setcontentView(xml)

  private void turnGPSOn() { String provider = android.provider.Settings.Secure.getString( getContentResolver(), android.provider.Settings.Secure.LOCATION_PROVIDERS_ALLOWED); if (!provider.contains("gps")) { // if gps is disabled final Intent poke = new Intent(); poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); poke.addCategory(Intent.CATEGORY_ALTERNATIVE); poke.setData(Uri.parse("3")); sendBroadcast(poke); } }** 

你可能想看看这个线程

如何在Android上以编程方式启用或禁用GPS?

这里是从该线程复制的代码

 private void turnGPSOn(){ String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); if(!provider.contains("gps")){ //if gps is disabled final Intent poke = new Intent(); poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); poke.addCategory(Intent.CATEGORY_ALTERNATIVE); poke.setData(Uri.parse("3")); sendBroadcast(poke); } } private void turnGPSOff(){ String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); if(provider.contains("gps")){ //if gps is enabled final Intent poke = new Intent(); poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); poke.addCategory(Intent.CATEGORY_ALTERNATIVE); poke.setData(Uri.parse("3")); sendBroadcast(poke); } } 

但不推荐这个解决scheme,因为它将不会提供给android版本> 2.3假设..检查评论