В момента разработвам приложение за удостоверяване, базирано на OpenId Connect и Chrome CustomTabs. По време на потока на удостоверяване потребителят се изпраща до URL адрес за пренасочване и тук срещам някои проблеми.
В моето приложение имам следния филтър за намерения:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="sncfapp" android:host="callbackrurl" />
</intent-filter>
Намерението обаче понякога не работи. Изглежда, че всеки път, когато символът "&" се използва в URL адреса, намерението не се задейства. Получавам ERR_UNKNOWN_URL_SCHEME.
Опитах се да стартирам няколко URL адреса чрез adb (също и с друг приемник) и ето моите резултати:
OK adb shell am start -a android.intent.action.VIEW -d "fitbittester://logincallback"
OK adb shell am start -a android.intent.action.VIEW -d "sncfapp://callbackrurl"
OK adb shell am start -a android.intent.action.VIEW -d "sncfapp://callbackrurl?code=45644546"
НЕ adb shell am start -a android.intent.action.VIEW -d "sncfapp://callbackrurl?code=45644546&scope=test%20"
OK adb shell am start -a android.intent.action.VIEW -d "sncfapp://callbackrurl?scope=test%20"
OK adb shell am start -a android.intent.action.VIEW -d "fitbittester://logincallback?scope=test%20"
НЕ adb shell am start -a android.intent.action.VIEW -d "fitbittester://logincallback?scope=test%20& code=1144"
нормално ли е Знам, че такива намерения трябва да се използват с REST параметри. Въпреки това изглежда странно, че намеренията не се задействат, когато се извика URL с параметри за получаване.