मुझे किसी विशेष डिवाइस पर इरादे के यूआरआई के साथ समस्याएं आ रही हैं, इसलिए मैंने यहां दिए गए कॉमन्सवेयर URLHandler नमूना को आजमाया है: Launching my app using the intent 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>
और नमूना वेब पेज में हाइपरलिंक है:
<a href="intent:#Intent;action=com.commonsware.android.MY_ACTION;end">Link back to URLHandler via intent: URL</a>
यह सबसे उपकरणों पर काम करता है, लेकिन एचटीसी Amaze 4G पर नहीं, Android चल 4.0.3। जब मैं लिंक को स्पर्श करता हूं, तो लॉगकैट देता है:
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,
[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)
क्या कोई जानता है कि इरादे के साथ यूआरआई क्या हो रहा है? यह काम करने में असफल क्यों है? और क्या कोई कामकाज है?
धन्यवाद, साइमन
अच्छा, यह बुरी खबर है! मैं अपने ऐप से, प्रमाणीकरण के लिए उपयोगकर्ता को किसी तृतीय-पक्ष वेबसाइट पर स्थानांतरित करना चाहता हूं, और फिर तृतीय पक्ष की वेबसाइट सामान्य रूप से मेरे इरादे को यूआरआई को प्रमाणीकरण परिणाम के साथ अपने ऐप पर रीडायरेक्ट करने के लिए उपयोग करेगी। अब मुझे आश्चर्य है कि क्या कोई तरीका है कि मैं "दोनों पक्षों के नियंत्रण" के लिए ब्राउज़र में स्थानांतरित करने के बजाय अपने ऐप के अंदर से तीसरे पक्ष के प्रमाणीकरण पोर्टल को प्रदर्शित कर सकता हूं। – Simon
@ सिमॉन: आप प्रमाणीकरण वेब पेज के लिए 'वेब व्यू' का उपयोग करने का प्रयास कर सकते हैं। – CommonsWare
धन्यवाद, मैं उसमें देख लूंगा। – Simon