1 BroadcastReceiver mExternalStorageReceiver;
2 boolean mExternalStorageAvailable = false;
3 boolean mExternalStorageWriteable = false;
4
5 void updateExternalStorageState() {
6 String state = Environment.getExternalStorageState();
7 if (Environment.MEDIA_MOUNTED.equals(state)) {
8 mExternalStorageAvailable = mExternalStorageWriteable = true;
9 } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
10 mExternalStorageAvailable = true;
11 mExternalStorageWriteable = false;
12 } else {
13 mExternalStorageAvailable = mExternalStorageWriteable = false;
14 }
15 handleExternalStorageState(mExternalStorageAvailable,
16 mExternalStorageWriteable);
17 }
18
19 void startWatchingExternalStorage() {
20 mExternalStorageReceiver = new BroadcastReceiver() {
21 @Override
22 public void onReceive(Context context, Intent intent) {
23 Log.i("test", "Storage: " + intent.getData());
24 updateExternalStorageState();
25 }
26 };
27 IntentFilter filter = new IntentFilter();
28 filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
29 filter.addAction(Intent.ACTION_MEDIA_REMOVED);
30 registerReceiver(mExternalStorageReceiver, filter);
31 updateExternalStorageState();
32 }
33
34 void stopWatchingExternalStorage() {
35 unregisterReceiver(mExternalStorageReceiver);
36 }