Проверьте, доступно ли ури-ури
У меня есть приложение, которое иногда ссылается на imdb. Я могу сделать это с помощью http://m.imdb.com/find
или если он доступен imdb:///find
. Моя проблема заключается в том, что я не могу найти способ проверить, доступен ли imdb://
, пока не стало слишком поздно.
Поскольку ссылка нажата пользователем, я не могу поймать исключение android.content.ActivityNotFoundException
.
Я пропустил что-то очевидное?
Решение:
По предложению inazaruk я теперь использую следующий код:
public static boolean isUriAvailable(Context context, String uri) {
Intent test = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
return context.getPackageManager().resolveActivity(test, 0) != null;
}
Метод должен быть вызван с прямым uri к тому, что вы запрашиваете, например imdb:///find
, а не только imdb://
.
Ответы
Ответ 1
Вы можете использовать resolveActivity()
, чтобы определить, есть ли в системе система Activity
, способная обрабатывать ваши намерения. Конечно, вам нужно создать намерение, которое имитирует щелчок "uri". Это можно сделать с помощью Intent.setData()
, хотя я сам не тестировал/не проверял.
Ответ 2
После меня работали:
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri uri = Uri.parse("imdb:///title/tt1457767/");
intent.setData(uri);
this.getActivity().startActivity(intent);
Вы можете заменить String в Uri.parse("");
на любое из следующих действий:
imdb:///name/<nameID>
imdb:///find?q=<search_query>
imdb:///title/<titleID>
imdb:///boxoffice
imdb:///name/<nameID>
imdb:///find?q=toystory