在我的登录活动中,我检查用户是否已激活/开启其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();
}
}
答案 0 :(得分:0)
您是在finish();
之后还是startActivity()
之后的某个地方打电话给onPause()
?
查看Activity Life Cycle,您会看到在启动“设置 - 意图”时调用onPause()
。
答案 1 :(得分:0)
排除问题。
在清单文件中,活动具有标记noHistory="true"
(我的理解)不会将其添加到堆栈中。
因此不能“回”到活动。