2013-03-19 7 views
9

मेरे पास एक यूआरएल है जो मैं अपने एंड्रॉइड ऐप में ओवरराइड कर रहा हूं। उस लिंक से किसी ईमेल से लिंक पर क्लिक करने से Intent Chooser संवाद ("इसे पूरा करके पूरा करें") पॉप अप करता है। हालांकि क्रोम (एंड्रॉइड 4 पर) से उसी लिंक पर क्लिक करके (<a> टैग में) मुझे उस यूआरएल पर रीडायरेक्ट करता है, और Intent Chooser प्रदान नहीं करता है।एंड्रॉइड यूआरएल ओवरराइड रीडायरेक्ट पर काम नहीं करता

अगर मैं की जगह गूगल के लिंक के साथ <a> टैग में लिंक Play स्टोर (https://play.google.com) तो लिंक पर क्लिक पॉप अप होता है फिर Intent Chooser

क्या Google Play Store और क्रोम के साथ कुछ खास है, या मैंने अपना यूआरएल कॉन्फ़िगर करने में कुछ गलत किया है? क्या यह काम करने के लिए एचटीएमएल में कुछ ऐसा कर सकता है?

यहाँ <intent-filter>

<activity 
    android:label="@string/app_name" 
    android:name="..." 
    > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN"/> 
     <category android:name="android.intent.category.LAUNCHER"/> 
    </intent-filter> 
    <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="https" 
       android:host="www.example.com" 
      /> 
     <data android:scheme="http" 
       android:host="www.example.com" 
      /> 
    </intent-filter> 
</activity> 

है (यूआरएल पर रीडायरेक्ट किया भी पॉप-अप नहीं करता Intent Chooser संवाद है, लेकिन मैं समझ मेरी स्थिति से ऊपर अधिक चुभते मेरी समस्या व्यक्त करता है।)

भी ध्यान रखने की

, मैं मैं निश्चित रूप से निश्चित हूं कि मेरा डोमेन नीचे था, जबकि यह सब काम कर रहा था। जैसे ही मेरा डोमेन ऑनलाइन आया, यह काम करना बंद कर दिया। यह मेरी कल्पना का एक चित्र हो सकता है क्योंकि उस समय मैं इस समस्या पर 100% केंद्रित नहीं था।

क्या यह संभव है कि क्रोम Google Play Store urls विशेष का व्यवहार करता है, अन्यथा यह Intent Chooser खोलने से पहले एक यूआरएल से गैर-200 प्रतिक्रिया की प्रतीक्षा करता है?

+0

एंड्रॉइड का कौन सा संस्करण आप चल रहे हैं? आश्चर्य है कि यह इस बग से संबंधित नहीं है: https://code.google.com/p/chromium/issues/detail?id=113140 –

+0

यह एक अच्छा खोज है। मैं 4.2.2 चला रहा हूं। मुझे यह बग भी मिला है जो संबंधित हो सकता है: https://code.google.com/p/chromium/issues/detail?id=170925 लेकिन मेरा कोड उस स्थान से अलग हो गया है जिसका परीक्षण करना आसान है क्योंकि मुझे इसे दरवाजा बाहर निकालना पड़ा। मैं जल्द ही एक परीक्षा स्थापित करूंगा। – xbakesx

+0

@AlexFlorescu अगर आप एक उत्तर लिखते हैं कि यह बग में से एक है (मैंने एक नई बग भी पोस्ट की है जो बंद नहीं है: https://code.google.com/p/chromium/issues/detail?id = 230104) मैं आपके उत्तर को सही चिह्नित करूंगा। – xbakesx

उत्तर

1

बहुत अच्छी तरह से ज्ञात बग हो सकता है।

एक मैं सुझाव दिया है (लेकिन जो अब बंद कर दिया है लगता है तो यह संस्करण आप के साथ कोशिश कर रहे हैं के लिए निर्धारित किया जाएगा): https://code.google.com/p/chromium/issues/detail?id=113140

मिले/@xbakesk द्वारा खोला: https://code.google.com/p/chromium/issues/detail?id=170925 https://code.google.com/p/chromium/issues/detail?id=230104

अगर कोई अन्य बग मिला, तो मुझे टिप्पणियों में बताएं और मैं सीधे अपना जवाब जोड़ूंगा, या संपादित करूँगा। अगर बग बंद हो जाएंगे, तो मैं जवाब को अपडेट करने का भी प्रयास करूंगा।

0

मुझे यकीन नहीं है कि क्या आप एक इरादे फ़िल्टर में एक से अधिक डेटा तत्व जोड़ सकते हैं। मैं विभिन्न योजनाओं के लिए दो अलग-अलग इरादों का उपयोग करता हूं।

यदि आपके पास वेबपृष्ठ पर मौजूद यूआरएल पर नियंत्रण है, तो आप http को अपने स्वयं के कस्टम प्रोटोकॉल में बदल सकते हैं ताकि आपका ऐप वेब ब्राउज़र के साथ संकेत देने के बजाय खुल जाएगा।

+1

इस पृष्ठ के अनुसार: http://developer.android.com/guide/components/intents-filters.html आपके पास एकाधिक ' 'हो सकते हैं, वे अभी संयुक्त हो जाते हैं, हालांकि मैं एक बहुत ही व्यावहारिक रूप से प्रलेखित तरीके से प्रवेश नहीं करूंगा। यह वर्णित व्यवहार में कुछ भी नहीं बदलता है। आपके दूसरे बिंदु के लिए, मेरे मामले में http ओवरराइडिंग आवश्यकता है। – xbakesx

2

मैंने इस के साथ थोड़ा सा झुकाया और यह आपको एक विधि दिखाने के लिए आसान हो सकता है जो काम करता है। यह 2.3.4 के साथ एक डिवाइस पर और 4.2.2 के साथ एक डिवाइस पर काम करता है, इसलिए मुझे लगता है कि यह ज्यादातर उपकरणों पर काम करेगा। ऊपर

<a href="http://realsimpleapps.com/acv/aThing">Click Me!</a> 

और मेरे मुख्य गतिविधि में मैं इस का उपयोग हड़पने के लिए जो कुछ भी मेरे पास है "aThing" (:

<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="http" android:host="realsimpleapps.com" android:pathPrefix="/acv/" /> 
</intent-filter> 

यहाँ मेरी html फ़ाइल है:

यहाँ मैनिफ़ेस्ट फ़ाइल से मेरे लक्ष्य फ़िल्टर है) के लिए सेट:

Uri data = getIntent().getData(); 
if (data != null) { 
    List<String> params = data.getPathSegments(); 
    if (params != null) { 
     Log.d(tag, "Param 0: " + params.get(0)); 
    } 
} 

कि काम कर रहे है, तो जाओ लक्ष्य फ़िल्टर करने के लिए दूसरे डेटा तत्व जोड़ें। यदि यह अभी भी उसके बाद काम करता है, तो आपको सेट किया जाना चाहिए।

हमें बताएं कि यह कैसा चल रहा है।

डीबी

+0

मैंने इसे केवल एक '' तत्व पर खींच लिया, और मेरे पास बिल्कुल वही स्थिति है। एक लिंक (क्रोम के बाहर) पर क्लिक करने पर एक इरादा चयनकर्ता संवाद होता है जो मेरे ऐप को उद्देश्य के लिए एक प्रस्ताव के रूप में खोलने के लिए खुला रहता है। अगर मैं क्रोम के साथ एक लिंक पर क्लिक करता हूं, तो कभी भी एक इरादा चयनकर्ता संवाद नहीं होता है, क्रोम सिर्फ यूआरएल को संभालता है। – xbakesx

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