Android 标准意图URI被破坏了?

Android 标准意图URI被破坏了?,android,android-intent,htc-android,commonsware,Android,Android Intent,Htc Android,Commonsware,我在特定设备上的意图URI有问题,因此我尝试了此处建议的Commonware URLHandler示例:,其示例页面上的意图URI超链接也无法调用应用程序。示例声明其意图过滤器如下所示: <intent-filter> <action android:name="com.commonsware.android.MY_ACTION" /> <category android:name="android.intent.category.DEFAULT"

我在特定设备上的意图URI有问题,因此我尝试了此处建议的Commonware URLHandler示例:,其示例页面上的意图URI超链接也无法调用应用程序。示例声明其意图过滤器如下所示:

<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>

这适用于大多数设备,但不适用于运行安卓4.0.3的HTC Amaze 4G。当我触摸链接时,logcat会给出:

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.browser.BrowserWebView@40e562f8
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: 
    com.android.internal.view.IInputMethodClient$Stub$Proxy@40e75100
D/WebViewTimersControl(9029): onBrowserActivityResume
D/WebViewTimersControl(9029): Resuming webview timers, 
    view=com.android.browser.BrowserWebView@40e562f8
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 = android.nfc.INdefPushCallback$Stub$Proxy@40e73470
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)
I/PRIME(9029):发送到WebViewClient。
I/PRIME(9029):发送至HtcLinkifyDispatcher
I/ActivityManager(262):从pid 9029开始启动
D/MP决策(891):攻击决策引擎:关闭
D/MP决策(891):切换回正常参数:
Nw=2.700000,Tw=180,Ns=2.100000,Ts=270,决策=100,投票=10
V/NfcService(600):setForeGroundEndefpush消息=null回调=null
D/HtcTelephony(561):请求设置快速休眠:模块=0模式=0
D/WebViewTimersControl(9029):打开浏览活动原因
D/webview定时器控件(9029):暂停webview定时器,
view=com.android.browser。BrowserWebView@40e562f8
I/ActivityManager(262):启动进程com.htc.HtcLinkifyDispatcher for
活动com.htc.HtcLinkifyDispatcher/.HtcLinkifyDispatcherActivity:
pid=11087 uid=1000 GID={101523002300350015003500700620001,1007}
D/连接服务(262):onUidRulesChanged(uid=1000,uidRules=0)
V/浏览器(9029):BrowserActivity.onWindowFocusChanged
D/HtcLinkifyDispatcherActivity(11087):@@@@接收操作=com.commonware.android.MY_操作
I/HtcapAssociationsUtils(调度程序)(11087):@@@@@@@@通过2启用=真
I/HTCAPP关联实用程序(调度程序)(11087):@@@@@方法=0
I/HtcapAssociationSutils(调度程序)(11087):@@@@@@检查启用=真
D/MP决策(891):攻击决策引擎:打开
D/ActivityManager(262):窗口管理器重新求值后的配置:null
D/MP决策(891):切换到攻击性参数:
Nw=1.990000,Tw=140,Ns=1.400000,Ts=190,决策=50,投票=10
V/浏览器(9029):BrowserActivity.onWindowFocusChanged
D/HtcTelephony(561):请求设置快速休眠:模块=0模式=1
W/InputManagerService(262):窗口已聚焦,忽略聚焦增益:
com.android.internal.view.IInputMethodClient$Stub$Proxy@40e75100
D/WebViewTimerControl(9029):onBrowserActivityResume
D/webview定时器控件(9029):恢复webview定时器,
view=com.android.browser。BrowserWebView@40e562f8
W/BaseUi(9029):mMainView已附加到attachTabToContentView中的包装器!
W/BaseUi(9029):mContainer已附加到attachTabToContentView中的内容!
V/NFC服务(600):SetForeGroundEndefPush消息=null
callback=android.nfc.INdefPushCallback$Stub$Proxy@40e73470
D/memalloc(9029):/dev/pmem:取消映射缓冲区基:0x569c5000大小:4386816偏移量:4177920
D/浏览器(9029):[BrowserActivity::Connectivity_Type]====1
I/ActivityManager(262):不再需要
设置:远程(pid 10935):隐藏#16,调整=15
D/进程(262):killProcessQuiet,pid=10935
D/Process(262):dalvik.system.VMStack.getThreadStackTrace(本机方法)
D/连接服务(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.UpdateOmadjLocked(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)
进程(262):dalvik.system.NativeStart.run(本机方法)
有人知道这里的意图URI是怎么回事吗?为什么它不起作用?有解决办法吗

谢谢,
Simon

由于我可以在HTC One上复制此问题,而我无法在其他ICS/JB设备上复制此问题,因此我认为这是Linkify解决方案的另一个结果

有解决办法吗

如果您可以控制双方(例如,包含链接的
WebView
,加上响应
intent
URL的应用程序),您可以通过
intent.createChooser()
手动强制选择器,这可能会起作用


但是,如果您依靠第三方代码(例如Web浏览器)在这些HTC设备上打开应用程序,我相信您已经完蛋了。

好吧,这是个坏消息!我想做的是,从我的应用程序将用户转移到第三方网站进行身份验证,然后第三方网站通常会使用我的意向URI将用户重定向回我的应用程序,并获得身份验证结果。现在,我想知道是否有一种方法可以从我的应用程序中显示第三方身份验证门户,而不是转移到浏览器中,以便“控制双方”。@Simon:您可以尝试使用
WebView
作为身份验证网页。
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.browser.BrowserWebView@40e562f8
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: 
    com.android.internal.view.IInputMethodClient$Stub$Proxy@40e75100
D/WebViewTimersControl(9029): onBrowserActivityResume
D/WebViewTimersControl(9029): Resuming webview timers, 
    view=com.android.browser.BrowserWebView@40e562f8
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 = android.nfc.INdefPushCallback$Stub$Proxy@40e73470
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)