Пользовательская схема URI Android неправильно закодирована при вводе в браузере - PullRequest
2 голосов
/ 11 декабря 2011

Я пишу свое приложение для Android, в котором я хочу определить пользовательскую схему URI, чтобы пользователь мог перейти к моему приложению, введя URI в браузере, например: myapps: // cate = 1 & id = 3

Я успешно реализовал это в своих приложениях, но обнаружил, что для некоторых устройств браузер обрабатывает ссылку по-разному.

В моем HTC Flyer приложение открывается правильно, но в браузере Samsung Galaxy Aceпереводит ссылку на myapps% 3A% 2F% 2Fcate = 1% 26id = 3, которая зашифрована, и вместо этого просто откройте для меня «myapps: // cate = 1 & id = 3», а не откройте приложение.

Я определяю фильтр намерений в манифесте следующим образом:

<intent-filter >
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="myapps"/>
</intent-filter>

Любая помощь по этому вопросу?спасибо

РЕДАКТИРОВАНИЕ

Я только что посмотрел исходный код браузера Android, он определил, какую схему он принимает:

protected static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile(
    "(?i)" + // switch on case insensitive matching
    "(" +    // begin group for schema
    "(?:http|https|file):\\/\\/" +
    "|(?:inline|data|about|content|javascript):" +
    ")" +
    "(.*)" );

Теперь я понимаюпочему нестандартная схема не сработает!Любые приложения должны фиксировать только схемы: http, https, файл, inline, данные, about, content, javascript.

1 Ответ

0 голосов
/ 11 декабря 2011

Почему это должен быть пользовательский URI?

Я бы попробовал его со стандартным URL, а затем определил для него широковещательный приемник.

По сути, я думаю, что именно так http://youtube.com или http://maps.google.com работают. Просто попробуйте ввести эти два URL-адреса в браузере Android вашего Galaxy Ace.

...