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

时间:2013-01-14 15:52:26

标签: android navigation settings system back

在我的登录活动中,我检查用户是否已激活/开启其GPS。 如果没有,我只需显示AlertDialog,要求用户打开GPS。

从我AlertDialog启动/启动意图如下:

Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);

当按下系统设置中的后退按钮时,用户返回到手机的主屏幕...即“关闭应用程序”。

我试过onActivityResult但无济于事。 此外,我已经阅读了其他用户遇到的类似问题,但它证明了这一点 毫无意义,因为大多数答案都与使用onActivityResult有关。

有人可以对此事发表一些看法吗?

修改 以下是AlertDialog的完整代码:

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相同。 当我从“设置”返回时,“TEST 1”和“TEST 2”都没有打印出来。

@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();
  }
}

2 个答案:

答案 0 :(得分:0)

您是在finish();之后还是startActivity()之后的某个地方打电话给onPause()? 查看Activity Life Cycle,您会看到在启动“设置 - 意图”时调用onPause()

答案 1 :(得分:0)

排除问题。 在清单文件中,活动具有标记noHistory="true"(我的理解)不会将其添加到堆栈中。 因此不能“回”到活动。