1. 程式人生 > >Android-sdcard廣播的接收處理

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掃描完成✅...");
        }
    }
}