android监听sd卡挂载状态,onReceive无法被调用问题
2013-12-31 10:24
302 查看
MyExternalStorageReceiver
以上代码看起来,感觉已经很完整了,但是onReceive怎么都无法被调用。
最后发现在intentFilter中加上了intentFilter.addDataScheme("file");这样才起作用(line 30)
package com.rishiqing.receiver; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.IntentFilter; import android.content.DialogInterface.OnDismissListener; import android.content.Intent; import android.os.Environment; import android.util.Log; import com.rishiqing.activity.LuncherActivity; import com.rishiqing.utils.LogUtil; public class MyExternalStorageReceiver extends BroadcastReceiver { private static String TAG = MyExternalStorageReceiver.class.getName(); private Context mContext; public MyExternalStorageReceiver(Context c) { LogUtil.e(TAG, "MyExternalStorageReceiver~~~~"); this.mContext = c; IntentFilter intentFilter = new IntentFilter( Intent.ACTION_MEDIA_MOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED); intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED); intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED); intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL); mContext.registerReceiver(this, intentFilter); } @Override public void onReceive(Context context, Intent intent) { LogUtil.e(TAG, "onReceive~~~~"); ifSDStateFalse(); } public void ifSDStateFalse() { AlertDialog mAlertDialog = null; // TODO Auto-generated method stub if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED) == true) { mAlertDialog = new AlertDialog.Builder(mContext) .setMessage("系统未检测到sd卡,将强制退出").show(); mAlertDialog.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { Intent i = new Intent(); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); i.setClass(mContext, LuncherActivity.class); i.putExtra("isFinish", 1); mContext.startActivity(i); } }); } else if(Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED) == true){ if(mAlertDialog!=null && mAlertDialog.isShowing()) mAlertDialog.dismiss(); } } public void unregister() { Log.d(TAG, "unregister()"); mContext.unregisterReceiver(this); } }
以上代码看起来,感觉已经很完整了,但是onReceive怎么都无法被调用。
最后发现在intentFilter中加上了intentFilter.addDataScheme("file");这样才起作用(line 30)
相关文章推荐
- android调用系统相机和相册进行拍照裁剪处理,解决不同安卓版本存在无法加载相册的问题,处理了是否有sd卡的存在的情况
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
- Android中调用本机camera,遇到无法回调onActivityresult方法
- android监听电话状态问题
- android ViewFlipper制作,OnGestureListener手势监听不灵敏问题
- Android 无法获得 SCREEN_ON和SCREEN_OFF广播问题
- 关于GetHostEntry无法解析IP地址和ReceiveFrom调用中ref关键字问题
- 无法挂载sd卡(android),不能安装APK(1)
- 【Android】onActivityResult()和onResume()的调用顺序问题
- android监听SD卡挂载并获取路径
- ViewPager嵌套Fragment,导致onActivityResult无法调用的问题
- Android中Fragment的onActivityResult不被调用的问题
- android MountService实现------外设挂载及状态监听
- android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播
- android usb大容量存储时sd卡状态监听
- android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化
- Android 调用系统图片裁剪(解决“无法加载。”问题)
- android webview onJsAlert只调用一次的问题,并且页面卡死的问题
- Android BroadcastReceiver之监听外置SD卡状态
- android usb大容量储存时sd卡状态监听