2012-08-02 10 views
6

मुझे किसी विशेष डिवाइस पर इरादे के यूआरआई के साथ समस्याएं आ रही हैं, इसलिए मैंने यहां दिए गए कॉमन्सवेयर 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) 

क्या कोई जानता है कि इरादे के साथ यूआरआई क्या हो रहा है? यह काम करने में असफल क्यों है? और क्या कोई कामकाज है?

धन्यवाद, साइमन

उत्तर

6

जब से मैं एक HTC एक एस पर इस समस्या को दोहराने कर सकते हैं, और मैं अन्य आईसीएस/जेबी उपकरणों पर इस समस्या को दोहराने नहीं कर सकते, मुझे लगता है कि इस Linkify वैकल्पिक हल कि HTC put in place in response to Apple-led litigation का एक और नतीजा है ।

और क्या कोई कामकाज है?

आप दोनों पक्षों (जैसे, एक WebView कड़ी युक्त, प्लस एप्लिकेशन intent यूआरएल का जवाब) के नियंत्रण में हैं, तो आप मैन्युअल रूप से एक चयनकर्ता Intent.createChooser() के माध्यम से मजबूर कर सकता है, और है कि काम हो सकता है।

यदि, हालांकि, आप अपने ऐप को खोलने में सक्षम होने के लिए तीसरे पक्ष के कोड (उदा।, एक वेब ब्राउज़र) पर भरोसा कर रहे हैं, तो मुझे विश्वास है कि आप केवल खराब हैं।

+0

अच्छा, यह बुरी खबर है! मैं अपने ऐप से, प्रमाणीकरण के लिए उपयोगकर्ता को किसी तृतीय-पक्ष वेबसाइट पर स्थानांतरित करना चाहता हूं, और फिर तृतीय पक्ष की वेबसाइट सामान्य रूप से मेरे इरादे को यूआरआई को प्रमाणीकरण परिणाम के साथ अपने ऐप पर रीडायरेक्ट करने के लिए उपयोग करेगी। अब मुझे आश्चर्य है कि क्या कोई तरीका है कि मैं "दोनों पक्षों के नियंत्रण" के लिए ब्राउज़र में स्थानांतरित करने के बजाय अपने ऐप के अंदर से तीसरे पक्ष के प्रमाणीकरण पोर्टल को प्रदर्शित कर सकता हूं। – Simon

+0

@ सिमॉन: आप प्रमाणीकरण वेब पेज के लिए 'वेब व्यू' का उपयोग करने का प्रयास कर सकते हैं। – CommonsWare

+0

धन्यवाद, मैं उसमें देख लूंगा। – Simon

संबंधित मुद्दे