2009-06-15 4 views
10

मैं SDCARD पर्वत का पता लगाने और घटना अनमाउंट करने के लिए एक BroadcastReceiver बनाया है प्राप्त नहीं कर सकता फिर भी, मैं सब पर किसी भी घटनाओं प्राप्त करने में सक्षम नहीं कर रहा हूँ: यहाँ AndroidManifest.xml है:एंड्रॉयड BroadcastReceiver, किसी भी प्रसारण घटनाओं

<receiver android:enabled="true" android:label="SDCardMountReceiver" android:exported="true" android:name="xxx.broadcasts.SDCardBroadcastReceiver"> 
    <intent-filter> 
     <action android:name="android.content.Intent.ACTION_MEDIA_MOUNTED"></action> 
     <!-- or <action android:name="android.content.Intent.ACTION_MEDIA_UNMOUNTED" />--></intent-filter> 
</receiver> 

और SDCardMountReceiver वर्ग: नाम मूल्य:

public class SDCardBroadcastReceiver extends BroadcastReceiver { 
    public SDCardBroadcastReceiver() { 
     super(); 
     System.err.println("constructor"); 
    } 

    public void onReceive(Context context, Intent intent) { 
     Log.d("SDCardBroadCastReceiver", "receive " + intent.getAction()); 
     System.err.println("jonathan receive " + intent.getAction()); 

    } 
} 
+0

लॉगफाइल में कुछ भी संदिग्ध है? –

+1

मुझे लगता है कि आपको मेनिफेस्ट फ़ाइल में अनुमति देने की आवश्यकता है <उपयोग-अनुमति एंड्रॉइड: name = "android.permission.MOUNT_FORMAT_FILESYSTEMS" /><उपयोग-अनुमति एंड्रॉइड: name = "android.permission.WRITE_EXTERNAL_STORAGE"/आशा यह –

उत्तर

3

Intent जावाडोक एक अलग कार्रवाई निर्दिष्ट करता है। "android.content.Intent.ACTION_MEDIA_MOUNTED" के बजाय "android.intent.action.MEDIA_MOUNTED" का उपयोग करें "

+0

में मदद करता है मैंने वास्तविक स्ट्रिंग स्थिर, android.intent.action.MEDIA_MOUNTED को आजमाया है, लेकिन फिर भी प्रसारण प्राप्त करने में सक्षम नहीं है। अन्य विचार? – user121196

+0

मैंने अपनी गतिविधि कक्षा पर गतिशील() में गतिशील रूप से रिसीवर बनाने की कोशिश की है, फिर भी मेरे एसडीकार्ड ब्रॉडकास्ट रिसीवर के बारे में अभी भी कुछ भी प्राप्त नहीं हुआ है।

 SDCardBroadcastReceiver myReceiver = new SDCardBroadcastReceiver(); \t IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED); \t filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); \t registerReceiver(myReceiver, filter); 
user121196

+4

मैं उलझन में हूं, अगर यह काम नहीं करता है तो आपने इसे सही उत्तर के रूप में क्यों चिह्नित किया? क्या चिउकी सही है, या यह एक है? –

42

आपको डेटा योजना को" फ़ाइल "पर सेट करने की भी आवश्यकता है।

<intent-filter> 
    <action android:name="android.intent.action.MEDIA_MOUNTED" /> 
    <data android:scheme="file" /> 
    </intent-filter> 

संदर्भ: android-developers thread

+0

मैनिफेस्ट में परिभाषित करने के साथ इसे कभी भी काम नहीं करने में कामयाब रहा, मुझे इसे कोड के साथ पंजीकृत करने की आवश्यकता थी। क्या इस काम को मैनिफेस्ट में परिभाषित करने के लिए संभव है? – Lukap

+0

एक नया प्रश्न शुरू करें और अपना 'AndroidManifest.xml' पोस्ट करें। मैं एक नजर मार लूगां। – chiuki

+0

यदि आपका उत्तर नहीं दिखाई देता है तो मुझे खुद का कारण नहीं मिल रहा है। – jowett

4

आप एक प्रसारण रिसीवर प्रोग्राम के रूप में रजिस्टर, तो आप भी इस योजना "फाइल" करने के लिए सेट करना होगा।

IntentFilter filter = new IntentFilter(); 
filter.addAction(Intent.ACTION_MEDIA_MOUNTED); 
filter.addAction(Intent.ACTION_MEDIA_REMOVED); 
filter.addDataScheme("file"); 
mContext.registerReceiver(mExternalStorageReceiver, filter);