(2012-06-27 21:37:11)
之前有一个概念经常混淆,就是发送广播sendBroadCast或sendOrderBroadCast是要发送自己定义的广播时,才用到的,如果是系统的广播,根本不需要用到它们,系统的广播,我们只需要注册广播监听,如定义intent_filter监听就可以了,所以abortBroadcast终止广播就更用不到了。
-
<!-- 桌面 --> - <receiver
android:name=".widget.DeskWidgeWeather"> - <meta-data
android:name="android.appwidget.provider" android:resource="@xml/widget_weather_provider" /> - <intent-filter>
-
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> -
<action android:name="action_weather"/> - </intent-filter>
- lt;/receiver>
-
SdcardStateChanageReceiv er sdcardStateReceiver; - @Override
- protected
void onCreate(Bundle savedInstanceState) - {
-
super.onCreate(savedInstanceState); -
IntentFilter filter = new IntentFilter(); -
filter.addAction(Intent.ACTION_MEDIA_REMOVED); -
filter.addAction(Intent.ACTION_MEDIA_EJECT); -
filter.addAction(Intent.ACTION_MEDIA_MOUNTED); -
filter.addDataScheme("file"); -
sdcardStateReceiver = new SdcardStateChanageReceiv er(); -
registerReceiver(sdcardStateReceiver,filter); - }
- @Override
- protected
void onDestroy(){ -
unregisterReceiver(sdcardStateReceiver); - }
- class
SdcardStateChanageReceiv er extends BroadcastReceiver{ -
-
@Override -
public void onReceive(Context context, Intent intent) -
{ -
String state=android.os.Environment.getExternalStorageState(); -
System.out.println("SDCard 发生改变! 状态:"+state); -
//checkSDCard(); -
} -
public void checkSDCard(){ -
String state=android.os.Environment.getExternalStorageState(); -
System.out.println(state); -
if(state.equals(android.os.Environment.MEDIA_REMOVED ) || state .equals(android.os.Environment.MEDIA_UNMOUNTED)){ -
System.out.println("SDCard 已卸载!"); -
} -
} - }