我一直在看到不同的帖子,无法以编程方式启用GPS How do I find out if the GPS of an Android device is enabled
但this应用可在禁用时启用GPS。任何人都可以帮助我。
谢谢, Prateek
答案 0 :(得分:3)
不,你不能。但是您可以提示用户启用它。这是代码。
private void buildAlertMessageNoGps() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(
"Your GPS seems to be disabled, do you want to enable it?")
.setCancelable(false).setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(
@SuppressWarnings("unused") final DialogInterface dialog,
@SuppressWarnings("unused") final int id) {
Intent intent = new Intent(
Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
}).setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog,
@SuppressWarnings("unused") final int id) {
dialog.cancel();
}
});
final AlertDialog alert = builder.create();
alert.show();
}
答案 1 :(得分:0)
如果文档说不能以编程方式设置,我建议你不要这样做。文档说的原因有很多。如果有人能够做到这一点(以编程方式启用GPS),则意味着他/她做了一些没有记录的事情。
激活GPS需要用户的许可。如果您的应用程序能够在不通知用户的情况下激活GPS(此外,请求用户许可),则可能违反隐私政策。
答案 2 :(得分:0)
是的,这可以达到2.2(sdk 8)。
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);
}
}