Итак, я нажимаю на эту ссылку:
<a href="intent://www.google.com#Intent;scheme=http;action=android.intent.action.VIEW;end">Google</a>
(Я знаю, что это глупый пример, так как это может быть просто http://www.google.com, но это иллюстрирует проблему)
Я определил этот URI из
Log.v(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.google.com")).toUri(
Intent.URI_INTENT_SCHEME));
Я вижу следующее в logcat:
08-02 08:32:34.708 I/ActivityManager( 71): Starting activity: Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=http://www.google.com cmp=com.android.browser/.BrowserActivity }
08-02 08:32:34.748 E/Tab ( 4188): onReceivedError -10 intent://www.google.com#Intent;scheme=http;action=android.intent.action.VIEW;end The protocol is not supported
Вместо перенаправления на www.google.com я получаю страницу «Веб-страница недоступна».
Если я запускаю то же самое намерение, используя двоичный файл am
, он преуспевает.
adb -e shell am start -d http://www.google.com -a android.intent.action.VIEW
Я вижу это в логарифме
08-02 08:47:42.488 I/ActivityManager( 71): Starting activity: Intent { act=android.intent.action.VIEW dat=http://www.google.com flg=0x10000000 cmp=com.android.browser/.BrowserActivity }
Конечная цель состоит в том, чтобы иметь URL-адрес, который запускает определенное действие в приложении (и у кого-то нет возможности попасть на эту страницу, не установив приложение). Я знаю, что также могу определить пользовательскую схему, но, поскольку это глобальное пространство имен, я бы не стал этого делать. Я также знаю, что могу использовать http:// для этой цели, но я не хочу, чтобы пользователю предлагалось открыть URL-адрес в браузере или в моем приложении.
Любые идеи?