2012-03-20 4 views
4

J'ai eu un petit problème. Je suis rafraîchi ma carte SD en utilisant:Comment vérifier si sendBroadcast a terminé son travail

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

et j'ai créé ProgressDialog avec une fileuse qui ressorte au début (« au début » - je veux dire après la méthode sendBroadcast), et après actualisation réussie je voudrais pour le rejeter, mais je ne savais pas comment vérifier que MediaScanner a terminé son travail. J'ai essayé d'utiliser BroadcastReciver et sendStickyOrderedBroadcast(...), mais son semble qu'il a eu tort idée ...

Je ne peux pas utiliser MediaScannerConnection et OnScanCompletedListener() parce que je n'ai pas de chemins directs vers les fichiers (dans certaines situations, il n'existe pas). Est-ce que quelqu'un a une idée de comment résoudre mon problème? Je n'ai plus d'idées

Répondre

1

Lorsque vous envoyez une diffusion, vous ne pouvez pas vous attendre à un résultat. La seule façon d'en obtenir un est si le récepteur (dans ce cas le MediaScannerService qui attrape la diffusion ACTION_MEDIA_MOUNTED) envoie sa propre diffusion avec une mise à jour sur le "travail".

Vous devriez pouvoir saisir ACTION_MEDIA_SCANNER_FINISHED pour votre situation actuelle, mais si vous voulez plus de contrôle (c'est-à-dire pour balayer des fichiers spécifiques ou progresser), vous pouvez implémenter MediaScannerConnectionClient.

Questions connexes