2011-07-18 15 views
7

के लिए इरादा फ़िल्टर ICal URL के लिए एक हैंडलर के रूप में अपना एंड्रॉइड ऐप पंजीकृत करने का प्रयास कर रहा हूं। ऐसा करने के लिए मैंने webcal:// छद्म प्रोटोकॉल और text/calendar एमआईएमई प्रकार (नीचे देखें) का उपयोग कर HTTP URL के लिए मेरे मैनिफेस्ट में इरादा फ़िल्टर सेट किया है।ical URL

यह एम्यूलेटर में पूरी तरह से ठीक काम करता है, लेकिन वास्तविक डिवाइस पर मुझे समस्याएं आ रही हैं। webcal:// फ़िल्टर काम करता है, लेकिन text/calendar कोई नहीं करता है। इसके बजाय ब्राउज़र मेरे ऐप पर यूआरएल पास करने के बजाय साइकल टेक्स्ट के रूप में ical फ़ाइल को प्रदर्शित करता है।

मैंने जांच की है कि ब्राउजर को ical (सेटिंग्स-> एप्लिकेशन-> ब्राउज़र में) के लिए डिफ़ॉल्ट हैंडलर के रूप में कॉन्फ़िगर नहीं किया गया है और मैंने कुछ अन्य लोगों से पूछा कि क्या वे अपने मोबाइल पर समस्या का पुनरुत्पादन कर सकते हैं। सभी एक ही परिणाम के साथ।

टेक्स्ट/कैलेंडर यूआरएल के लिए पंजीकरण करने का सही तरीका क्या है?

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.splitbrain.giraffe" 
    android:versionName="0.31" android:versionCode="4"> 
<uses-sdk android:minSdkVersion="4" /> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar"> 
    <activity android:label="@string/app_name" android:name="MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <category android:name="android.intent.category.BROWSABLE"></category> 
      <action android:name="android.intent.action.VIEW"></action> 
      <data android:mimeType="text/calendar" android:scheme="http"></data> 
      <category android:name="android.intent.category.DEFAULT"></category> 
     </intent-filter> 
     <intent-filter> 
      <category android:name="android.intent.category.BROWSABLE"></category> 
      <action android:name="android.intent.action.VIEW"></action> 
      <data android:scheme="webcal"></data> 
      <category android:name="android.intent.category.DEFAULT"></category> 
     </intent-filter> 
    </activity> 
    <activity android:name="OptionsActivity"></activity> 
    <activity android:name="DetailActivity"></activity> 
    <activity android:name="AboutActivity"></activity> 

</application> 
</manifest> 

अद्यतन: बाहर कर देता है इसके बाद के संस्करण एंड्रॉयड 1.6 एमुलेटर में ठीक काम करता है, लेकिन एक 2.3.3 एमुलेटर जहां यह मेरे फोन पर के रूप में ही व्यवहार से पता चलता पर नहीं। क्या यह एंड्रॉइड में एक बग हो सकता है?

+0

क्या यह संभव है कि सर्वर सही सामग्री प्रकार को सही तरीके से नहीं भेज रहा है? यदि ऐसा नहीं है, तो ब्राउज़र इसे सादा पाठ के रूप में समझ सकता है। आपके पास पथ उद्देश्य फ़िल्टर के साथ भी बेहतर भाग्य हो सकता है जो regexes * .ical –

+0

हां, सर्वर सही माइम-प्रकार भेजता है। यहां यूआरएल का उपयोग मैं परीक्षण के लिए करता हूं: http://re-publica.de/11/rp2011.ics –

+0

क्या आपने * .ics के लिए पथ पैरामीटर दृष्टिकोण के साथ एक और फ़िल्टर करने की कोशिश की है? यदि यह काम नहीं करता है तो क्या यह संभव है कि आपके पास डिफ़ॉल्ट ऐप सेट ब्राउज़र हो, ताकि यह अब संकेत न दे? –

उत्तर

0

बस DEFAULT श्रेणी का उपयोग करें, ब्राउजबल श्रेणी समस्या का कारण हो सकता है।

किसी भी फाइल है कि सर्वर द्वारा गलत माइम प्रकार दिया गया है पर कब्जा करने के

ही फिल्टर

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.splitbrain.giraffe" 
    android:versionName="0.31" android:versionCode="4"> 
<uses-sdk android:minSdkVersion="4" /> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar"> 
    <activity android:label="@string/app_name" android:name="MainActivity"> 
     <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" /> 
      <data android:mimeType="text/calendar" /> 
      <data android:scheme="webcal" /> 
      <data android:pathPattern=".*.ics" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="OptionsActivity"></activity> 
    <activity android:name="DetailActivity"></activity> 
    <activity android:name="AboutActivity"></activity> 

</application> 
</manifest> 
+0

नहीं। कोई फर्क नहीं। यहां तक ​​कि * .ics pathPattern और नियमों के साथ ही जैसे आपने उन्हें दिया है, ब्राउज़र यूआरएल को मेरे आवेदन पर सौंपने के बजाय डेटा प्रदर्शित करना जारी रखता है। –

+1

मुझे विश्वास है कि आप जो अभिव्यक्ति खोज रहे हैं वह है: "। *। Ics" अधिक जानकारी के लिए दस्तावेज़ देखें: http://developer.android.com/guide/topics/manifest/data-element.html – TheIT

+0

@TheIT अच्छी तरह से देखा! यह एक प्राचीन पोस्ट है, लेकिन मुझे उम्मीद है कि किसी को यह उपयोगी लगेगा। मैं जवाब अपडेट करूंगा। क्या वह दूसरी अवधि से बचने के लिए '। * \। Ics' नहीं होना चाहिए? – Merlin