Android-监听sdcard状态
public class MyService extends Service { private static final String TAG = "MyService"; File imagepath; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); Log.i(TAG, "服务启动..."); // 在IntentFilter中选择你要监听的行为 IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);// sd卡被插入,且已经挂载 intentFilter.setPriority(1000);// 设置最高优先级 intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);// sd卡存在,但还没有挂载 intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);// sd卡被移除 intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);// sd卡作为 USB大容量存储被共享,挂载被解除 intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);// sd卡已经从sd卡插槽拔出,但是挂载点还没解除 intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);// 开始扫描 intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);// 扫描完成 intentFilter.addDataScheme("file"); registerReceiver(broadcastRec, intentFilter);// 注册监听函数 Log.i(TAG, "sd状态改变"); } private final BroadcastReceiver broadcastRec = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals("android.intent.action.MEDIA_MOUNTED"))// SD // 卡已经成功挂载 { imagepath = android.os.Environment.getExternalStorageDirectory();// 你的SD卡路径 Toast.makeText(MyService.this, "我的卡已经成功挂载", 0).show(); } else if (action.equals("android.intent.action.MEDIA_REMOVED")// 各种未挂载状态 || action.equals("android.intent.action.ACTION_MEDIA_UNMOUNTED") || action.equals("android.intent.action.ACTION_MEDIA_BAD_REMOVAL")) { imagepath = android.os.Environment.getDataDirectory();// 你的本地路径 Toast.makeText(MyService.this, "我的各种未挂载状态", 0).show(); }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_STARTED)){//开始扫描 Toast.makeText(MyService.this, "开始扫描...", 0).show(); }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)){//扫描完成 Toast.makeText(MyService.this, "扫描完成...", 0).show(); }else if (action.equals(Intent.ACTION_MEDIA_SHARED)){//扩展介质的挂载被解除 (unmount)。因为它已经作为 USB 大容量存储被共享 Toast.makeText(MyService.this, " USB 大容量存储被共享...", 0).show(); }else { Toast.makeText(MyService.this, "其他状态...", 0).show(); } Log.i(TAG, "imagepath---" + imagepath); } }; public void onDestroy() { unregisterReceiver(broadcastRec);//取消注册 }; }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.ls" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".Android_sdcActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 注册服务 --> <service android:name=".service.MyService"> <intent-filter> <action android:name="cn.ls.service.myservice.action" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </service> <!-- 在SDCard中创建与删除文件权限 --> </application> </manifest>
本文转自:http://blog.csdn.net/yigelangmandeshiren/article/details/8145059
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端