Android監聽外部存儲設備的狀態(SD卡、U盤等等)

jopen 9年前發布 | 82K 次閱讀 Android Android開發 移動開發

最近在項目中需要對外部存儲設備的狀態進行監聽,所以整理了此筆記,以便日后查看。

外部存儲設備的狀態變化時發出的廣播

20141217235912078.png

對比不同狀態下的廣播

1. 插入外部SD卡時:

20141217232924815.png




2. 移除外部SD卡時:

20141217233041972.png





3. 連接PC進入USB大容量存儲模式時:

20141217233224574.png





4. 連接PC退出USB大容量存儲模式時:

20141217233318144.png




 

代碼實現監聽

    public void startListen()
{
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
intentFilter.setPriority(1000);
intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);
intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentFilter.addAction(Intent.ACTION_MEDIA_CHECKING);
intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
intentFilter.addAction(Intent.ACTION_MEDIA_NOFS);
intentFilter.addAction(Intent.ACTION_MEDIA_BUTTON);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intentFilter.addDataScheme("file");
registerReceiver(broadcastRec, intentFilter);
}

private final BroadcastReceiver broadcastRec = new BroadcastReceiver() {    
    @Override    
    public void onReceive(Context context, Intent intent) {    
        String action = intent.getAction();   
        Log.d("MediaAction", action);  
        if (action.equals("android.intent.action.MEDIA_MOUNTED"))  
        {    
            //todo  
        } else if (action.equals(Intent.ACTION_MEDIA_UNMOUNTED))   
        {    
            //todo  
        }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_STARTED)){  
        }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)){  
        }else if (action.equals(Intent.ACTION_MEDIA_SHARED)){  
        }else {   
        }    
    }    
};   </strong></pre><p></p>

來自:http://blog.csdn.net/giantgreen/article/details/41991291

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!