سؤال

I am using following code to refresh SDCard

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                Uri.parse("file://" + Environment.getExternalStorageDirectory())));

I think it is sending one broadcast to media xxxx receiver. I would like to update my view after completion of work by that receiver. How can i do that?

هل كانت مفيدة؟

المحلول

Register for MEDIA_SCANNER_FINISHED action in manifest

<receiver android:name=".MediaScannerFinishedReceiver">
   <intent-filter>
   <action android:name="android.intent.action.MEDIA_SCANNER_FINISHED"/>
   </intent-filter>
</receiver>

Then in your activity class listen for the same action

BroadcastReceiver mMediaScannerReceiver;
public void registerMediaScannerListener() {
            if (mMediaScannerReceiver == null) {
                    mMediaScannerReceiver = new BroadcastReceiver() {
                            @Override
                            public void onReceive(Context context, Intent intent) {
                                    String action = intent.getAction();
                                    if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)) {
                                            System.out.println("I'm here!");
                                    }
                            }
                    };
                    IntentFilter iFilter = new IntentFilter();
                    iFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
                    registerReceiver(mMediaScannerReceiver, iFilter);
            }
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top