Я ищу способ проверить, могу ли я открыть определенное намерение. Я знаю, как проверить, доступно ли действие, например в этом примере . Однако этого недостаточно, поскольку действие вроде Intent.ACTION_VIEW может открывать различные приложения в зависимости от представленного URI.
Точка в случае:
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url);
startActivity(i);
Откроется другое приложение для разных URL, например:
url = "ftp://192.168.1.1"
url = "http://192.168.1.1"
URL-адрес http довольно безопасен: он открывается в веб-браузере по умолчанию. URL-адрес ftp не так, так как он не уверен, что у пользователей установлен клиент ftp (в моем случае я принимаю AndFTP в качестве клиента, так как он кажется одним из самых популярных клиентов, и стандартного способа отправки / pw клиенту, так что это должно быть специфично для приложения).
Так что теперь я хотел бы проверить не только, доступно ли действие (связанный код вернет true, если http доступен, но ftp нет), но также и существует ли приложение, которое может обрабатывать определенное разнообразие. Тестирование для конкретного приложения также будет приемлемым.
И, наконец, это должно быть включено в фрагмент кода, который выбирает один или несколько URI на выбор, который должен открывать первый возможный код и возвращать код ошибки, если URI не могут быть открыты. Примерно такой псевдокод:
success = false;
for (Uri uri : uris) {
if (actionAvailable(uri)) {
// set up intent
startActivity(intent);
success = true;
break;
}
}
return success;