|
Android的實際開發(fā)項目當(dāng)中難免會遇到SD卡的插拔的監(jiān)聽事件檢測,現(xiàn)在我們一起來看下安卓開發(fā)當(dāng)中應(yīng)用廣播的知識,記錄下來,以備后用哦。 1. 如果是單個Activity監(jiān)聽廣播,則在Activity的onCreate方法里面,用下面的代碼注冊廣播 IntentFilter iFilter = new IntentFilter(); iFilter.addAction(Intent.ACTION_MEDIA_EJECT); iFilter.addDataScheme("file"); registerReceiver(mBroadcastReceiver , iFilter); 2. 如果是整個程序監(jiān)聽廣播,則在Android manifest用下面的方法注冊廣播 <receiver android:name=".activities.widget.UsbBroadCastReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_EJECT" /> <data android:scheme="file"/> </intent-filter> </receiver> 3. 如果廣播別別的程序截獲,導(dǎo)致你無法收到廣播,給intent-filter加上一個android:priority="1000"的屬性就行,添加位置,參照上面的代碼。 4. 實際項目里面是整個程序監(jiān)聽廣播, ①Android Manifest的代碼如下: <receiver android:name=".activities.widget.UsbBroadCastReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_EJECT" /> <data android:scheme="file"/> </intent-filter> </receiver> Android Manifest一定要在intent-filter注意加上<data android:scheme=”file”>,否則無法監(jiān)聽到SD卡插拔廣播,如果你在Activity里面用代碼注冊廣播,那一定要加iFilter.addDataScheme("file") ②廣播的代碼如下: /** * @author Anonymous * @createDate 2012-4-9 * @version v0.5.1 */ public class UsbBroadCastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(Intent.ACTION_MEDIA_EJECT)){ ToastUtil.ToastShort(context, R.string.usb_sdeject); }else if(action.equals(Intent.ACTION_MEDIA_MOUNTED)){ ToastUtil.ToastShort(context, R.string.usb_sdconnect); } } } |
|
|