程序启动的时候打开sd卡上面的一个文件, 在关闭该文件之前(不管有没有读写操作),卸载sd卡(通过“打开USB存储设备”方式,SD卡在PC上可见)时,程序自动关闭,force close对话框都没有。
大家看看有没有什么好的方法来处理这个问题,只要能保证这个时候程序不会自动关闭即可。 谢谢。
解决方案 »
- 用这中方式registerForContextMenu创建的弹出菜单怎么改成非长按的
- 用android做新浪客户端出现了问题
- Android里面android.provider.Telephony.SMS_RECEIVED这个怎么找不到啊?
- Ophone&Android程序开发交流 飞信群:31192364 欢迎加入。
- android 的又一个bug?
- SurfaceView 添加到 悬浮窗 有错误
- 停止正在运行的服务,求助!!
- 安卓smali里sql字符串的小问题
- BluetoothLeScanner中 onScanResult()的内容如何获取
- 怎样在执行onPause()之前,显示toast信息?
- android 开机自动启动自己写的shell,怎么配置?
- webview中怎么捕获js的button点击事件, 如何在button点击之后获得js输入框中的字符串?
就是创建一个activity的项目,在onCreate()里面加了如下代码: File file = new File(
android.os.Environment.getExternalStorageDirectory(),
"Text.log.txt");
try {
FileOutputStream fileOutputStream = new FileOutputStream(file, true);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)
SdcardReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_MEDIA_SHARED)){
do somethings
}
else if(intent.getAction().equals(Intent.ACTION_MEDIA_EJECT)){
do somethings
}
....
}
创建时注册广播
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
//intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);
intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
//intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
//intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentFilter.addDataScheme(“file”);
registerReceiver(SdcardReceiver , intentFilter);程序结束
unregisterReceiver(SdcardReceiver);
还是二楼的方法好,需要监听SD卡的状态,然后给出相应的处理
SD卡上打开一个文件,是普通文本文件还是mp3、mp4类文件是不一样的吧。还有即使监听到了,处理响应怎么写?不让退? 我播放着一半的mp3没了也能播?
有没有办法禁止在系统中卸载SD卡?也就是说希望能做到要卸载SD卡只有关闭把物理卡取走这个途径。不考虑定制系统这个情况。
通过监听“android.intent.action.MEDIA_BAD_REMOVAL”广播,可以监听到SD卡的拔出操作。如果考虑到音乐文件播放等问题,在真机上由于缓存的存在,在SD卡拔出后,一般都能再播放音乐10~30秒不等的时间(具体时间看机器配置而定)。在接收到“android.intent.action.MEDIA_BAD_REMOVAL”广播后,马上停止音乐播放应该可以防止AP崩溃。