2013-05-07 5 views
5

मैं एक PlAY_FINISHED कार्रवाई प्राप्त करने के लिए AndroidManifest.xml में रिसीवर को परिभाषित किया है, और अन्य फ़ाइल में मुझे लगता है कि प्रसारण रिसीवर के लिए एक आशय भेज इस प्रकार की तरह:मैनिफेस्ट फ़ाइल में रिसीवर प्रसारित करने के लिए कस्टम intentfilter को कैसे पंजीकृत करें?

public String PlAY_FINISHED = "play finished"; 
... 
Intent in = new Intent(PlAY_FINISHED); 
this.service.sendBroadcast(in); 

तो मेरे मैनिफ़ेस्ट फ़ाइल में, मैं इसे इस तरह सेट , जहां MyStaticString एक कक्षा है जिसमें एप्लिकेशन में सभी स्थिर स्ट्रिंग शामिल हैं। क्या यह सही तरीका है?

<intent-filter> 
     <action android:name="com.mysite.appname.MyStaticString.PLAY_FINISHED" /> 
    </intent-filter> 

उत्तर

4

में एंड्रॉयड मालसूची फ़ाइल का पंजीयन।

<receiver android:name=".ReceiverDemo"> 
    <intent-filter> 
    <action android:name="marakana.intent.action.ReceiverDemo" /> 
    </intent-filter> 
</receiver> 

प्रोग्राम के रूप में पंजीकृत किया जा रहा।

... 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    // Create the receiver 
    receiver = new TimelineReceiver(); 
    filter = new IntentFilter(UpdaterService.NEW_STATUS_INTENT); 
} 

protected void onResume() { 
    super.onResume(); 
    super.registerReceiver(receiver, filter, 
     "com.marakana.yamba.SEND_TIMELINE_NOTIFICATIONS", null); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(receiver); 
} 
... 

अद्यतन: अनेक मान एक से अधिक मूल्य निर्दिष्ट किया जा सकता है, तो तत्व लगभग हमेशा दोहराया है बजाय एक एकल तत्व के भीतर एक से अधिक मान लिस्टिंग से।

<intent-filter . . . > 
    <action android:name="android.intent.action.EDIT" /> 
    <action android:name="android.intent.action.INSERT" /> 
    <action android:name="android.intent.action.DELETE" /> 
    . . . 
</intent-filter> 

UPDATE2:: AndroidManifest.xml

<manifest 
    package="com.marakana.android.lifecycle" 
    android:versionCode="1" 
    android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <uses-sdk 
    android:minSdkVersion="10" 
    android:targetSdkVersion="11" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 

    <application 
    android:name=".ApplicationDemo" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name"> 
    <activity 
     android:name=".ActivityDemo" 
     android:label="@string/app_name"> 
     <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".AnotherActivity"></activity> 

    <activity android:name=".SystemServicesDemo"></activity> 

    <service android:name=".ServiceDemo"></service> 

    <service android:name=".IntentServiceDemo"> 
     <intent-filter> 
     <action android:name="marakana.intent.action.IntentServiceDemo" /> 
     </intent-filter> 
    </service> 

    <receiver android:name=".ReceiverDemo"> 
     <intent-filter> 
     <action android:name="marakana.intent.action.ReceiverDemo" /> 
     </intent-filter> 
    </receiver> 

    <provider 
     android:name=".ProviderDemo" 
     android:authorities="com.marakana.android.lifecycle.providerdemo" /> 

    </application> 
</manifest> 
+0

मुझे अभी भी काफी कुछ नहीं मिला है, marakana.intent.action.ReceiverDemo क्या प्रतिनिधित्व करता है? – Jolin

+0

ऊपर मेरा जवाब अपडेट किया गया। – NMALKO

+0

हाँ..लेकिन मेरे मामले में मुझे इस इरादे को 'नए इरादे में इरादा कैसे प्राप्त करना चाहिए (PlAY_FINISHED); '? यह सब मैं जानना चाहता हूँ है ... – Jolin

6

का एक उदाहरण प्रकट में लक्ष्य फ़िल्टर का android:name सिर्फ एक मनमाना है कि उदाहरण के लिए, लक्ष्य फ़िल्टर कई कार्यों सूचीबद्ध कर सकते हैं स्ट्रिंग, जावा स्थिरता के लिए "पथ" नहीं। समस्या यह है कि कोड में आपकी स्ट्रिंग निरंतर "play finished" के रूप में परिभाषित की गई है, जो कि मैनिफेस्ट में निर्दिष्ट "com.mysite.appname.MyStaticString.PLAY_FINISHED" नाम से मेल नहीं खाता है।

यह

public String PlAY_FINISHED = "com.mysite.appname.MyStaticString.PLAY_FINISHED"; 

इससे कोई फर्क नहीं पड़ता कि चर कहा जाता है, या यहाँ तक कि यदि आप सब पर एक चर में स्ट्रिंग की दुकान होना चाहिए। या कि इसके नाम लिखने में कोई त्रुटि :)

इसके बजाय आप "play finished" को प्रकट में android:name बदल सकता है शामिल है, लेकिन कस्टम प्रसारण कार्यों पूरे सिस्टम में कर रहे हैं, ताकि वे आपके एप्लिकेशन का पैकेज नाम दूसरे के साथ टकराव से बचने के लिए के साथ योग्य होना चाहिए क्षुधा।

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