Android-从系统设置导航回应用程序

Android-从系统设置导航回应用程序,android,navigation,settings,system,back,Android,Navigation,Settings,System,Back,在我的登录活动中,我检查用户是否激活/打开了他们的GPS。 如果没有,我只会显示一个警报对话框,要求用户打开GPS Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(settingsIntent); 从AlertDialogI启动/启动意图,如下所示: Intent settingsIntent = new Intent(Settings.ACTION_LOCA

在我的登录活动中,我检查用户是否激活/打开了他们的GPS。 如果没有,我只会显示一个
警报对话框
,要求用户打开GPS

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
AlertDialog
I启动/启动意图,如下所示:

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
当按“系统设置”中的“后退”按钮时,用户将返回手机的主屏幕。。。i、 e“关闭应用程序”

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
我已尝试使用ActivityResult
,但没有效果。
此外,我也读过其他用户遇到的类似问题,但它证明了这一点
没有意义,因为大多数答案都与在ActivityResult上使用
有关

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
有人能解释一下这件事吗

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
编辑: 以下是
警报对话框
的完整代码:

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
builder = new AlertDialog.Builder(this);
builder.setTitle("GPS Not Found");
builder.setMessage("Want To Enable?");

//Dialog - Yes option
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialogInterface, int i)
{
Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(settingsIntent,1);
}
});

//Dialog - No option                
builder.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialogInterface, int i)
{

}
});

//Show he dialog
builder.create().show();
编辑: 以下是
OnPause()
OnResume()
方法。我只需检查提供者是否仍然处于活动状态,并使用
locationManager
。 当我从设置返回时,“测试1”和“测试2”都不会打印

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
@Override
protected void onResume()
{
  Log.i(ERRORTAG, "TEST 1");

  super.onResume();
  if(provider != null)
  {
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, refreshTime, refreshDistance, this);
    gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
  }
}


@Override
protected void onPause()
{
  Log.i(ERRORTAG, "TEST 2");


  super.onPause();
  if(locationManager != null)
  {
    locationManager.removeUpdates((LocationListener) this);
    gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
  }


  if(loginDialog != null)
  {
    loginDialog.dismiss();
  }
}

您正在调用
finish()在您的
startActivity()
之后的某个地方,或者在
onPause()
中?
查看,您会看到在启动设置意图时调用了
onPause()

解决了问题。
Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);
在清单文件中,活动具有标记
noHistory=“true”
,据我所知,该标记不会将其添加到堆栈中。
因此无法“返回”到活动。

能否将整个代码显示到您的
警报对话框
?我怀疑你在那里某处调用了
finish()
。设置应用程序的行为可能因设备制造商而异,因为他们更倾向于修补此应用程序。虽然它通常应该返回给您(AFAIK),但这不是必需的。尽管正如iagreen指出的那样,您开始活动的方式可能会在这方面造成高于平均水平的困难。我在编辑中包括了我的
onPause()
onResume()
方法。代码看起来不错。在模拟器上运行应用程序,确保它不是特定于设备的问题。
Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);