转:http://blog.sina.com.cn/s/blog_8417aea801010ulr.html
之前一直碰到这个问题,都没有证明回答,现在总结如下:
之前有一个概念经常混淆,就是发送广播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.appwidget.action.APPWIDGET_UPDATE"/>android:name= -
<action "action_weather"/>android:name= -
</intent-filter>
-
lt;/receiver>
-
SdcardStateChanageReceiv er sdcardStateReceiver; -
@Override
-
protected
void onCreate(Bundle savedInstanceState)
-
{
-
super.onCreate(savedInstanceState); -
IntentFilter newfilter = 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 extendser BroadcastReceiver{
-
-
@Override -
public void onReceive(Context context, Intent intent)
-
{ -
String state=android.os.Environment.getExternalStorageState(); -
System.out.println( 发生改变! +state);状态:" -
-
} -
public void checkSDCard(){
-
String state=android.os.Environment.getExternalStorageState(); -
System.out.println(state); -
) || state .equals(android.os.Environment.MEDIA_UNMOUNTED)){
-
System.out.println( 已卸载!" ); -
} -
} -
}