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

Android-监听sdcard状态的更多相关文章

  1. Android监听电池状态

    监听电池状态只需要接收Intent.ACTION_BATTERY_CHANGED的广播即可,当电池状态发生变化时会发出广播. 1.运行状态如下图: (1)连接USB时的状态 (2)断开USB时的状态 ...

  2. Android实时监听网络状态(2)

    在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityMana ...

  3. Android实时监听网络状态

    Android实时监听网络状态(1)   其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就 ...

  4. Android 监听 WiFi 开关状态

    Android 监听 WiFi 开关状态 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309 本文出自[赵彦军的博客] ...

  5. Android 监听电量的状态

    监控手机电量的变化和充电状态 在BatteryManager中有一个粘性广播,不需要BroadcastReceiver作为接收器,在注册时将传入null IntentFilter filter = n ...

  6. Android 监听锁屏、解锁、开屏 操作

    1.首先定义 ScreenListener  package com.app.lib; import android.content.BroadcastReceiver; import android ...

  7. (原创)用Receiver和SystemService监听网络状态,注册Receiver的两种方式

    android中网络编程不可避免地要监听网络状态,wifi或者3G以及以太网,并根据当前状态做出相应决策. 在MyReceiver类中的onReceive方法中获得系统服务 ConnectivityM ...

  8. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

  9. 【Android】Android 监听apk安装替换卸载广播

    [Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...

  10. Android 监听双卡信号强度(附完整代码)

    Android 监听双卡信号强度 监听单卡信号强度 监听单卡的信号强度非常简单直接用TelephonyManager.listen()去监听sim卡的信号强度. TelephonyManager = ...

随机推荐

  1. SpringMVC数据绑定全面示例(复杂对象,数组等)

    点击链接查询原文 http://www.xdemo.org/springmvc-data-bind/ 已经使用SpringMVC开发了几个项目,平时也有不少朋友问我数据怎么传输,怎么绑定之类的话题,今 ...

  2. Observer Pattern

    Motivation We can not talk about Object Oriented Programming without considering the state of the ob ...

  3. 为什么android的R类要定义成16进制

    联想到c语言中的宏定义:我想是一个原因 如: #define SDL_INIT_TIMER 0x00000001 #define SDL_INIT_AUDIO 0x00000010 #define S ...

  4. LINUX下如何查看tomcat运行状态,判断其是否启动

    1,查看Tomcat启动日志. ${catalina_home}\logs [root@iZ25b4ffkfaZ logs]# tail -f catalina.outSep 10, 2015 11: ...

  5. SQO2008配置管理工具服务显示远程过程调用失败

    前两天,装了VS2012后,打开SQL2008配置管理工具,发现SQL服务名称里什么也没有,只有一个提示:(如图) 卸载了一个叫"Microsoft SQL Server 2012Local ...

  6. iOS开发--_weak typeof(self) weakSelf = self

    _weak typeof(self) weakSelf = self;  (一)内存管理原则  1.默认strong,可选weak.strong下不管成员变量还是property,每次使用指针指向一个 ...

  7. Orcle数据库查询练习复习:三

    一.题目 1.与“张三”同乡的男生姓名 select * from student where snativeplace=(select snativeplace from student where ...

  8. [iOS]利用Appicon and Launchimage Maker生成并配置iOSApp的图标和启动页

    一.先来研究下这个软件->Appicon and Launchimage Maker 首先打开你电脑上的AppStore,然后搜索:AppIcon 然后回车: 这里我们先使用免费版的点击下载.( ...

  9. SQL查询(笔记2——实体查询)

    SQL查询(笔记2——实体查询) 二.实体查询 如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询.将查询结果转换成实体,可以使用SQLQuery提供 ...

  10. NC / Netcat - 反弹Shell

    原理 实验环境: 攻击机:windows机器,IP:192.168.12.109 受害机:linux机器,IP:192.168.79.1 攻击机:设置本地监听端口2222 C:\netcat>n ...