Android-sdcard廣播的接收處理
阿新 • • 發佈:2018-12-18
有時候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掃描完成✅..."); } } }