Sto riscontrando problemi con gli URI di intento su un particolare dispositivo, quindi ho provato l'esempio di CommonsWare URLHandler come suggerito qui: Launching my app using the intent URI e anche il collegamento ipertestuale URI di intento nella sua pagina di esempio non riesce a richiamare l'applicazione. L'esempio dichiara il suo intento-filtro in questo modo:URI di intento standard interrotto?
<intent-filter>
<action android:name="com.commonsware.android.MY_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
E il collegamento ipertestuale nella pagina di esempio web è:
<a href="intent:#Intent;action=com.commonsware.android.MY_ACTION;end">Link back to URLHandler via intent: URL</a>
Questo funziona sulla maggior parte dei dispositivi, ma non sul HTC Amaze 4G, Android in esecuzione 4.0.3. Quando tocchi il link, Il logcat restituisce:
I/PRIME(9029): <CallBackProxy> Send to WebViewClient.
I/PRIME(9029): <Browser> Send to HtcLinkifyDispatcher
I/ActivityManager(262): START intent from pid 9029
D/MP-Decision(891): Aggress decision engine: Off
D/MP-Decision(891): Switch back to normal parameters:
Nw=2.700000, Tw=180, Ns=2.100000, Ts=270, Decision_ms=100, Poll_ms=10
V/NfcService(600): setForegroundNdefPush msg = null callback = null
D/HtcTelephony(561): requestSetFastDormancy: module=0 mode=0
D/WebViewTimersControl(9029): onBrowserActivityPause
D/WebViewTimersControl(9029): Pausing webview timers,
view=com.android.[email protected]
I/ActivityManager(262): Start proc com.htc.HtcLinkifyDispatcher for
activity com.htc.HtcLinkifyDispatcher/.HtcLinkifyDispatcherActivity:
pid=11087 uid=1000 gids={1015, 3002, 3001, 3003, 5001, 5003, 3007, 3006, 2001, 1007}
D/ConnectivityService(262): onUidRulesChanged(uid=1000, uidRules=0)
V/browser(9029): BrowserActivity.onWindowFocusChanged
D/HtcLinkifyDispatcherActivity(11087): @@@@@ receive action=com.commonsware.android.MY_ACTION
I/HtcAppAssociationsUtils (Dispatcher)(11087): @@@@@ enable by 2 = true
I/HtcAppAssociationsUtils (Dispatcher)(11087): @@@@@ method = 0
I/HtcAppAssociationsUtils (Dispatcher)(11087): @@@@@ check enable = true
D/MP-Decision(891): Aggress decision engine: On
D/ActivityManager(262): Config after re-evaluted by window manager: null
D/MP-Decision(891): Switch to aggressive parameters:
Nw=1.990000, Tw=140, Ns=1.400000, Ts=190, Decision_ms=50, Poll_ms=10
V/browser(9029): BrowserActivity.onWindowFocusChanged
D/HtcTelephony(561): requestSetFastDormancy: module=0 mode=1
W/InputManagerService(262): Window already focused, ignoring focus gain of:
[email protected]
D/WebViewTimersControl(9029): onBrowserActivityResume
D/WebViewTimersControl(9029): Resuming webview timers,
[email protected]
W/BaseUi(9029): mMainView is already attached to wrapper in attachTabToContentView!
W/BaseUi(9029): mContainer is already attached to content in attachTabToContentView!
V/NfcService(600): setForegroundNdefPush msg = null
callback = [email protected]
D/memalloc(9029): /dev/pmem: Unmapping buffer base:0x569c5000 size:4386816 offset:4177920
D/browser(9029): [BrowserActivity::Connectivity_Type] ===== 1
I/ActivityManager(262): No longer want
com.htc.providers.settings:remote (pid 10935): hidden #16, adj=15
D/Process(262): killProcessQuiet, pid=10935
D/Process(262): dalvik.system.VMStack.getThreadStackTrace(Native Method)
D/ConnectivityService(262): onUidRulesChanged(uid=1000, uidRules=0)
D/Process(262): java.lang.Thread.getStackTrace(Thread.java:599)
D/Process(262): android.os.Process.killProcessQuiet(Process.java:823)
D/Process(262): com.android.server.am.ActivityManagerService.updateOomAdjLocked(ActivityManagerService.java:15132)
D/Process(262): com.android.server.am.ActivityManagerService.trimApplications(ActivityManagerService.java:15294)
D/Process(262): com.android.server.am.ActivityStack.activityIdleInternal(ActivityStack.java:3450)
D/Process(262): com.android.server.am.ActivityManagerService.activityIdle(ActivityManagerService.java:4303)
D/Process(262): android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:362)
D/Process(262): com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1706)
D/Process(262): android.os.Binder.execTransact(Binder.java:338)
D/Process(262): dalvik.system.NativeStart.run(Native Method)
Qualcuno sa cosa sta succedendo con URI intenzionali qui? Perché non funziona? E c'è una soluzione?
Grazie, Simon
Bene, questa è una brutta notizia! Quello che voglio fare è, dalla mia app, trasferire l'utente a un sito Web di terze parti per l'autenticazione, e quindi il sito Web di terze parti normalmente usa il mio URI di intenti per reindirizzare l'utente alla mia app con il risultato dell'autenticità. Ora mi chiedo se c'è un modo in cui posso visualizzare il portale di autenticazione di terze parti dalla mia app anziché trasferirlo al browser per avere il "controllo di entrambe le parti". – Simon
@Simon: puoi provare a utilizzare un 'WebView' per la pagina Web di autenticazione. – CommonsWare
Grazie, lo esaminerò. – Simon