zoukankan      html  css  js  c++  java
  • Android-sdcard广播的接收处理

    有时候Android手机在开机成功后的那几秒会在状态栏通知,Sdcard开始扫描,Sdcard扫描完成,等信息

    当Sdcard的状态发生改变后,系统会自动的发出广播

    Sdcard的状态:

           1.mount 挂载;

           2.unmount 卸载移除;

             3.start_scan 开始扫描;

             4.scan_finish 扫描完成;

    Sdcard是存储东西的,Sdcard通常是用Media挂钩,Android系统把它理解为:媒体数据


    在AndroidManifest.xml订阅广播

         <!--
                订阅(Xml形式订阅接收者)
                订阅Sdcard接收者,此接收者专门去接收Sdcard状态,发送改变的四种广播
             -->
            <receiver android:name=".br.SdcardBroadcastReceiver">
    
                <intent-filter>
    
                    <!-- 卸载移除Sdcard -->
                    <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
    
                    <!-- 挂载Sdcard -->
                    <action android:name="android.intent.action.MEDIA_MOUNTED" />
    
                    <!-- Sdcard开始扫描 -->
                    <action android:name="android.intent.action.MEDIA_SCANNER_STARTED" />
    
                    <!-- Sdcard扫描完成✅ -->
                    <action android:name="android.intent.action.MEDIA_SCANNER_FINISHED" />
                    
                    <!-- 系统是这样发送广播的,所以必须这样订阅 -->
                    <data android:scheme="false" />
    
                </intent-filter>
    
            </receiver>

    在SdcardBroadcastReceiver接收多个Sdcard状态改变的广播

    package liudeli.croadcast1.br;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    
    /**
     * Sdcard接收者,可以接收四个广播
     * 当Sdcard的状态发生改变后,系统会自动的发出以下四种广播
     *        
     *              1.mount 挂载;
     *
     *         2.unmount 卸载移除;
     *
     *          3.start_scan 开始扫描;
     *
     *          4.scan_finish 扫描完成;
     */
    public class SdcardBroadcastReceiver extends BroadcastReceiver {
    
        private final String TAG = SdcardBroadcastReceiver.class.getSimpleName();
    
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) {
                Log.d(TAG, "Sdcard挂载了...");
            } else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) {
                Log.d(TAG, "Sdcard卸载了 移除了...");
            } else if (Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action)) {
                Log.d(TAG, "Sdcard开始扫描...");
            } else if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action)) {
                Log.d(TAG, "Sdcard扫描完成✅...");
            }
        }
    }
  • 相关阅读:
    springboot配置文件priperties大全
    JWT全面解读、使用步骤
    springboot+jwt做api的token认证
    SpringSecurity-UsernamePasswordAuthenticationFilter的作用
    java中字符串太长,怎么自动换到下一行
    idea中mybatis generator自动生成代码配置 数据库是sqlserver
    Spring REST实践之HATEOAS
    在eclipse中查看sources源码和JavaDoc帮助文档
    在Eclipse中查看Javadoc文档
    【layui】laydate的年度类型设值,不能使用done方法时,翻页不设值
  • 原文地址:https://www.cnblogs.com/android-deli/p/10136212.html
Copyright © 2011-2022 走看看