Android-从系统设置导航回应用程序
在我的登录活动中,我检查用户是否激活/打开了他们的GPS。 如果没有,我只会显示一个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
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);