Сначала вам нужно теперь, чтобы вы могли использовать неявное намерение, документация по Android предоставляет нам очень подробные общие намерения для реализации намерения карты, вам необходимо создать новое намерение с двумя параметрами
Для действия мы можем использовать Intent.ACTION_VIEW
, а для Ури мы должны построить его, ниже я приложил пример кода для создания, сборки, начать деятельность.
String addressString = "1600 Amphitheatre Parkway, CA";
/*
Build the uri
*/
Uri.Builder builder = new Uri.Builder();
builder.scheme("geo")
.path("0,0")
.query(addressString);
Uri addressUri = builder.build();
/*
Intent to open the map
*/
Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);
/*
verify if the devise can launch the map intent
*/
if (intent.resolveActivity(getPackageManager()) != null) {
/*
launch the intent
*/
startActivity(intent);
}
Если я правильно помню, Response.Redirect ()
выдает исключение для прерывания текущего запроса ( ThreadAbortedException
или что-то в этом роде). Таким образом, вы можете поймать это исключение.
Изменить:
Эта статья базы знаний описывает это поведение (также для Request.End ()
и Server.Transfer ()
методы).
Для Response.Redirect ()
существует перегрузка:
Response.Redirect(String url, bool endResponse)
Если вы передадите endResponse = false
, то исключение не будет (но среда выполнения продолжит обработку текущего запроса.)
Если endResponse = true
(или если используется другая перегрузка), создается исключение, и текущий запрос будет немедленно завершен.
Как указывает Мартин, Response.Redirect вызывает исключение ThreadAbortException. Решение состоит в том, чтобы повторно выбросить исключение:
try
{
Response.Redirect(...);
}
catch(ThreadAbortException)
{
throw; // EDIT: apparently this is not required :-)
}
catch(Exception e)
{
// Catch other exceptions
}
Мартин прав, при использовании Response.Redirect возникает исключение ThreadAbortException, см. Статью kb здесь
Возможно, вы ссылались на переменную, которая объявлена внутри блока try.
Например, приведенный ниже код недействителен:
try
{
var b = bool.Parse("Yeah!");
}
catch (Exception ex)
{
if (b)
{
Response.Redirect("somewhere else");
}
}
Вы должны переместить объявление b за пределы блок try-catch.
var b = false;
try
{
b = bool.Parse("Yeah!");
}
catch (Exception ex)
{
if (b)
{
Response.Redirect("somewhere else");
}
}
Я не думаю, что здесь есть какая-то известная проблема.
Вы просто не можете выполнить Redirect () внутри блока try / catch, потому что Redirect оставляет текущий элемент управления другому .aspx (например), что оставляет уловку в воздухе (не может вернуться к ней) .
РЕДАКТИРОВАТЬ: С другой стороны, я мог бы все это вычислить наоборот. Извините.