我正在尝试注册接收器以删除SD卡,但我的接收器没有被要求删除sd卡粘贴我的代码.我在oncreate()中注册接收器并在ondestroy函数中取消注册.如果我有任何错误,请告诉我.
void registerSDCardStateChangeListener() {
final String MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
final String MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
final String MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";
// final String MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
final String MEDIA_EJECT = "android.intent.action.MEDIA_SCANNER_FINISHED";
mSDCardStateChangeListener = new BroadcastReceiver() {
@
Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equalsIgnoreCase(MEDIA_REMOVED) || action.equalsIgnoreCase(MEDIA_UNMOUNTED) || action.equalsIgnoreCase(MEDIA_BAD_REMOVAL) || action.equalsIgnoreCase(MEDIA_EJECT)) {
if (mMediaPlayer != null) {
stopPlayBack();
}
}
}
};
IntentFilter filter = new IntentFilter();
filter.addAction(MEDIA_REMOVED);
filter.addAction(MEDIA_UNMOUNTED);
filter.addAction(MEDIA_BAD_REMOVAL);
filter.addAction(MEDIA_EJECT);
registerReceiver(mSDCardStateChangeListener, filter);
}
Run Code Online (Sandbox Code Playgroud)
如果我的代码有任何问题,请告诉我.
Jus*_*ler 25
尝试将此添加到您的intent-filter
filter.addDataScheme("file");
Run Code Online (Sandbox Code Playgroud)
您尝试捕获的操作似乎将路径作为intent的数据字段发送.如果是这种情况,那么您的intent过滤器必须具有匹配方案.
最后,这只是一个建议,但我建议您使用Intent类中的常量,而不是手动输入您的操作.IE,使用Intent.ACTION_MEDIA_REMOVED而不是直接使用字符串.
归档时间: |
|
查看次数: |
5261 次 |
最近记录: |